[试验]关于特殊权限位的试验,未排版.

来源:互联网 发布:广告平面设计软件下载 编辑:程序博客网 时间:2024/06/05 06:03
脚本文件执行需要读权限与执行权限试,二进制文件只需要执行权限即可,试验过程如下:

    脚本文件 的测试

        1.创建可执行脚本,权限0001,属主属组root.内容打印当前的ID.

            [root@CentOS7.0jinbusi]#cat ./testdetest

            #!/bin/sh

            #

            /bin/id -un

            [root@CentOS7.0jinbusi]#chmod 0001 testdetest

            [root@CentOS7.0jinbusi]#ll testdetest |grep testdetest

            ---------x. 1 root root 24 5月  30 10:13 testdetest

       2. 运行该脚本,使用jinbusi帐户.

            [jinbusi@CentOS7.0~]$id –un

            jinbusi

            [jinbusi@CentOS7.0~]$./testdetest

            /bin/sh: ./testdetest:权限不够

       3. 权限更改为0005,执行,使用jinbusi帐户

            [root@CentOS7.0jinbusi]#ll testdetest |grep testdetest

            -------r-x. 1 root root 24 5月  30 10:13 testdetest

            [jinbusi@CentOS7.0~]$./testdetest

            jinbusi
    二进制文件测试
        1.复制id命令,到jinbusi家目录改名testid,并设置权限0001,使用jinbusi帐户执行.

            [root@CentOS7.0jinbusi]#chmod 0001 testid

            [root@CentOS7.0jinbusi]#ll testid

            ---------x. 1 root root 41480 5月  30 10:31 testid

            [jinbusi@CentOS7.0~]$./testid -un

            jinbusi

 SUID权限需要用户本身便可执行程序.SUID有意义之有作用在二进制程序上.试验过程如下:

        1.继续之前的环境使用testid 文件,文件权限更改为4100,使用jinbisi执行.



            [root@CentOS7.0jinbusi]#chmod 4100 testid

            [root@CentOS7.0jinbusi]#ll testid

            ---s------. 1 root root 41480 5月  30 10:31 testid

            [jinbusi@CentOS7.0~]$./testid -un

            -bash: ./testid: 权限不够

        2. 更改权限使用4001权限,使用jinbusi帐户执行.

            [root@CentOS7.0jinbusi]#ll testid

            ---S-----x. 1 root root 41480 5月  30 10:31 testid

            [jinbusi@CentOS7.0~]$./testid -un

            root

            [jinbusi@CentOS7.0~]$

    执行成功了使用jinbusi帐户运行但是id显示的root

    这里更新一下:这里出现了id 与 id -un显示结果不一致的现象,但是出现了一条euid属性

            [jinbusi@CentOS7.0~]$id -nu
            jinbusi
            [jinbusi@CentOS7.0~]$./testid -nu
            root
            [jinbusi@CentOS7.0~]$id
            uid=1026(jinbusi) gid=1027(jinbusi)组=1027(jinbusi) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
            [jinbusi@CentOS7.0~]$./testid
            uid=1026(jinbusi) gid=1027(jinbusi) euid=0(root)组=1027(jinbusi) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
            [jinbusi@CentOS7.0~]$
            [root@CentOS7.0jinbusi]#./testid
            uid=0(root) gid=0(root)组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
            [root@CentOS7.0jinbusi]#ll ./testid
            ---S-----x. 1 root root 41480 5月  30 10:31 ./testid

        2. 更换脚本尝试一下,

            [root@CentOS7.0jinbusi]#cat ./testdetest

            #!/bin/sh

            #

            echo "这是使用/bin/id实现的输出"
            /bin/id -un

            echo -e "\n这是使用/home/jinbusi/testid的输出"
            /home/jinbusi/testid -un

            [root@CentOS7.0jinbusi]#ll testdetest testid /bin/id

            -rwxr-xr-x. 1 root root 41480 11月  6 2016 /bin/id

            -------r-x. 1 root root   146 5月  30 10:49 testdetest

            ---S-----x. 1 root root 41480 5月  30 10:31 testid

            [jinbusi@CentOS7.0~]$./testdetest

            这是使用/bin/id实现的输出
            jinbusi

            这是使用/home/jinbusi/testid的输出
            root

            [root@CentOS7.0jinbusi]#chmod u+s testdetest

            [root@CentOS7.0jinbusi]#ll testdetest testid /bin/id

            -rwxr-xr-x. 1 root root 41480 11月  6 2016 /bin/id

            ---S---r-x. 1 root root   146 5月  30 10:49 testdetest

            ---S-----x. 1 root root 41480 5月  30 10:31 testid

            [jinbusi@CentOS7.0~]$./testdetest

            这是使用/bin/id实现的输出
            jinbusi

            这是使用/home/jinbusi/testid的输出
            root



