从入门到精通:Linux 权限管理(rwx/chmod/chown)
目录
1. 引言:为什么需要文件权限?
2. 基础概念:理解 rwx 权限
(1)权限的三种角色
(2)权限的三种类型
(3)权限的两种表示法
(4) 目录的 rwx 权限详解
3. 实战操作:权限管理命令
(1)查看权限
(2)修改权限:chmod
(3)修改所有者:chown
(4) 常见场景与解决方案
附录:常用命令速查表
4.umask
1. 什么是 umask?
2. 权限计算规则
(1)普通文件的默认权限
(2)目录的默认权限
补充:粘滞位(Sticky Bit)详解
1. 什么是粘滞位?
2. 粘滞位的表示方法
3. 设置与查看粘滞位
4. 粘滞位的实际应用
5. 粘滞位的注意事项
6. 总结
1. 引言:为什么需要文件权限?
- 用一句话场景引入:
“想象一下,你的 Linux 服务器存放着重要数据,如何防止他人误删文件?如何让团队协作时部分文件可编辑、部分只读?这一切都依赖 Linux 的权限系统。”
- 一句话点题:权限是 Linux 安全与协作的基石。
2. 基础概念:理解 rwx 权限
(1)权限的三种角色
- 用户(Owner):文件所有者
- 组(Group):文件所属用户组
- 其他(Others):既不是所有者,也不在组的用户
(2)权限的三种类型
符号 | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r | 读(Read) | 查看文件内容 | 列出目录中的文件(如 ls ) |
w | 写(Write) | 修改文件内容 | 在目录中创建/删除文件 |
x | 执行(Execute) | 执行文件(如脚本) | 进入目录(如 cd ) |
(3)权限的两种表示法
- 符号表示:
rwxr-xr--
(三组权限:用户/组/其他)
rwx = 4 (r) + 2 (w) + 1 (x) = 7
r-x = 4 + 0 + 1 = 5
r-- = 4 + 0 + 0 = 4
组合后:755 → rwxr-xr-x
(4) 目录的 rwx 权限详解
对目录而言,rwx
的含义与文件不同:
权限 | 操作示例 | 说明 |
---|---|---|
r | ls /dir | 列出目录内容(需配合 x 权限) |
w | touch /dir/newfile | 在目录中创建/删除文件 |
x | cd /dir 或 cat /dir/file | 进入目录或访问目录内文件内容 |
3. 实战操作:权限管理命令
(1)查看权限
ls -l # 显示详细信息,如:-rwxr--r-- 1 user group 1024 Jan 1 10:00 script.sh
(2)修改权限:chmod
符号模式:
chmod u+x script.sh # 给用户添加执行权限
chmod go-w data.txt # 移除组和其他用户的写权限
数字模式:
chmod 755 script.sh # rwxr-xr-x
chmod 644 config.txt # rw-r--r--
(3)修改所有者:chown
chown user:group file.txt # 修改所有者和所属组
chown -R user:group /dir # 递归修改目录下所有文件(-R 参数)
(4) 常见场景与解决方案
场景 1:让脚本可执行
chmod +x script.sh # 添加执行权限
./script.sh # 运行脚本
场景 2:共享目录的权限设置
mkdir /project
chmod 775 /project # 用户和组可读写执行,其他人只读执行
chown dev:team /project # 归属开发者组
附录:常用命令速查表
命令 | 作用 |
---|---|
ls -l | 查看权限 |
chmod 755 file | 修改权限(数字模式) |
chmod u+x file | 添加用户执行权限 |
chown user:group | 修改所有者和组 |
chmod -R | 递归修改目录权限 |
4.umask
1. 什么是 umask?
umask
(权限掩码)是 Linux 中一个关键参数,用于控制新创建文件或目录的默认权限。它通过“屏蔽”某些权限位,确保新建文件或目录的权限符合安全规范。
umask #输出例如0002 0022(八进制)
2. 权限计算规则
默认权限 = 起始最大权限 - umask
注意:这里实际是按位取反后做“按位与”运算,但为了方便记忆,可简化为“减法”。
(1)普通文件的默认权限
-
起始最大权限:
666
(即rw-rw-rw-
),因为普通文件默认不应有执行权限(避免安全隐患)。 -
为什么你的情况是 664?
-
计算示例(假设
umask=0022
):
最大权限: 6 6 6 → rw-rw-rw-
umask: 0 2 2 → ----w--w-
实际权限:6 4 4 → rw-r--r--
解释:
- 用户权限:
6 - 0 = 6
→rw-
- 组权限:
6 - 2 = 4
→r--
- 其他用户权限:
6 - 2 = 4
→r--
(2)目录的默认权限
- 起始最大权限:
777
(即rwxrwxrwx
),因为目录需要x
权限才能进入(cd
)。
最大权限:7 7 7 → rwxrwxrwx
umask: 0 2 2 → ----w--w-
实际权限:7 5 5 → rwxr-xr-x
特殊规则:
- 仅拥有目录的
w
权限而无x
:无法创建或删除文件(因为操作依赖x
权限)。 - 仅拥有目录的
x
权限而无r
:可以访问目录内已知文件(如cat /dir/known.txt
),但无法列出文件列表。
-
umask 的默认值:
- Root 用户:通常
umask=022
(安全优先,限制组和其他用户权限)。 - 普通用户:通常
umask=002
(允许同组用户读写协作)。
- Root 用户:通常
补充:粘滞位(Sticky Bit)详解
1. 什么是粘滞位?
粘滞位是一种特殊的权限位,主要用于目录。它的作用是:
- 限制文件删除权限:即使目录对所有用户开放写权限(
w
),只有文件的所有者、目录的所有者或超级用户(root)才能删除或重命名文件。 - 典型应用场景:共享目录(如
/tmp
),防止用户随意删除他人文件。
2. 粘滞位的表示方法
- 符号表示:在权限位的最后一位显示为
t
或T
。- 如果目录有执行权限(
x
),显示为t
(如rwxrwxrwt
)。 - 如果没有执行权限,显示为
T
(如rwxrwxrwT
)。
- 如果目录有执行权限(
- 数字表示:在权限数字前加
1
,如1777
。
3. 设置与查看粘滞位
(1)查看粘滞位
使用 ls -l
查看目录权限,粘滞位显示在权限位的最后一位:
ls -ld /tmp
# 输出示例:drwxrwxrwt 10 root root 4096 Oct 10 12:00 /tmp
(2)设置粘滞
符号模式:
chmod +t /shared_dir # 添加粘滞位
chmod -t /shared_dir # 移除粘滞位
数字模式:
chmod 1777 /shared_dir # 添加粘滞位,权限为 rwxrwxrwt
chmod 0777 /shared_dir # 移除粘滞位,权限为 rwxrwxrwx
4. 粘滞位的实际应用
场景:共享目录权限控制
假设有一个共享目录 /shared
,希望:
- 所有用户可以在目录中创建文件;
- 只有文件所有者或 root 可以删除文件。
操作步骤:
mkdir /shared
chmod 1777 /shared # 添加粘滞位,权限为 rwxrwxrwt
ls -ld /shared # 检查权限
# 输出:drwxrwxrwt 2 root root 4096 Oct 10 12:00 /shared
5. 粘滞位的注意事项
- 仅对目录有效:粘滞位对普通文件无意义。
- 与写权限的关系:粘滞位通常与目录的写权限(
w
)结合使用。如果目录没有写权限,粘滞位的作用有限。 - 安全性:粘滞位不能完全替代其他权限控制(如 ACL),但可以有效防止误删文件。
6. 总结
- 一句话总结:粘滞位是共享目录的“守护者”,确保只有文件所有者或 root 可以删除文件。
- 扩展建议:结合
chmod
和chown
,灵活控制目录权限,满足团队协作需求。