Bo2SS

Bo2SS

文件特殊权限的常用场景

实验环境: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 干的漂亮


思考点#

  • 某场景:进入某目录的用户对某文件没有写权限,却可以删除文件,为什么?

附加#

  • 目录的可执行权限代表进入权限

参考资料#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。