3. 在脚本中之前试验中如果在脚本上使用SUID权限,作用并没有体现出来,在脚本中调用的命令依然按照原有的权限执行,那么以上结论如果正确那么,SUID权限的脚本中,调用的的程序无法操作本身权限外的文件,把手中自带的功能呢?

            [root@CentOS7.0jinbusi]#cat textdetest

            #!/bin/sh

            #

            echo "这是新追加的文本"> /home/jinbusi/text.txt

            /bin/cat /home/jinbusi/text.txt

            

            [root@CentOS7.0jinbusi]#

             [root@CentOS7.0jinbusi]#ll text.txt textdetest

            ---S---r-x. 1 root root 101 5月  30 11:11 textdetest

            -rwx------. 1 root root  24 5月  30 09:59 text.txt

            [jinbusi@CentOS7.0~]$./textdetest

            ./textdetest:行3: /home/jinbusi/text.txt:权限不够

            /bin/cat: /home/jinbusi/text.txt:权限不够

            [root@CentOS7.0jinbusi]#chmod o+rw text.txt

            [root@CentOS7.0jinbusi]#ll text.txt

            -rwx---rw-. 1 root root 24 5月  30 09:59 text.txt

            [root@CentOS7.0jinbusi]#

            [jinbusi@CentOS7.0~]$./textdetest

            这是新追加的文本

    可见将SUID加在脚本上并无效果即使是bash自带的功能也无法使用SUID权限.
    再次验证了一下
            [root@CentOS7.0jinbusi]#cat dirtest

            #!/bin/sh

            #

            cd /home/jinbusi/dir1

            ls /home/jinbusi/dir1/

            [root@CentOS7.0jinbusi]#

            [root@CentOS7.0jinbusi]#ll dirtest

            -rws---rwx. 1 root root 58 5月  30 11:36 dirtest

            [root@CentOS7.0jinbusi]#

            [jinbusi@CentOS7.0~]$./dirtest

            ./dirtest: 第 3行:cd: /home/jinbusi/dir1: 权限不够

            ls: 无法打开目录/home/jinbusi/dir1/:权限不够

            [jinbusi@CentOS7.0~]$



SUID可以传递么

            [root@CentOS7.0jinbusi]#cp /usr/bin/bash ./sh

            [root@CentOS7.0jinbusi]#ll sh

            ---S-----x. 1 root root 960392 5月  30 11:44 sh

            [jinbusi@CentOS7.0~]$./sh

            [jinbusi@CentOS7.0~]$pstree

                  ├─sshd─┬─sshd───bash───su───bash───sh───pstree

            [jinbusi@CentOS7.0~]$id

            uid=1026(jinbusi) >>>>这里并不是root

            [jinbusi@CentOS7.0~]$echo jinbusdelv >> /etc/passwd

            sh: /etc/passwd: 权限不够

            [root@CentOS7.0jinbusi]#chmod 4701 ./sh

            [jinbusi@CentOS7.0~]$echo jinbusdelv >> /etc/passwd

            sh: /etc/passwd: 权限不够

    答:权限不可以传递.

SUID的优先权,如果执行者不是文件的属主,但是是文件的属组,那么带有的是什么权限:

        1. 将jinbusi加入到root组,测试文件使用testid ,

            [root@CentOS7.0jinbusi]#groupmems -g root -a jinbusi

            [root@CentOS7.0jinbusi]#groups jinbusi

            jinbusi : jinbusi root

            [root@CentOS7.0jinbusi]#chmod u=sx,g=x,o=x testid

            [root@CentOS7.0jinbusi]#ll testid

            ---s--x--x. 1 root root 41480 5月  30 10:31 testid

            [jinbusi@CentOS7.0~]$./testid

            uid=1026(jinbusi) gid=1027(jinbusi) euid=0(root)组=1027(jinbusi) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

            [jinbusi@CentOS7.0~]$

    结论,SUID只是在进城的附带权限中增加EUID一条属性.程序执行为进程依然还是按照老方法.,结论不一定正确,但是之前的现象,可以用此结论解释的通.而且EUID的优先级高于UID从id与idiun中可以看出