[转]apache 设置目录访问权限(Linux文件权限)
个人学习笔记,部分资料来自网络,有些找不到出处,如有侵权立马删除。
Linux下Web目录和文件安全权限设置
在Linux下,web目录和文件权限必须从整体上考虑系统的安全。一般情况下,对目录,需要设置 r(读取)和x(执行)权限,有的目录同时还需要w(写入权限)
;对文件,需要r(读取),有的文件需要w(写入)权限或x(执行)权限。
在Linux系统中,使用命令umask设置创建文件或目录的默认rwx权限,系统默认的umask设置是022,这个权限的计算相当于文件、目录权限的掩码,例如此时
创建的目录权限755 (rwxr-xr-x),那么其umask权限相当于相对777的掩码022;而此时创建的文件权限为644 (rw-r–r–),其umask权限相当于相对666的掩
码022。
当然,这样的权限设置很不安全,同一台server上的不同用户(可能相同也可能不同用户组)/虚拟主机用户能够互相窥探到对方的源码,umask值必须修改的
比较严格,以使得除root权限之外,不能随意互相窥探其他人的源码、数据库资料等。
设置方法是:去掉同用户组和其他用户组的r(读取)权限,具体做法是设置目录权限为500(读取+执行)同时文件权限为400(读取),此时umask应设置为277,
设置目录权限为700(读取+写入+执行)同时文件权限为500(读取+执行),此时umask应设置为177。
例如对于后者,我们可以使用命令 umask 177设置当前对话下的默认目录、文件创建权限,如果要永久设置,就要修改/root/.bash_profile以及所有用户
home的录下的.bash_profile文件,将其中的 umask 022改为 umask 177。
从以上可以看出,如果要设置较为安全的目录、文件权限,几个基本原则就是:
1、尽可能减少web路径下可写入目录的数量。
2、文件的写入和执行权限只能选择其一,避免同时出现写入和执行权限。
-------------------------
可以通过修改Apache配置文件httpd.conf来实现禁止列出目录/文件列表,方法如下
【apache配置禁止访问】
1. 禁止访问某些文件/目录
增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:
Order allow,deny
Deny from all
禁止访问某些指定的目录:(可以用 来进行正则匹配)
Order allow,deny
Deny from all
通过文件匹配来进行禁止,比如禁止所有针对图片的访问:
Order allow,deny
Deny from all
针对URL相对路径的禁止访问:
Order allow,deny
Deny from all
针对代理方式禁止对某些目标的访问( 可以用来正则匹配),比如拒绝通过代理访问cnn.com:
Order allow,deny
Deny from all
2. 禁止某些IP访问/只允许某些IP访问
如果要控制禁止某些非法IP访问,在Directory选项控制:
Order allow,deny
Allow from all
Deny from 10.0.0.1 #阻止一个IP
Deny from 192.168.0.0/24 #阻止一个IP段
只允许某些IP访问,适合比如就允许内部或者合作公司访问:
Order deny,allow
Deny from all
All from example.com #允许某个域名
All from 10.0.0.1 #允许一个iP
All from 10.0.0.1 10.0.0.2 #允许多个iP
Allow from 10.1.0.0/255.255.0.0 #允许一个IP段,掩码对
All from 10.0.1 192.168 #允许一个IP段,后面不填写
All from 192.168.0.0/24 #允许一个IP段,网络号
Apache:解决办法;
Options -Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Deny from all
----------------------
在apache中设置禁止在浏览器中访问.svn版本库目录中的文件
http://blog.csdn.net/qidizi/article/details/8732362
一般来说,不需要有区别处理.所以直接在全局配置文件上做对.svn目录访问做限制即可
在apache的配置文件中任何一处输入
#deny access .svn by web site;and Redirect to home -- qidizi
Redirect 303 / http://www.qidizi.net/#
# Deny From All
redirect
加#号会自动转成 /#.svn/dkkd?q=.svn/dkkdff
加?error=会变成 /?error=.svn/dkkd
如果什么都不加会出现问题
然后保存重启apache即可
然后测试访问
就会收到以下提示
Forbidden
You don't have permission to access /.svn/entrieson this server.
Apache/2.2.14 (Ubuntu) Server at www.chinahrd.net Port 80
---------------------
对于某些文件的保护,可以认为只给Apache权限不给用户(浏览器)权限即可么???