【问题标题】:can any user change uid/gid using setuid()/setgid?任何用户都可以使用 setuid()/setgid 更改 uid/gid 吗?
【发布时间】:2010-09-23 00:23:20
【问题描述】:

还是只有root可以? 我想从 .sh 脚本更改非 root 用户的 uid/gid 通过调用 setuid/setgid。有可能吗?

【问题讨论】:

    标签: unix


    【解决方案1】:

    默认情况下,只有 root 可以使用 setuid/setgid。也许与 selinux 或类似的东西。

    【讨论】:

      【解决方案2】:

      sh(1)(Bourne shell)没有可用的 setuid 或 setgid 命令。实际上setuid(2) 和 setgid() 是系统调用,只能在 C 或 Perl 等编程语言中使用(以及除了 shell 脚本之外的几乎任何代码)。即使可用,这些调用在以非 root 用户身份调用时也具有有限的实用性。这些调用没有赋予真实用户不可用的特权。

      还有文件模式setuid(setuid bitset)或者setgid(意思是setgid位集);但这些仅适用于二进制可执行文件,而不是(通常)适用于 sh 脚本*。

      对于普通用户以不同用户身份运行命令而无需重新输入密码,即使是从脚本中,使用sudo(8) 命令。 Sudo 需要系统管理员进行配置。

      还有其他方式可以充当不同的用户;但都涉及调用已被超级用户祝福(设置了setuid bit)的外部可执行文件,或者让其他用户的进程执行任务。

      另见
      sudo(8) sudo 命令
      setuid(2) setuid 系统调用

      setuid bit访问方式
      *Setuid on Shell Scripts
      How can I get setuid shell scripts to work?

      相关命令
      sh(1), sg(1), su(1)

      【讨论】:

        猜你喜欢
        • 2010-12-02
        • 2020-05-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        • 2017-02-15
        • 1970-01-01
        • 2014-08-23
        相关资源
        最近更新 更多