在 Linux 的世界里,权限就是秩序的基础。一个系统的安全性、文件访问策略、用户协作边界,无一不依赖于文件和目录权限的精细控制。而 chmod(Change Mode)命令,正是你手中调整权限的利剑。
这篇文章将从最基础的权限概念讲起,深入剖析 chmod 的使用方式,包括数字表示法、符号表示法、权限继承、批量修改、常见问题,以及实际运维案例,力求让你对权限操作了然于心、运用自如。

一、Linux 权限基础:三种角色 + 三类权限
每个文件和目录在 Linux 中都绑定有以下三种用户角色:
owner:文件所有者,通常是创建文件的用户。
group:所属用户组。
others:系统中其他用户。
每种角色又对应三类基本权限:
可以通过 ls -l 查看:
$ ls -l example.sh
-rwxr-xr-- 1 user group 1234 May 29 10:00 example.sh
第一列解释如下:
- rwx r-x r-- │ │ │ └── 其他人权限(others):读取│ │ └───── 用户组权限(group):读取 + 执行│ └──────── 文件所有者权限(owner):读取 + 写入 + 执行└────────── 文件类型(- 为普通文件,d 为目录)二、数字 VS 符号:chmod 的两种用法
1. 数字表示法(最常用)
每个权限对应一个值:
r = 4
w = 2
x = 1
组合后求和:
使用示例:
chmod 755 script.sh
解释:
7 → 所有者 rwx
5 → 用户组 r-x
5 → 其他人 r-x
目录建议权限:
普通文件:644(rw-r--r--)
可执行文件:755(rwxr-xr-x)
目录:755 或 700(rwxr-xr-x / rwx------)
2. 符号表示法(更灵活)
语法格式:
chmod [角色][操作][权限] 文件名
角色:u(用户)、g(组)、o(其他人)、a(全部)
操作:+(添加)、-(删除)、=(赋值)
权限:r、w、x
示例:
chmod u+x hello.sh # 给所有者添加执行权限
chmod go-w data.txt # 去掉组和其他人的写权限
chmod a=r file.log # 所有角色仅有读权限
三、应用场景实战
1. 只允许所有者访问的私密文件夹
mkdir secrets
chmod 700 secrets
此时其他用户无法 cd 进入该目录。
2. 给脚本文件添加执行权限
chmod +x deploy.sh
相当于 chmod ugo+x deploy.sh,适用于快速授权。
3. 去掉敏感配置的组写权限
chmod g-w /etc/ssh/sshd_config
避免配置文件被意外修改。
4. 批量修改多个文件权限
chmod 644 *.conf
chmod +x *.sh
配合 find 更强大:
find . -type f -name "*.sh" -exec chmod +x {} \;
四、特殊权限:s、t 和 SGID
除了基本权限外,还有三种特殊模式:
示例:
chmod u+s /usr/bin/somebinary # 设置 setuid
chmod g+s /data/shared # 设置 setgid
chmod +t /tmp # 设置 sticky bit
配合 ls -l 可以看到特殊位:
drwxrwsr-x 2 dev team 4096 May 29 12:00 /data/shared
五、深入理解目录权限组合的行为
示例说明:
r-x:能进入目录并列出内容,但无法创建文件。--x:只能进入目录,但不知道目录内有什么(除非你知道具体文件名)。
快速对照表
权限陷阱与排错技巧
1. 有执行权限但运行时报“权限被拒绝”?
可能的原因:
缺少“x”权限的目录。
文件系统挂载为
noexec。文件属于 root,当前用户无权运行。
2. 目录权限设置正确但文件无法创建?
检查是否有 w 权限和 x 权限:
chmod u+wx /path/to/dir
3. 使用 chmod 无效?
文件可能是符号链接,建议使用 -h 参数:
chmod -h 644 symlink
权限即责任,掌握 chmod 是每个 Linux 用户的必修课
在 Linux 中,每一次权限的修改都意味着一次对资源访问策略的定义。chmod 不仅是文件安全的基础工具,更是运维、开发、安全团队日常工作的关键部分。
掌握 chmod,你就拥有了管理整个系统权限秩序的钥匙。
评论区