生产环境目录访问控制须遵循最小权限原则:精准识别角色职责,为服务创建专用用户与组并设置对应所有权和权限(如750/640),禁用非必要执行位与路径遍历,定期审计权限漂移。

生产环境目录的访问控制必须严格遵循最小权限原则:每个用户、服务或进程只应拥有完成其任务所必需的最低限度权限,不能多也不能少。过度授权是安全事件的常见根源,而权限不足又会影响系统正常运行。关键在于精准识别角色职责,再逐层收敛权限。
明确角色与职责边界
在配置前,先梳理清楚谁需要访问哪些目录、以什么方式(读/写/执行)、用于什么目的。例如:
- Web服务器进程(如www-data)只需读取静态资源目录、写入日志和上传临时目录,不应有执行权或访问配置文件的权限
- 部署用户(如deploy)需对应用代码目录有读写权,但不应能修改系统配置或数据库凭证文件
- 数据库服务账户仅能访问其数据目录和socket文件,禁止遍历上层路径
使用专用用户与组隔离权限
避免使用root或通用账户(如nobody)运行服务。为每类服务创建独立系统用户和组,并将目录所有权设为对应用户:组:
- 应用代码目录:chown -R appuser:appgroup /var/www/myapp;chmod 750 /var/www/myapp(目录可执行+读,文件默认640)
- 日志目录:chown appuser:adm /var/log/myapp;chmod 755 /var/log/myapp(允许adm组轮转日志)
- 敏感配置目录:chown root:appconfig /etc/myapp;chmod 750 /etc/myapp;配置文件单独设为640
限制执行与遍历能力
多数服务无需执行代码或向上级目录跳转。可通过以下方式加固:
- 禁用非必要目录的执行位(chmod -x),特别是日志、上传、缓存等目录
- 在Web服务器中配置open_basedir(PHP)或chroot(Nginx with jail)限制脚本可访问路径
- 对挂载点或容器卷使用noexec,nosuid,nodev选项(如/etc/fstab中添加)
定期审计与自动化校验
权限会随部署、更新、人工操作而漂移。建议建立轻量级检查机制:
- 用find命令定期扫描高危模式:find /var/www -type d -perm -002(查找全局可写目录)
- 编写简单脚本比对预设权限清单(如Ansible playbook中的file模块声明值)
- 将关键目录权限纳入CI/CD流水线的部署后检查步骤,不达标则中断发布

















