权限访问站点下所有文件"/>
嗯?apache这样配置就可以有权限访问站点下所有文件
修改Options 为All(主要是Index)即可返回目录文件
在整完apache和tomcat的之后我觉得有必要把和它下面的属性捋顺一下
如何访问根目录下的目录http://192.168.1.12/test/
第一. 缺省apache不允许访问http目录(没有定义,就没有访
问权限)
访问目录http://192.168.1.12/test/
会显示:
Forbidden
You don't have permission to access /test/ on this server.
第二. 无限制目录访问
在httpd.conf中增加定义,即可打开无限制的目录访问权限
<Directory /home/macg/www/test>Options AllAllowOverride all
</Directory>
再访问会显示如下:
Apache/2.0.54 (Fedora) Server at 192.168.1.12 Port 80Index of /testName Last modified Size Description------------------------------------------------------------Parent Directory - bg0073.jpg 29-Nov-2006 21:02 36K bg0135.jpg 29-Nov-2006 21:03 41K bg0137.jpg 29-Nov-2006 21:03 47K slade1.html 29-Nov-2006 22:02 1.2K slade2.html 29-Nov-2006 22:02 1.1K slade3.html 29-Nov-2006 22:02 1.4K slade4.html 29-Nov-2006 22:02 1.8K slade5.html 29-Nov-2006 22:02 2.3K
-------------------------------------------------------------
Apache/2.0.54 (Fedora) Server at 192.168.1.12 Port 80 实际AllowOverride
all是enable .htaccess目录限制功能。
但test目录下并没有.htaccess文件
等于开放访问,无限制。
第三. 有限制目录访问
将其他目录中的.htaccess拷贝入要限制访问的目录
[root@localhost test]# ls -a
. .. bg0073.jpg bg0135.jpg bg0137.jpg slade1.html
slade2.html slade3.html slade4.html slade5.html[root@localhost test]# cp ../test1/.htaccess .[root@localhost test]# ls -a
. .. bg0073.jpg bg0135.jpg bg0137.jpg .htaccess
slade1.html slade2.html slade3.html slade4.html
slade5.html[root@localhost test]# more .htaccess
authType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/passwords
Require valid-user
再访问http://192.168.1.12/test/
会跳出身份认证窗口,输入用户名密码,即可访问目录
.htaccess 目录限制的配置
要使用.htaccess文件,先在将httpd.conf中建立<Directory ></Directory>
<Directory "/home/macg/www/test"> Options All
允许对目录的操作,ALL---所有操作AllowOverride all
AllowOverride all----允许.htaccess所有指令,缺省是all
AllowOverride None ----完全忽略.htaccess文件</Directory>
用/usr/bin/htpasswd创建一个用于认证的密码文件。
并且这个文件不应该置于DocumentRoot目录下,以避免被下载。
建议创建在/etc/httpd/目录下:
[root@localhost httpd]# /usr/bin/htpasswd -c
/etc/httpd/passwords macg-c建立文件
New password:
Re-type new password:
Adding password for user macg
[root@localhost httpd]# /usr/bin/htpasswd
/etc/httpd/passwords gary 没有-c就是单纯的adduser 追加用户
New password:
Re-type new password:
Adding password for user gary
[root@localhost httpd]# more /etc/httpd/passwords
macg:U8jCwSsZyAB2g
gary:06yCDyg7AijlM
在受限制目录下建立.htaccess文件
[root@localhost test]# ls -a
. .. bg0073.jpg bg0135.jpg bg0137.jpg .htaccess
slade1.html slade2.html slade3.html slade4.html
slade5.html[root@localhost test]# more .htaccess
authType Basic
authType--------认证类型由mod_auth_basic提供的Basic
Basic认证方法并不加密来自用户浏览器的密码(明文传输) 更安全的认证方法"AuthType Digest",即由mod_auth_digest供的摘要认证
最新的浏览器版本才支持MD5认证
(认证,服务器响应速度会受一些影响,一般有几百个用户就会对响应速度有非常明显的影响)
AuthName "Restricted Files"
AuthName "会员区"
此句是显示给用户看的
AuthUserFile /etc/httpd/passwords
此目录接受passwords内定义用户的认证请求
or
Require macg
此目录只接受单一用户macg(unix用户)认证请求
<Directory ></Directory>中指令的含义
<Directory "/home/macg/www/test"> Options All AllowOverride all
</Directory>Options指令-------目录的访问特性
option none 禁止对目录的所有操作
option all 允许对目录的所有操作,ALL---所有操作
option ExecCGI 对该目录,可以执行cgi脚本
option Indexes 允许访问该目录(而该目录没有index.html)时,返回目录下的文件列表
option FollowSymLinks 只允许对目录的FollowSymLinks操作AllowOverride指令
None 不读取.htaccess
all all----允许.htaccess所有指令,缺省是all
Limit .htaccess函盖具体限定的主机(allow,deny)
AuthConfig .htaccess函盖跟认证有关指令(AuthType,AuthName)
<Directory ></Directory> 对下面的所有子目录也生效
所以httpd.conf中先对根目录/进行配置,等于是设置缺省配置
httpd.conf中先对根目录/进行配置,等于是设置缺省配置
<Directory /> Options FollowSymLinks 禁止对目录的访问(option只允许对目录的FollowSymLinks操作)AllowOverride None 不读取.htaccessOrder deny,allow deny allDeny from all </Directory><Directory "/usr/local/apache2/htdocs">Options Indexes FollowSymLinks 只允许访问index和连接 AllowOverride NoneOrder allow,deny 承接父目录(/)的deny all,这里也是deny allAllow from all </Directory>
order allow deny ————-httpd.conf中封IP之类的操作
Apache模块 mod_authz_host
<Directory /docroot>
Order Deny,Allow
Deny from ...
Allow from ...
</Directory>
注意顺序:
除了后面allow的,其他都deny
典型的封IP
Order Allow,Deny
Allow from all
Deny from 205.252.46.165
注意顺序:
除了后面deny的,其他都allow
Deny from 192.168.2 典型的封网段
上面清楚了 可以设置一个例子
Apache对于多虚拟主机以及多虚拟路径的配置
ServerName localhost
<Directory />AllowOverride noneRequire all denied
</Directory>
DocumentRoot "/home/work/"
保证所有的项目都放在/home/work/目录, 该目录只做配置
<Directory "/home/work/">Options NoneAllowOverride NoneRequire all denied
</Directory>
httpd-vhosts.conf 首先第一件事就是指定默认的DocumentRoot
没有商量, 必须放在httpd.conf中申明的根路径
不需要severName配置
<VirtualHost 127.0.0.1:8800>DocumentRoot "/home/work/www/htdocs"<Directory /home/work/www/htdocs>AllowOverride noneRequire all granted</Directory>
</VirtualHost>
如果不需要多主机支持,到此为止
添加虚拟主机,虚拟目录等等
说明: local.baidu 为第一个主机名, 如果多个域名映射设置ServerAlias即可
Alias 注意“/”的位置
```clike
<VirtualHost local.baidu:8800>DocumentRoot "/home/work/workspace"ServerName local.baidu# ServerAlias local.baidu local.baidu<Directory /home/work/workspace>Options FollowSymLinksAllowOverride noneRequire all granted </Directory>Alias /phpMyAdmin "/home/work/www/htdocs/phpMyAdmin/"# 添加一个日志分析, rotatelogs需要自己安装LogFormat "{method:\"%m\",state:\"%s\",protocol:\"%H\",url:\"%U\",time:\"%{%Y-%m-%d %T}t\",ua:\"%{User-Agent}i\",query:\"%q\",refer:\"%{Referer}i\",server:\"%V\"}" seo CustomLog "|/usr/sbin/rotatelogs logs/seo_%Y%m%d.log 86400 480" seo
</VirtualHost>
## 同上其他主机配置
当然对于该目录下个各种配置属性 不过下面这个是2.2的属性 在2.4中进行了少许的变更 所以2.4还是要查询文档 不过有下面的解释打底应该很容易Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合
Directory, Location, Files等),用来控制目录和文件的访问授权。
所以,最常用的是:
Order Deny,Allow
Allow from All注意“Deny,Allow”中间只有一个逗号,也只能有一个逗号,有空格都会出
错;单词的大小写不限。上面设定的含义是先设定“先检查禁止设定,没有
禁止的全部允许”,而第二句没有Deny,也就是没有禁止访问的设定,直
接就是允许所有访问了。这个主要是用来确保或者覆盖上级目录的设置,开
放所有内容的访问权。按照上面的解释,下面的设定是无条件禁止访问:Order Allow,Deny
Deny from All
如果要禁止部分内容的访问,其他的全部开放:Order Deny,Allow
Deny from ip1 ip2
或者
Order Allow,Deny
Allow from all
Deny from ip1 ip2
apache会按照order决定最后使用哪一条规则,比如上面的第二种方式,虽
然第二句allow允许了访问,但由于在order中allow不是最后规则,因此还
需要看有没有deny规则,于是到了第三句,符合ip1和ip2的访问就被禁止
了。注意,order决定的“最后”规则非常重要,下面是两个错误的例子和
改正方式:Order Deny,Allow
Allow from all
Deny from domain
错误:想禁止来自domain的访问,但是deny不是最后规则,apache在
处理到第二句allow的时候就已经匹配成功,根本就不会去看第三句。
解决方法:Order Allow,Deny,后面两句不动,即可。Order Allow,Deny
Allow from ip1
Deny from all
错误:想只允许来自ip1的访问,但是,虽然第二句中设定了allow规则,由
于order中deny在后,所以会以第三句deny为准,而第三句的范围中又明显
包含了ip1(all include ip1),所以所有的访问都被禁止了。
解决方法一:直接去掉第三句。
解决方法二:Order Deny,Allow
Deny from all
Allow from ip1
下面是测试过的例子:--------------------------------
Order deny,allow
allow from all
deny from 219.204.253.8
全部都可以通行-------------------------------
Order deny,allow
deny from 219.204.253.8
allow from all
全部都可以通行-------------------------------
Order allow,deny
deny from 219.204.253.8
allow from all
只有219.204.253.8不能通行-------------------------------
Order allow,deny
allow from all
deny from 219.204.253.8
只有219.204.253.8不能通行--------------------------------------------------------------
Order allow,deny
deny from all
allow from 219.204.253.8
全部都不能通行 -------------------------------
Order allow,deny
allow from 219.204.253.8
deny from all
全部都不能通行 -------------------------------
Order deny,allow
allow from 219.204.253.8
deny from all
只允许219.204.253.8通行 -------------------------------
Order deny,allow
deny from all
allow from 219.204.253.8
只允许219.204.253.8通行 ---------------------------------------------------------------
Order deny,allow
全部都可以通行(默认的)-------------------------------
Order allow,deny
全部都不能通行(默认的)-------------------------------
Order allow,deny
deny from all
全部都不能通行-------------------------------
Order deny,allow
deny from all
全部都不能通行-------------------------------对于上面两种情况,如果换成allow from all,则全部都可以通行!-------------------------------
Order deny,allow
deny from 219.204.253.8
只有219.204.253.8不能通行-------------------------------
Order allow,deny
deny from 219.204.253.8
全部都不能通行-------------------------------
Order allow,deny
allow from 219.204.253.8
只允许219.204.253.8通行-------------------------------
Order deny,allow
allow from 219.204.253.8
全部都可以通行--------------------------------------------------------------
order deny,allow
allow from 218.20.253.2
deny from 218.20
代表拒绝218.20开头的IP,但允许218.20.253.2通过;而其它非218.20开头的IP也都允许通过。-------------------------------
order allow,deny
allow from 218.20.253.2
deny from 218.20和上面的差不多,只是掉换的order语句中的allow、deny先后顺序,但最
终结果表示全部都拒绝!
更多推荐
嗯?apache这样配置就可以有权限访问站点下所有文件
发布评论