特殊权限SGID和sticky配合使用实现文件夹和文件权限的结构化管理

举例说明特殊权限SGID和sticky配合使用能实现文件夹和文件权限的结构化管理

特殊权限SGID有两个作用域,文件和目录:

当作用于文件时,继承二进制程序所有组的权限,这种权限相当危险,一定要慎用。如给/bin/vim加SGID权限,普通用户可以直接修改/etc/shadow,更新所有用户包括root的密码。例子如下:

  1. 查看/bin/vim默认权限ll /bin/vim;-rwxr-xr-x. 1 root root 2289640 Aug  2  2017 /bin/vim
  2. 切换到普通用户,执行vim /etc/shadow;无法显示文件内容,并且有告警信息[Permission Denied]
  3. 给/bin/vim加SGID权限,chmod g+s /bin/vim
  4. 查看/bin/vim权限,-rwxr-sr-x. 1 root root 2289640 Aug  2  2017 /bin/vim
  5. 再次切换到普通用户,执行vim /etc/shadow,可以更改文件内容。

当作用于目录时,此目录新建的文件继承目录的所属组,可以用于创建一个协作组,配合sticky权限(具有写权限的目录,只有文件的所有者或root可以删除该文件。

 

需求:operation部门的所有员工能访问并修改彼此的文件,但是只能删除自已创建的文件

具体实现步骤:(前提root umask为0022,普通用户为0002)

  1. 用root创建operation组:groupadd operation
  2. 用root创建部门员工如: useradd user1; useradd user2并设置user1和user2的登陆密码
  3. 用root在/home下创建目录oper: mkdir operation
  4. 用root给oper目录加SGID和sticky权限,chmod 3777 operation
  5. 更改用户user1和user2的辅助组为operation

groupmems -a user1 -g operation

groupmems -a user2 -g operation

  1. 切换到user1用户,进入/home/oper目录,创建文件user1_file1,查看文件属性

-rw-rw-r–. 1 user1 operation 12 Apr  5 11:56 user1_file1

  1. 切换到user2用户,进入/home/oper目录,创建文件user2_file1,查看文件属性

-rw-rw-r–. 1 user2 operation  0 Apr  5 12:16 user2_file1

  1. 在user2用户登陆下,用vim更改用户user1创建的文件user1_file1,添加新的内容成功
  2. 在user2用户登陆下,删除用户user1创建的文件user1_file1, rm -f user1_file1失败并提示操作不允许

rm: cannot remove ‘user1_file1’: Operation not permitted

  1. 同样用user1登陆去操作user2创建的文件user2_file1,结果和上述相同

上述的管理可以进一步优化,思路:operation部门下的所有员工可以在/home/oper下建立各自以用户名命名的文件夹,所有的文件夹会继承oper目录的属组即operation组:

  1. 以user1用户登陆下,创建user1目录在/home/oper下,mkdir user1,查看目录user1的性,所属组是operation

drwxrwsr-x. 2 user1 operation  6 Apr  5 13:43 user1

  1. 以user1用户登陆下,在/home/oper/user1目录下创建文件user1_file2
  2. 以user2登陆,进入/home/oper/user1目录,修改user1创建的文件user1_file2成功,但是由于目录user1是无法继承oper的sticky位特殊权限,所以user2是可以删除user1目录下的user1_file2文件。解决方案,在root下把sticky位权限赋予user1目录,chmod o+t user1,检查user1的属性

drwxrwsr-t. 2 user1 operation 25 Apr  5 13:47 user1

此时以user2登陆删除user1目录下以user1用户创建的文件是无法删除的

rm -f user1_file2

rm: cannot remove ‘user1_file2’: Operation not permitted

同理,以user2登陆也无法删除user1文件夹。

最终,通过特殊权限SGID和sticky配合使用,实现了需求:operation部门的所有员工能访问并修改彼此的文件,但是只能删除自已创建的文件,同时引入每个员工创建一个目录,并赋予这些目录是sticky位的特殊权限,实现了更清晰的结构化管理。

总结,三种特殊权限SUID、SGID以及sticky位权限虽然在实际工作中并不经常用到,但是深入理解它的工作原理对我们处理其它程序或应用中的权限管理提供一种思路,毕竟Linux是一切程序和应用运行的基础。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95546

(0)
Evan LiangEvan Liang
上一篇 2018-04-08 21:09
下一篇 2018-04-08 21:22

相关推荐

  • Linux学习从入门到打死也不放弃,完全笔记整理(持续更新)

    这是一片学习笔记的汇总,同步51cto,查看内容请点击各章节介绍。

    Linux笔记 2018-04-07
  • 学习笔记(12)

    学习笔记(12)

    Linux笔记 2018-04-30
  • linux基础

    计算机的组成及其功能 计算机初始设计出的时候,就遵循冯诺依曼体系,主要有四部分组成,cpu(中央处理器;运算器和控制器),存储器,输入设备和输出设备 cpu: 运算器、控制器、寄存器,缓存(为了提高cpu性能的加速部件) 存储器:内存,RAM(随机访问存储器) 输入:对计算机下指令,提供让机器操作的数据等;不如键盘,鼠标 输出:输出数据加工后的结果;比如显示…

    Linux笔记 2018-06-24
  • linu基础知识

    低级语言 ;机器语言,汇编语言 中级语言;C 高级语言;JAVA Objetive-C php GO cento s7.4 开源。O pen Sou软件核原代码提供所有人自由发布软件和原代码 虚拟机配置 内存;1.1G Centos7 .4 磁盘200G 光盘;ISO接 网卡;仅主机 MBR GPT 区类型 主分区;一块硬盘最i多4个,不可分小区,可以用来启…

    Linux笔记 2018-04-01
  • N31第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who | cut -d ‘ ‘ -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。  w |cut -d ‘ ‘ -f1 |tail -1 |xargs id 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 cat /et…

    Linux笔记 2018-07-16