.htaccess文件最后的“require”告诉服务器哪些用户可以进入 。require valid-user是指只要是.htpasswd中的任何一个都可以进入 。也可以指定名单上的某人或某几人可以通过,使用require user username或require user username1 username2 username3 。还可以指定某组人可以通过,使用require group groupname 。
3.增加新的许可用户
进入htdocs目录,在命令行状态输入以下命令生成.abcname1文件 。
echo > .abcname1/var/www/bin/htpasswd .abcname1 abc
abc表示要增加的用户名 。输入此命令后,系统会提示输入此用户密码,这样该用户名就生效了 。以后如要再增加用户,运行第二行的命令时换一个用户名即可 。如果这个用户名存在,则会提示修改密码 。
4.建立允许访问的组
组的设置方法是建立一个名为.htgroup的文本文件,内容如下:
groupname1: username1 username2 username3groupname2: username1 username3 username4
并在.htaccess中加上“AuthGroupFile /absolute/path/.htgroup” 。以ASCⅡ模式上传所有文件后,该目录中的所有文件都会被保护起来 。
设置错误文件
如果希望在找不到文件时不出现“找不到网页”的页面提示,而是打开另一个HTML文件,方法也很简单 。首先编写一个新的页面,然后用文本编辑器打开.htaccess,在文件最后加上:ErrorDocument 404 404.html 。这里,404.html是错误文件的名字,即所显示的页面;404是错误代码 。一般常见的错误代码和所代表的错误原因如下:
401 Authorization failed 授权失败,即密码错误 。403 Access denied 存取错误,即不可以读取该文件 。404 File not found 找不到文件 。500 Internal Server Error服务器内部错误,可能是Web服务器本身存在问题,也可能是编写的程序出错 。
禁止读取文件
如果将某些内容如密码,存放在一个文件中,那么别人只需知道该文件的对应位置,就可以一目了然,这样太不安全 。其实完全可以不改变其它设置,也不用将文件移到其它地方就可解决这个问题,只需在.htaccess文件中加入以下几行:
如果系统安装的是Apache 1.3以后的版本,更可以支持regular expression的filesmatch 。
files和filesmatch表示只对符合要求的部分文件生效 。“order deny,allow”表示先找出禁止(deny)的,然后去找许可的(allow) 。如果将它们的顺序颠倒“order allow,deny”则表示先找出许可的,后才去找禁止的 。“deny from all”则表示全部IP地址都不许可 。相对地,“allow from all”表示全部都允许 。可以这样设置:
order allow,denyallow from alldeny from 111.222
deny from 111.222是指禁止所有以111.222开始的IP地址(如111.222.0.1) 。除了设置IP地址外,也可以设置成hostname(如:***.com) 。“Files”和“Filesmatch”的用途很多,不但可以设置deny,也可以设置个别文件的密码,如:
使用.htaccess文件也会存在一些问题,比如性能 。如果使用.htaccess文件,则Apache需要在每个目录中查找该文件,还必须在所有更高级的目录中查找它,另外,每次请求一个页面时,也都需要读取.htaccess文件 。因此,允许使用.htaccess文件都会导致性能的下降 。
例如,对/usr/hq/htdocs中页面的请求,Apache必须查找以下文件:
/.htaccess/usr/.htaccess/usr/hq/.htaccess/usr/hq/htdocs/.htaccess
总的来说,通过.htaccess来保护网站更为方便和安全 。因为它不像利用程序实现密码保护时,有可能通过猜测的方法获取密码 。利用.htaccess文件实现密码保护,一般是很难破解的 。鉴于.htaccess方式的优缺点,读者可以根据具体的情况选择适合的方法来保证网站的安全 。(T111)
推荐阅读
- 如何在Linux下压缩文件
- 简析Linux中如何改变文件或目录的访问权限
- Redhat Linux升级SSH笔记
- DOS兄弟玩转Linux
- Linux技巧小总结
- Linux环境下使用XFS文件系统
- Linux下C开发环境的构成和安装
- linux下通过脚本实现自动重启程序
- 解析Linux特殊文件
- 如何在Linux中设置透明代理