Linux文件权限管理需遵循最小权限原则,通过ls -l解析权限位(文件类型、所有者、所属组、其他用户),用chmod符号模式精准赋权,chown明确归属,umask源头控制默认权限,并结合ACL等机制实现安全加固。

Linux 文件权限管理不是“设完就完”的操作,而是安全加固的关键环节。权限过宽是提权漏洞的温床,权限过严又影响服务运行。核心在于:按需赋权、最小必要、归属清晰、默认可控。
看懂权限位,才能改对权限
执行 ls -l filename 或 ls -ld dirname,输出首段如 -rwxr-xr-- 需拆解为四部分:
- 第1位:文件类型(- 普通文件、d 目录、l 软链接)
- 第2–4位:所有者(user)权限 —— 谁创建,谁默认拥有
- 第5–7位:所属组(group)权限 —— 组内成员共享访问能力
- 第8–10位:其他用户(other)权限 —— 全局可见范围,应最严格
注意:目录的 x 权限等价于“可进入”,没有它,即使有 r 也无法 cd 或访问其下文件;w 对目录意味着可增删改内部文件,不取决于文件自身权限。
chmod:精准控制读写执行
避免盲目用 777 或 666。推荐优先使用符号模式,语义明确、不易出错:
- chmod u=rw,g=r,o= file.conf —— 所有者读写、组只读、其他人无任何权限(配置文件典型设置)
- chmod g+w shared_dir/ —— 仅给组增加写权限,保留原有 r/x
- chmod a-x script.sh —— 移除所有人执行权限(禁用误执行)
- 递归修改加 -R,但慎用于系统目录;对网站根目录常用:chmod -R u=rwX,g=rX,o= /var/www/html(大写 X 只给目录和已有 x 的文件加执行)
chown:理清归属,阻断越权路径
所有权错误是 Webshell 权限维持或横向移动的常见入口。关键原则:服务进程用户 ≠ 文件所有者,但必须有对应组权限或明确授权。
- Web 服务文件建议:sudo chown -R www-data:www-data /var/www/html(Nginx/Apache 常用用户)
- 敏感配置如 /etc/shadow 必须为 root:root 且权限 600
- 普通用户不应拥有系统二进制或 /etc 下关键配置的所有权;若需协作,用组权限代替直接赋权
- 普通用户只能将文件所属组改为自己所属的组;只有 root 可任意切换所有者
umask:从源头收紧默认权限
新建文件/目录的权限由 umask 决定,它是“减法掩码”。默认 0022 导致文件为 644、目录为 755 —— 其他人可读,存在泄露风险。
- 生产环境建议设为 0027:文件 640(组可读)、目录 750(组可读执行),其他人彻底隔离
- 临时生效:umask 0027
- 永久生效:在 ~/.bashrc 或 /etc/profile 中添加 umask 0027,并执行 source ~/.bashrc
- 注意:umask 不影响已存在文件,只约束新创建资源
额外加固建议
标准三元权限(user/group/other)之外,还可叠加防护:
- 禁用 world-writable 目录:find /tmp -type d -perm -0002 -ls,及时清理或重设权限
- 检查 SUID/SGID 文件:find / -perm -4000 -o -perm -2000 -type f 2>/dev/null,非必要程序应清除 SUID 位
- 启用 ACL 实现细粒度授权(如单独授权审计员只读日志):setfacl -m u:auditor:r /var/log/app.log
- 定期审计:getfacl /path 查看实际生效权限,比 ls -l 更全面


















