一、目录权限设置的核心原则
合理的目录权限应遵循最小权限原则(PoLP):
- 用户隔离:Web服务账户(如www-data、nginx)应独立于系统管理员账户
- 读写分离:可写目录与只读目录严格区分
- 执行限制:非必要不赋予执行权限(尤其上传目录)
二、Linux系统推荐方案
1. 基础权限结构
典型LAMP环境目录结构
chown -R root:www-data /var/www/
find /var/www/ -type d -exec chmod 750 {} ;
find /var/www/ -type f -exec chmod 640 {} ;
2. 特殊目录处理
- 上传目录:
chown -R www-data:www-data /var/www/uploads chmod -R 770 /var/www/uploads
- 配置文件:
chmod 600 /var/www/config/database.php
三、Windows系统配置要点
1. IIS环境配置
- 为应用程序池分配专用账户
- 设置NTFS权限时禁用继承并明确指定:
icacls C:inetpubwwwroot /grant "IIS_IUSRS:(OI)(CI)(RX)"
四、高级安全加固措施
- PHP防护:禁用危险函数(如exec、system)
- 目录限制:通过open_basedir限制PHP访问范围
- 日志监控:实时监控敏感目录的权限变更
五、自动化管理方案
推荐使用配置管理工具实现权限标准化:
Ansible示例
- name: Set web directory permissions
file:
path: "/var/www/{{ item.path }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
mode: "{{ item.mode }}"
loop:
- { path: '', owner: 'root', group: 'www-data', mode: '0750' }
- { path: 'uploads', owner: 'www-data', group: 'www-data', mode: '0770' }
评论