Linux的chmod命令
基本概念
chmod(change mode)是Linux/Unix系统中用于更改文件或目录权限的重要命令。权限控制是Linux系统安全性的核心机制之一,通过设置不同的访问权限可以精确控制用户对文件的操作能力。
权限表示方式
Linux系统中有三种基本的权限类型:
- 读权限(r):允许读取文件内容或列出目录内容
- 写权限(w):允许修改文件内容或在目录中创建/删除文件
- 执行权限(x):允许执行文件或进入目录
这些权限可以分配给三类用户:
- 文件所有者(user)
- 所属组用户(group)
- 其他用户(other)
权限的两种表示方法
1. 符号模式(字母表示法)
格式:chmod [who][operator][permission] 文件名
who部分:
- u: 文件所有者
- g: 所属组用户
- o: 其他用户
- a: 所有用户(相当于ugo)
operator部分:
- +: 添加权限
- -: 移除权限
- =: 设置精确权限
permission部分:
- r: 读
- w: 写
- x: 执行
示例:
1chmod u+x file.txt # 给所有者添加执行权限 2chmod g-w file.txt # 移除所属组的写权限 3chmod o=rw file.txt # 设置其他用户的读写权限 4chmod a+r file.txt # 给所有用户添加读权限
2. 数字模式(八进制表示法)
用3位八进制数表示权限,每位数字对应一类用户(所有者、组、其他)的权限组合:
- 4: 读(r)
- 2: 写(w)
- 1: 执行(x)
将所需权限对应的数字相加得到每类用户的权限值。
常见权限组合:
- 7 (4+2+1): rwx
- 6 (4+2): rw-
- 5 (4+1): r-x
- 4 (4): r--
- 0 (0): ---
示例:
1chmod 755 file.txt # 所有者rwx,组和其他r-x 2chmod 644 file.txt # 所有者rw-,组和其他r-- 3chmod 600 file.txt # 所有者rw-,组和其他---
特殊权限
除了基本权限外,Linux还支持三种特殊权限位:
- SUID(Set User ID):用数字4表示,设置在可执行文件上,执行时以文件所有者权限运行
- SGID(Set Group ID):用数字2表示,设置在可执行文件上,执行时以文件所属组权限运行
- Sticky Bit:用数字1表示,设置在目录上,限制删除权限(只有文件所有者才能删除)
这些特殊权限可以添加到数字模式的最前面:
1chmod 4755 file # 设置SUID,权限为755 2chmod 2755 file # 设置SGID,权限为755 3chmod 1755 directory # 设置Sticky Bit,权限为755
常用选项
-R或--recursive:递归修改目录及其内容权限-v或--verbose:显示详细的修改信息--reference=RFILE:参考指定文件的权限设置
示例:
1chmod -R 755 /path/to/directory # 递归设置目录权限 2chmod --reference=file1 file2 # 使file2权限与file1相同
实际应用场景
- 保护敏感文件:
chmod 600 ~/.ssh/id_rsa限制只有所有者能读写 - 共享目录:
chmod 1777 /shared/tmp创建所有人都可读写但只能删除自己文件的临时目录 - 可执行脚本:
chmod +x script.sh使脚本可执行 - Web服务器文件:通常设置为
chmod 644(文件)和chmod 755(目录)
注意事项
通过合理使用chmod命令,可以精确控制Linux系统中文件和目录的访问权限,保障系统安全和数据隐私。