一、SUID:
用于二进制的文件中,对目录无效
让一般用户在执行某些二进制文件的时候,能够暂时拥有该程序(二进制文件)所有者的权限
使用该命令的所属用户的权限来运行,而不是命令执行者的权限
比如:
在root用户的家目录下(在某一目录下执行ls命令时候,要看其目录对应的权限 ls -ld /root)
普通用户test 使用ls命令,提示权限不够,当在root用户中给ls命令加个SUID权限时候,就能正常执行了
图中chmod u+s /usr/bin/ls 可以用数字表示为 chmod 4755 /usr/bin/ls
ls -l /usr/bin/passwd
-rwsr-xr-x s为特殊权限位,小写s表示存在x权限,大写S表示不存在x权限
SUID作用:
a、SUID权限仅对二进制程序(binary program)有效;
b、执行者对于该程序需要具有x的可执行权限;
c、本权限仅在执行该程序的过程中有效(run-time);
d、执行者将具有该程序拥有者(owner)的权限。
二、sgid
对于文件,使用该命令的组群权限来运行
对于目录:在设置了sgid权限的目录中创建的文件会继承该目录的组群身份
图中chmod g+s 2 可以用数字表示为 chmod 2755 2
三、sbit
粘滞位(Sticky Bit ):在带有粘滞位的目录中的文件只能被文件的所属用户和根用户删除,不管该目录的写入权限是如何设置的(“ t ” 代表粘滞位)
/tmp本身的权限 1777
在具有sbit的目录下,用户若在该目录下具有w和x权限,则当用户在该目录下建立文件或目录时,只有文件的拥有者和root才有权利删除
总结
SUID/SGID/SBIT权限设置
和前面说的rwx差不多,也有两种方式,一种是字符方式,一种是数字方式。
4 为 SUID = u+s
2 为 SGID = g+s
1 为 SBIT = o+t
小s和大S的区别,小t和大T的区别(大写位表示其位为空)
练习
公司有一台文件共享服务器,有个公共目录/common,属于pub组;公司有3个部门sales、markets和techs;user1属于sales部门,user2属于markets部门,user3属于techs部门;要求:user1、user2、user3有访问/common目录的权限,并且在/common目录中创建的文件及目录的属组为pub组,而且不能删除其他用户创建的文件及目录,只有自己有权限删除。
新建目录/common,并将他加入pub组,同时保证pub组的人都能在该目录下进行读和写
#mkdir /common
#groupadd pub
#chgrp pub /common
#chmod g=rwx /common
新建三个用户并加入对应组,同时都加入pub这个附加组中
#groupadd sales
#groupadd markets
#groupadd techs
#useradd user1 -g sales
#echo 123456 |passwd --stdin user1
#useradd user2 -g markets
#echo 123456 |passwd --stdin user2
#useradd user3 -g techs
#echo 123456|passwd --stdin user3
#usermod -G pub user1
#usermod -G pub user2
#usermod -G pub user3
#chmod g+s /common
#chmod o+t /common
验证测试新建对象是否属于pub组
#su - user1
#cd /common
#touch user1_file
#mkdir user1_d
#ls -l *
确认user1_file和user1_d是否都属于pub组
验证测试普通用户能否删除其他用户建立的对象
#exit
#su - user2
#cd /common
#rm -rvf user1_file
确认user2能否删除之前user1创建的两个对象
备注:user1\user2\user3都可以进行类似的测试