linux----suid\sgid
1、suid和sgid 都是针对二进制程序来说了,bash脚本不在它的作用范围。
2、如果一个二进制文件设置有suid,那么在userA用户执行它时,会以文件所属用户的身份来执行。sgid同理;
3、suid的优先级别比sgid的要大,也就是说如果同时设置了这两个话,和只设置suid一样;
4、一般说来一个文件所属用户的权限比所属组的权限更大,所以只要设置sgid可以解决的事就不要设置suid。
例子:
1、以chown为例说明suid的作用。root/usra 是两个不同的用户
root> cp /bin/chown /tmp/ #把chown复制到/tmp/用来做测试。
root> touch /tmp/test.txt #创建一个test.txt文件,由于是以root身份运行的touch所以文件的所属用户和组都是root
usra> /tmp/chown usra.usra /tmp/test.txt #usra用户想要修改test.txt文件的所属用户和组,会被提示没有权限。
root> chown u+s /tmp/test.txt #root用户为/tmp/chown增加suid。
usra> chown usra.usra /tmp/test.txt #成功
2、为什么说suid,sgid只是会对二进制文件。
root> touch mybash.sh
root> echo "echo this is the content of mybash.sh">/tmp/mybash.sh
root> chmod 744 /tmp/mybash.sh #别以为这个usra用户就不能执行mybash.sh中的脚本了
usra> bash /tmp/mybash.sh #执行成功,没有x权限是说other不能以/tmp/mybash.sh这种方式来执行,不是说这个文件就不能执行了。