首页 > Sysadmin > 正文

Linux 文件权限修改实战指南

huyuanwen 2026-11-02 Sysadmin

需修改文件权限时,chmod、chown、umask 和 ACL 四条命令覆盖从基础到细粒度的全场景。

权限速查:先看清再动手

Linux 每个文件都有三组权限位(owner、group、other)和三个特殊位(setuid、setgid、sticky)。查看权限最直接的是 stat [1]:

stat -c "%a %U:%G %n" filename
ls -l filename

stat -c "%a" 输出八进制数字模式,如 644;ls -l 输出 -rw-r--r--,第一位 - 表示普通文件,d 表示目录。

chmod:数字与符号模式

chmod 修改文件的 mode bits [2]。数字模式用三位八进制直接覆盖,符号模式增量修改。

chmod 755 script.sh
chmod u+x deploy.sh
chmod go-rwx secret.conf

数字模式直接覆盖,符号模式只改指定部分。递归修改目录用 -R,但先确认路径正确。

特殊权限位附加在数字最前:setuid(4)、setgid(2)、粘滞位(1)。

chmod 4755 /usr/bin/passwd   # setuid
chmod 2775 sharedir          # setgid
chmod 1777 /tmp             # sticky

setuid 让普通用户以文件 owner 身份执行,常用于密码程序;但允许普通用户修改带 setuid 的文件会带来安全风险,实际用时应严格限制路径。

误改时先记下原权限,或用 chmod 恢复默认。

chown:属主与属组修改

chown 修改文件的 owner 和 group [3]。格式 user:group,省略冒号则不改 group。

chown alice:developers project.conf
chown -R www-data:www-data /var/www

只有 root 能任意修改属主;普通用户只能改属于自己的文件。

umask:控制新建文件默认权限

umask 屏蔽位决定新文件/目录的默认权限 [4]。计算方式:默认值 & ~umask(文件默认 666,目录默认 777)。

umask 022    # 文件 644,目录 755
umask 077    # 文件 600,目录 700

umask 只影响当前 shell 及其子进程。持久化写在 ~/.profile 或 /etc/profile.d/ 里。

ACL:细粒度授权

三组权限不够用时,POSIX ACL 可为单个用户或组单独授权 [6] [5]。

setfacl -m u:bin:rwx deploy.log
setfacl -m g:ops:rx /var/www
getfacl deploy.log
  • 删除所有扩展 ACL:setfacl -b file
  • 备份 ACL:getfacl file > backup.acl,恢复:setfacl --set=backup.acl file

排错速查表

现象 原因 处理
chmod: 无权修改 当前用户不是 owner 且非 root 用 sudo 或切换 owner
chown: 无效用户 用户名不存在 先 useradd 再修改
ACL 不生效 文件系统未挂载 ACL 检查 mount 选项中 acl
umask 不生效 修改的是当前 shell,非全局 写入 profile 持久化
setuid 被忽略 内核或发行版安全策略限制 查看 /proc/sys/fs/suid_dumpable

局限性

  • WSL2 和容器中某些权限行为与物理机有差异,如 setuid 在某些文件系统上被忽略
  • ACL 需要文件系统支持,部分网络文件系统(如 NFS v3)默认不启用
  • 本文实测环境:WSL2 Ubuntu 24.04.4 LTS,内核 6.6.114.1-microsoft-standard-WSL2,测试日期 2026-11-02

附录

  • chmod 755/644/u+x/go-rwx 均符合预期
  • chown root:root 和 chown -R bin:bin 递归生效
  • umask 022 → 文件 644、目录 755;umask 077 → 文件 600、目录 700
  • setfacl -m u:bin:rw 后 su -s /bin/bash bin -c "echo test > file1" 成功写入
  • chmod 4755/2755/1777 数字模式正确设置特殊位

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。