第7章 拥有者和权限
所属:第二部分 使用文件 来源:Linux命令速查手册
Linux是多用户系统,文件权限是系统安全的基石。每个文件都有所有者、所属组,以及三套独立的权限设置。
7.1 修改文件或目录属于的用户组
chgrp groupname filename修改文件或目录的所属组。
示例:
chgrp developers project.txt7.2 递归修改目录属于的用户组
chgrp -R groupname directory递归修改目录及其所有内容的所属组。
7.3 使用chgrp命令查看文件用户组的变化
chgrp -v groupname filename
chgrp -c groupname filename-v显示所有修改过程(verbose)-c只在有变化时显示(changes)
7.4 修改文件和目录的拥有者
chown username filename修改文件所有者。
⚠️ 通常需要 root 权限才能修改文件所有者。
7.5 同时修改文件和目录的拥有者和用户组
chown username:groupname filename
chown username.groupname filename同时修改所有者和组。
递归修改目录:
chown -R username:groupname directory/7.6 理解权限的基础
三组用户
每个文件有三套独立的权限:
| 类别 | 缩写 | 说明 |
|---|---|---|
| 所有者 | u (user) | 文件的拥有者 |
| 所属组 | g (group) | 文件所属用户组的成员 |
| 其他用户 | o (other) | 系统中其他所有人 |
| 所有人 | a (all) | 以上全部(u+g+o) |
三种权限
| 权限 | 字母 | 数字 | 对文件的含义 | 对目录的含义 |
|---|---|---|---|---|
| 读 | r | 4 | 可以查看文件内容 | 可以列出目录内容(ls) |
| 写 | w | 2 | 可以修改、删除文件 | 可以增删改目录中的文件 |
| 执行 | x | 1 | 可以运行程序/脚本 | 可以进入/访问目录(cd) |
数字权限计算
每组权限用一个数字表示(r=4, w=2, x=1):
| 权限组合 | 数字 | 说明 |
|---|---|---|
rwx | 7 | 全部权限(4+2+1) |
rw- | 6 | 读写(4+2) |
r-x | 5 | 读和执行(4+1) |
r-- | 4 | 只读 |
--- | 0 | 无权限 |
完整权限示例:
644=rw-r--r--(所有者读写,其他人只读)755=rwxr-xr-x(所有者全部,其他人读+执行)600=rw-------(只有所有者能读写)700=rwx------(只有所有者有全部权限)
7.7 用字母表示法修改文件和目录的权限
chmod u+x filename # 所有者增加执行权限
chmod g-w filename # 组去掉写权限
chmod o+r filename # 其他增加读权限
chmod a+r filename # 所有人增加读权限
chmod ug=rw filename # 所有者和组设为读写
chmod +x filename # 所有人加执行权限(a+x的简写)语法格式
chmod [对象][操作][权限] 文件
对象:
u= user(所有者)g= group(组)o= other(其他)a= all(所有人,默认)
操作:
+= 增加权限-= 去掉权限== 设置为指定权限(其他位清除)
权限:
r= 读w= 写x= 执行
7.8 用数字权限修改文件和目录的权限
chmod 644 filename # rw-r--r--
chmod 755 filename # rwxr-xr-x
chmod 600 filename # rw-------
chmod 700 directory # rwx------直接用三位数字设置完整权限,最常用。
常见权限推荐
| 权限 | 适用场景 |
|---|---|
644 | 普通文件(文本、配置、网页等) |
755 | 可执行文件、目录、脚本 |
600 | 私密文件(密钥、密码等) |
700 | 私密目录 |
777 | 所有人可读写执行(⚠️ 尽量避免,不安全) |
7.9 递归地修改权限
chmod -R 644 directory/
chmod -R u+w directory/递归修改目录下所有文件和子目录的权限。
⚠️ 注意:目录需要执行权限才能访问,递归时文件和目录权限最好分开设置。
7.10 设置和清除suid
什么是SUID
SUID (Set User ID):程序执行时,以文件所有者的身份运行,而不是执行者的身份。
只对可执行文件有效,对目录无效。
chmod u+s filename # 设置suid
chmod u-s filename # 清除suid
chmod 4755 filename # 数字方式设置suid(前面加4)典型例子:/usr/bin/passwd 有suid位,普通用户执行时临时获得root权限,才能修改密码文件。
⚠️ SUID程序有安全风险,不要随意给程序加suid。
权限显示上,suid会占用所有者的x位:
- 原来有x → 显示
s(小写) - 原来没x → 显示
S(大写,表示无效)
7.11 设置和清除sgid
什么是SGID
SGID (Set Group ID):
- 对文件:执行时以文件所属组的身份运行
- 对目录:目录中新建的文件自动继承该目录的组(非常有用!)
chmod g+s filename/directory # 设置sgid
chmod g-s filename/directory # 清除sgid
chmod 2755 filename/directory # 数字方式设置sgid(前面加2)SGID目录的应用场景
团队协作目录:设置sgid后,所有人在里面创建的文件都属于同一个组,方便共享。
chmod g+s /home/team_project/权限显示上,sgid占用组的x位:
- 原来有x → 显示
s - 原来没x → 显示
S
7.12 设置和清除sticky bit
什么是Sticky Bit
Sticky Bit(粘滞位):对目录设置后,只有文件所有者才能删除自己的文件,即使其他人有写权限。
对目录有效,对文件基本不用了。
chmod +t directory # 设置sticky bit
chmod -t directory # 清除sticky bit
chmod 1755 directory # 数字方式设置(前面加1)典型例子
/tmp 目录就设置了sticky bit:所有人都能在里面创建文件,但只能删自己的。
权限显示上,sticky bit占用其他用户的x位:
- 原来有x → 显示
t(小写) - 原来没x → 显示
T(大写)
7.13 小结
权限管理三剑客
| 命令 | 作用 |
|---|---|
chown | 修改所有者(owner) |
chgrp | 修改所属组(group) |
chmod | 修改权限(mode) |
特殊权限位速记
| 特殊权限 | 数字前缀 | 对文件 | 对目录 |
|---|---|---|---|
| SUID | 4xxx | 以所有者身份执行 | 无效 |
| SGID | 2xxx | 以所属组身份执行 | 新建文件继承组 |
| Sticky | 1xxx | 无效 | 只能删自己的文件 |
权限查看
ls -l filename输出格式:drwxr-xr-x
- 第1位:文件类型
- 2-4位:所有者权限
- 5-7位:组权限
- 8-10位:其他用户权限
理解权限是Linux系统管理的基础,务必掌握。