在 Linux 的世界里,权限就是秩序的基础。一个系统的安全性、文件访问策略、用户协作边界,无一不依赖于文件和目录权限的精细控制。而 chmod(Change Mode)命令,正是你手中调整权限的利剑。
这篇文章将从最基础的权限概念讲起,深入剖析 chmod 的使用方式,包括数字表明法、符号表明法、权限继承、批量修改、常见问题,以及实际运维案例,力求让你对权限操作了然于心、运用自如。
一、Linux 权限基础:三种角色 + 三类权限
每个文件和目录在 Linux 中都绑定有以下三种用户角色:
- owner:文件所有者,一般是创建文件的用户。
- group:所属用户组。
- others:系统中其他用户。
每种角色又对应三类基本权限:
权限 |
符号 |
含义 |
读取 |
r |
查看文件内容,列出目录内容 |
写入 |
w |
修改文件内容,创建/删除目录内文件 |
执行 |
x |
执行文件(如脚本),进入目录 |
可以通过 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
组合后求和:
权限组合 |
数字表明 |
rwx |
7 |
rw- |
6 |
r-x |
5 |
r– |
4 |
— |
0 |
使用示例:
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
除了基本权限外,还有三种特殊模式:
权限位 |
名称 |
作用与应用 |
s(Setuid) |
让执行程序以文件所有者身份运行 |
应用于如 passwd 命令 |
s(Setgid) |
目录中创建的文件继承该组 |
团队协作常用 |
t(Sticky Bit) |
只允许文件拥有者删除 |
应用于 /tmp |
示例:
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 |
能否列出目录中的文件(如 ls) |
w |
能否在该目录中创建/删除/重命名文件 |
x |
能否 cd 进入该目录、访问其中内容 |
示例说明:
- r-x:能进入目录并列出内容,但无法创建文件。
- –x:只能进入目录,但不知道目录内有什么(除非你知道具体文件名)。
快速对照表
chmod 值 |
含义 |
应用场景 |
777 |
所有人可读写执行 |
开发测试环境(不推荐生产使用) |
755 |
所有者全权限,其它只读执行 |
公共脚本或服务程序 |
700 |
所有者独享 |
私人脚本、文件夹 |
644 |
所有者可读写,其它只读 |
配置文件、文档 |
600 |
所有者只读写,其它无权限 |
私密密钥文件(如 .ssh/id_rsa) |
权限陷阱与排错技巧
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,你就拥有了管理整个系统权限秩序的钥匙。
暂无评论内容