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这种方式来执行,不是说这个文件就不能执行了。

posted on 2015-11-10 17:26  蒋乐兴的技术随笔  阅读(329)  评论(0编辑  收藏  举报

导航