在类 Unix 系统里,每个文件或目录都带有 权限位,决定拥有者、同组用户与其他用户能读、写还是执行。 另有特殊位(setuid、setgid、sticky)与ACL扩展——入门阶段先把 rwx 与归属搞清楚。
入门:三段 rwx 怎么看
ls -l 的首列形如 -rwxr-xr-x:首位是文件类型,其后三组各三位,分别是拥有者 / 组 / 其它的 r、w、x。
对目录而言,x 往往意味着「可进入」而非「可执行二进制」。
入门:chmod 两种写法
- 八进制数字:如
chmod 644 file,快但需心算对应关系。 - 符号法:如
chmod u+x script.sh,可读性强。
深入:umask
umask 决定新建文件默认屏蔽哪些位;交互 shell、守护进程、FTP/SFTP 上传可能各自不同,
遇到「为什么新建文件权限不对」先查 umask 与父目录 setgid(若用于共享组协作)。
深入:特权与 sudo
修改系统文件、监听 <1024 端口常需要 root 或 capability。
日常应使用 sudo 审计命令而非长期 root 登录;具体策略由 /etc/sudoers 管理。
常见踩坑
- 在目录上没有 x,即使有 r 也无法
cd进入列出内容的路径深处。 - 容器内看到的「用户 id」可能与宿主机映射不一致,卷挂载权限容易错乱。
ACL、SELinux、AppArmor 等强制访问控制可能覆盖传统 unix 权限直觉;排障时若「权限看起来对但仍拒绝」,要往这一层想。
与其它主题的衔接
进程与线程(进程 uid)、
Docker(卷权限)、
SSH(authorized_keys 权限)、
Git(hooks、CI 工作目录权限)。