Linux 的 chmod 命令
chmod(change mode) 是 Linux/Unix 系统中用于修改文件或目录权限的重要命令。通过该命令,用户可以控制文件对不同用户的访问权限,确保系统安全和数据保护。
权限基础
Linux 系统中,每个文件或目录都有三类用户权限:
所有者(owner)
- 文件的创建者或当前所有者
所属组(group)
- 文件所属的用户组
其他用户(others)
- 系统上的其他所有用户
每种权限类型包含三种基本权限:
读(r)
- 读取文件内容或列出目录内容
写(w)
- 修改文件或目录内容
执行(x)
- 执行文件或进入目录
两种表示方法
1. 数字表示法(八进制表示法)
用 3 位八进制数表示权限,每位分别对应所有者、所属组和其他用户的权限:
4 = 读(r)
2 = 写(w)
1 = 执行(x)
0 = 无权限
权限组合通过相加得到:
7 (4+2+1) = 读、写、执行(rwx)
6 (4+2) = 读、写(rw-)
5 (4+1) = 读、执行(r-x)
4 = 只读(r--)
3 (2+1) = 写、执行(-wx)
2 = 只写(-w-)
1 = 只执行(--x)
常用权限示例:
755:所有者有全部权限,组和其他用户有读执行权限
644:所有者有读写权限,组和其他用户只有读权限
600:只有所有者有读写权限
2. 符号表示法
使用字母和符号组合表示权限变化:
用户类别:
u = 所有者
g = 所属组
o = 其他用户
a = 所有用户(ugo)
操作符:
= 移除权限
= 添加权限
= = 设置精确权限
权限类型:
r = 读
w = 写
x = 执行
示例:
chmod u+x file
:给所有者添加执行权限
chmod go-w file
:移除组和其他用户的写权限
chmod a=rw file
:设置所有用户为读写权限
常用选项
-R
或--recursive:递归修改目录及其内容权限
-v
或--verbose:显示详细的权限变更信息
-c
或--changes:仅显示实际发生变化的权限修改
--reference=RFILE
:参照指定文件的权限设置
特殊权限
除了基本权限外,还有三种特殊权限:
SUID(Set User ID)(s)
以文件所有者的权限执行,而不是执行者的权限
数字表示法中,在所有者权限前加4
示例:chmod 4755 file
SGID(Set Group ID)(s)
以文件所属组的权限执行
数字表示法中,在组权限前加2
示例:chmod 2755 file
Sticky Bit(t)
常用于共享目录,防止用户删除其他用户的文件
数字表示法中,在其他用户权限前加1
示例:chmod 1777 /tmp
实际应用示例
设置脚本可执行:
0chmod +x script.sh
保护私密文件:
0chmod 600 private.txt
设置网站目录权限:
0chmod -R 755 /var/www/html
创建共享目录:
0chmod 2770 shared_directory
查看当前权限:
0ls -l file.txt
注意事项
修改系统文件权限可能导致安全问题或系统故障
使用-R选项时要特别小心,避免意外修改大量文件权限
目录通常需要执行(x)权限才能访问其内容
权限修改只对当前用户有权限的文件有效 Linux 的chmod命令