特殊权限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

相关推荐

  • Virtualization虚拟化技术介绍

    Virtualization即虚拟化技术,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

    2018-07-27
  • Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示

    文件管理工具:cp,mv,rm cp:命令:copy:复制文件的数据    源文件;目标文件       单源复制 cp [OPTION]… [-T] SOURCE DEST   如果DEST不存在,则事先创建此文件,并复制原文件的数据流至DEST中:   如果DEST存在:        如果DEST是非目录文件:则覆盖目标文件        …

    Linux笔记 2018-05-20
  • TCP/IP协议三次握手与四次握手流程解析

    一、TCP报文格式TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:   图1 TCP报文格式上图中有几个字段需要重点介绍下:(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,…

    2018-05-06
  • yum配置

    本节简要介绍本地yum配置以及网络yum源的配置

    Linux笔记 2018-04-22
  • 第四周作业

    第四周作业
    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
    2、编辑/etc/group文件,添加组hadoop。
    3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
    4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。
    5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
    6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
    7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
    8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
    9、找出/etc/passwd文件中的一位数或两位数;
    10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
    11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
    12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
    13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    2018-06-07
  • Linux发行版的基础目录名称命名法则及功用规定

    FHS filesystem hierarchy standard /bin: 所有用户可用的基本命令程序文件 /sbin: 供系统管理使用的工具程序 /boot: 引导加载器必须用到的各静态文件:kernel,initramfs(initrd),grub等; /dev: 存储特殊文件或设备文件 /etc:系统程序的配置文件,只能为静态 /home:普通的用…

    Linux笔记 2018-05-11