【问题标题】:setuid doesn't take effectsetuid 不生效
【发布时间】:2012-12-11 08:51:28
【问题描述】:

假设有用户 A 和 B,属于不同的组。并且其中的机器人不是root

首先,作为用户 A。

1) touch a.txt; echo "hello word" > a.txt
2)chmod 600
3) touch b
4) echo "cat a.txt" > b
5) chmod 4755 b

然后切换到用户 B,我的假设是用户 B 可以成功运行二进制文件并获得问候语“hello word”,但是当我实际以用户 B 身份运行二进制文件时,我得到了“权限被拒绝”。所以为什么?

【问题讨论】:

  • 你的意思是2)chmod 600 a.txt?而且,您应该提供完整的错误消息,例如 cat: can't open 'a.txt': Permission denied,因为它可能包含有用的信息。

标签: linux setuid


【解决方案1】:

Linux 没有实现对S_ISUID 位脚本文件的处理;而是使用解释器(shell)的模式位。

【讨论】:

    【解决方案2】:

    setuid 文件的概念意味着,如果您在文件上打开了setuid bit,则执行该命令(文件)的任何人都将继承文件所有者的权限。

    $ chmod 4755 b --verbose
    mode of `b' changed to 4755 (rwsr-xr-x)
    

    我怀疑用户 A 和 B 属于不同的组,所以你也需要做setgid。这可以通过添加 2 来完成,对于 setuid 和 setgid 都添加 6。

    $ chmod 6755 b --verbose
    mode of `b' changed to 6755 (rwsr-sr-x)
    

    【讨论】:

      猜你喜欢
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      相关资源
      最近更新 更多