Linux学习--SUID、SGID和SBIT

SUID
  1. SUID仅对二进制程序有效
  2. 执行者对该程序需要有x可执行权限
  3. 本权限仅在执行程序的过程中有效(run-time)
  4. 执行者将具有该程序属主的权限
#修改/usr/bin/cat程序的SUID权限,让普通用户使用cat查看文件时,具有文件属主的权限
[root@base ~]# which cat
/usr/bin/cat
[root@base ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 411 2018 /usr/bin/cat
[root@base ~]# chmod 4755 /usr/bin/cat
[root@base ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 411 2018 /usr/bin/cat
#普通用户可以直接查看root家目录下的file1文件内容,因为/usr/bin/cat程序设置了SUID,即普通用户在执行cat命令时其实拥有了root的权限
[edison@base ~]$ cat /root/file1
root file1
#去除/usr/bin/cat 程序的SUID权限
[root@base ~]# chmod 0755 /usr/bin/cat

题目:有一个项目组project,组里有三个用户dizzy,water,edison,三个用户需要能查看和编辑其他人创建的文件
注:使用特殊权限SGID
一个目录设置了SGID的权限后,若用户在此目录下具有w权限,则用户所建立的新文件,该新文件的用户组在此目录的用户组相同
一个目录设置了SBIT的权限后,用户只能删除该目录下自己的文件,不能删除其他人创建的文件

#1.在/tmp目录下创建一个project目录
[root@localhost tmp]# mkdir project
#2.给文件夹添加SGID权限
[root@localhost tmp]# chmod g+s project
[root@localhost tmp]# ll
total 4
drwxr-sr-x. 2 root root 4096 Jan 31 07:28 project
#3.给文件夹添加写入权限
[root@localhost tmp]# chmod g+w project
#4.添加project组
[dizzy@localhost project]$ groupadd project
#5.给dizzy,water,edison三个用户添加额外组project
[root@localhost tmp]# usermod -G project edison
[root@localhost tmp]# usermod -G project water
[root@localhost tmp]# usermod -G project dizzy
#6.修改/tmp/project目录的属组为project
[root@localhost tmp]# chown root:project project
[root@localhost tmp]# ll
total 4
drwxrwsr-x. 2 root project 4096 Jan 31 07:28 project
#此时三个用户就可以在/tmp/project目录下创建文件了,而且三个人可以编辑其他人创建的文件
[root@localhost tmp]# su - edison
[edison@localhost ~]$ cd /tmp/project
[edison@localhost project]$ vim waterfile
#在waterfile中写入edisonedit
[root@localhost tmp]# su - dizzy
[dizzy@localhost ~]$ cd /tmp/project
[dizzy@localhost project]$ vim waterfile
#在waterfile中写入dizzydit
[water@localhost project]$ vim /tmp/project/waterfile
#在waterfile中写入Wateredit
[water@localhost project]$ cat waterfile
edisonedit
dizzyedit
wateredit
#edion创建的文件,属组都为project,在project组中的都可以编辑和查看
[edison@localhost project]$ touch edisonfile
[edison@localhost project]$ ll
total 4
-rw-rw-r--. 1 edison project  0 Jan 31 07:53 edisonfile
-rw-rw-r--. 1 water  project 31 Jan 31 07:43 waterfile
#同理dizzy创建的文件,属组也为project,
[dizzy@localhost project]$ touch dizzyfile
[dizzy@localhost project]$ ll
total 4
-rw-rw-r--. 1 dizzy  project  0 Jan 31 07:54 dizzyfile
-rw-rw-r--. 1 edison project  0 Jan 31 07:53 edisonfile
-rw-rw-r--. 1 water  project 31 Jan 31 07:43 waterfile
#给project添加SBIT位
[root@localhost tmp]# ll
total 4
drwxrwsr-x. 2 root project 4096 Jan 31 07:54 project
[root@localhost tmp]# chmod o+t project
[root@localhost tmp]# ll
total 4
drwxrwsr-t. 2 root project 4096 Jan 31 07:54 project
[root@localhost tmp]# su - edison
[edison@localhost ~]$ cd /tmp/project
[edison@localhost project]$ ll
total 4
-rw-rw-r--. 1 dizzy  project  0 Jan 31 07:54 dizzyfile
-rw-rw-r--. 1 edison project  0 Jan 31 07:53 edisonfile
-rw-rw-r--. 1 water  project 31 Jan 31 07:43 waterfile
[edison@localhost project]$ rm -rf dizzyfile
rm: cannot remove `dizzyfile': Operation not permitted
#去掉SBIT权限,再执行删除
[root@localhost ~]# chmod o-t /tmp/project
[root@localhost ~]# ll /tmp/project -d
drwxrwsr-x. 2 root project 4096 Jan 31 07:54 /tmp/project
#如果目录没有SBIT权限,正常对目录有写权限,则可以删除目录下的文件
[edison@localhost project]$ rm -rf dizzyfile
[edison@localhost project]$ ll
total 4
-rw-rw-r--. 1 edison project  0 Jan 31 07:53 edisonfile
-rw-rw-r--. 1 water  project 31 Jan 31 07:43 waterfile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值