实验环境:Ubuntu18.04 远程服务器 + WSL 2 本机
测评说明#
[版本一]
[版本二]
-
⭐考察对文件权限【尤其是文件特殊权限】的理解
-
理解了以上,实现上述功能就游刃有余了
最终效果#
-
其他用户无法进入 Project 目录
-
TestUser1 创建了文件 u1.txt
-
TestUser2 仍可以编辑 u1.txt,但无法删除它
-
- 反之同理
实现过程#
准备工作#
- 新建一个用户组 TestGroup,使用 groupadd 命令,有一些选项可查看 man 手册
groupadd TestGroup
- 新建两个属于 TestGroup 组的用户 TestUser1、TestUser2
useradd -G TestGroup TestUser1
useradd -G TestGroup TestUser2
-
- 需要先有组
- 设置密码,用来登录用户,否则登不了
passwd TestUser1
--->输入密码:xxx
passwd TestUser2
--->输入密码:yyy
- 在 /opt 目录下新建 Project 目录,作为项目目录
cd /opt
mkdir Project
实现功能 1 进入权限#
【只能 TestUser1、TestUser2、 root 三个用户进入该目录】
- 把 Project 目录的所属组修改为 TestGroup,所属用户不动
sudo chown :TestGroup Project
- 将其他用户的执行权限去除,其他用户将不能进入目录
sudo chmod o-x Project
-
效果如下:
实现功能 2 编辑权限#
【TestUser1 创建的文件,TestUser2 可以编辑】
- 首先,给所属组 TestGroup 添加写权限,这样用户才能在该目录下创建文件
sudo chmod g+w Project
- 设置 set_gid,这样用户进入目录后的操作会以目录所属组的身份进行
sudo chmod g+s Project
[PS] 否则,用户创建的文件的所属组属于与自己同名的组,而不是 TestGroup [从而无法将两个用户建立联系]
-
权限如下:
实现功能 3 删除权限#
【TestUser1 和 TestUser2 只能删除自己创建的文件】
- 设置 sticky bit,这样在该目录下,用户只能删除自己创建的内容
sudo chmod +t Project
-
权限如下:
[PS] 文件夹颜色都变了,zsh 干的漂亮
思考点#
- 某场景:进入某目录的用户对某文件没有写权限,却可以删除文件,为什么?
- 删除文件的权限:优先取决于用户对进入的目录的权限
- 该用户属于 TestGroup,有可写权限
- 参考鸟哥的私房菜 —— 目录与文件之权限意义—— 权限对目录的重要性:
- 但是碰见 sticky bit [黏着位],事情又不一样了
附加#
- 目录的可执行权限代表进入权限
参考资料#
- 《Linux 入门及使用》笔记汇总 ——3 Linux 基础知识 ——用户和组以及文件权限的修改
- 《Linux 入门及使用》笔记汇总 ——8 文件与目录、AWK——文件的特殊权限
- 鸟哥的私房菜 —— 目录与文件之权限意义