每个 Linux 文件系统对象都会记录一个用户所有者和一个组所有者。这些身份决定应用所有者还是组权限三元组,但身份本身不会授予某项具体权限。使用 ls -l 同时检查所有权和模式。
权限 · 第 3 课
所有权权限
学习如何检查和更改 Linux 文件系统对象的用户与组所有权。
更改用户所有者
使用 chown(change owner)指定不同的用户所有者:
$ sudo chown patty myfile
这会把 myfile 的用户所有者改为 patty,组保持不变。即使当前拥有该文件,更改其用户所有者通常也需要适当权限。这项限制能防止用户通过转移文件来规避配额或其他基于所有权的控制。
哪个命令会把 myfile 的用户所有者改为 patty,同时保持组不变?
更改组所有者
使用 chgrp 指定不同的组所有者:
$ chgrp whales myfile
在典型系统上,非特权所有者只能把文件的组改为自己所属的组。特权进程可以进行更广泛的更改。等效的 chown 形式以冒号开头:
$ chown :whales myfile
之后,当内核选择组类别时会应用组模式位;更改组不会自动添加读取、写入或执行位。
chgrp whales myfile 会更改什么?
同时更改用户和组
向 chown 提供 USER:GROUP 可以在一次操作中更新两个字段:
$ sudo chown patty:whales myfile
该命令把 patty 设为用户所有者,把 whales 设为组所有者。应验证结果,而不是假设命令成功:
$ ls -l myfile
哪个所有权说明会在一个 chown 命令中指定用户 patty 和组 whales?
谨慎处理递归更改
-R 选项会递归更改所有权,但范围过大的递归命令可能跨越意外目录树或影响服务数据。更改大型层次结构前,应确认准确目标、了解当前实现的符号链接行为、预览目录树,并在小样本上验证。不要在未审查范围的情况下,把示例中的特权所有权命令复制到真实系统上。
更改文件的组所有者后,其普通组权限位会发生什么?
要在隔离环境中练习,Linux 用户组和文件权限 实验涵盖检查和修改所有权及文件模式。
课程已完成
你已完成 所有权权限
现在,你可以区分所有权元数据与权限位,并有意地更改它们。
使用
chown USER FILE更改用户所有者。使用
chgrp GROUP FILE或chown :GROUP FILE更改组所有者。使用
chown USER:GROUP FILE设置两个字段。验证结果,并谨慎控制递归更改范围。