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

相关推荐

  • 运维之pxe、dhcp、cobbler

    运维之pxe、dhcp、cobbler 把一个主机接入TCP/IP网络,要配置哪些网络参数:ip/mask、gateway、dns server;参数配置方式:1、静态配置;2、动态分配:a、bootp协议b、dhcp协议:引入了“租约”的bootp; DHCP:动态主机配置协议:arp:address resolving protocol:地址解析协议:I…

    Linux笔记 2018-07-22
  • 服务器

    服务器的组成及应用

    2018-04-01
  • ansible httpd

    卸载服务ansible all -m shell -a ‘yum -y remove nginx’ 检查用户 组 uid gidansible all -m shell -a ‘getent passwd nginx’ansible all -m shell -a ‘getent group ngi…

    Linux笔记 2018-07-23
  • linux用户组命令使用方法

    实现用户账号的管理,要完成的工作主要有如下几个方面:
    用户账号的添加、删除与修改。
    用户口令的管理。
    用户组的管理。

    Linux笔记 2018-04-05
  • 详细说明进行管理工具htop、vmstat等相关命令,并举例

    htop命令: 选项: -d #:指定延迟时间间隔 -u UserName:仅显示指定用户的进程 -s COLUME:以指定字段进行排序 htop -u root -d 10 PID:进程ID USER:用户名 PRI:优先级 NI:nice值 VIRT:Size in memory of the total program size RES:所使用的物理内…

    2018-06-15
  • 实现cobbler自动安装(基于网络)

    本节索引: 一、cobbler简介 二、实验:模拟搭建cobbler服务器,实现cobbler自动化安装系统 三、实验:实现基于web的cobbler   一、cobbler简介: cobbler 功能:用来快速建立 Linux 网络安装环境 特性: 1.基于PXE的二次封装,将多种安装参数封装到一个菜单,更加方便,自动化 2.Python编写 3…

    Linux笔记 2018-05-27