我正在尝试创建一个 ruby 脚本,当由非特权用户运行时,该脚本将以 root 权限执行。基本上,我正在编写一个包装器脚本,该脚本在运行时将用户添加到组,运行命令,然后将用户从组中删除。这一切都在 CentOS 下进行,并且不使用 sudo。
我尝试过让脚本由 root 拥有,然后 chmod +s,据我所知,这应该以 root 权限运行脚本。但是,当我system "gpasswd -a #{user} #{group}"
在脚本中运行 ruby 命令时,我收到一条权限被拒绝的消息。
我现在有点困惑,不知道该如何让它工作。
谢谢
答案1
除非解释器具有 setuid 版本(它在看到 setuid 脚本时会调用该版本),否则设置脚本 setuid 不起作用。您需要一个已编译的 setuid 包装器来运行该脚本。
另外,请注意,组成员身份更改只有在用户重新登录后才会生效。也许您应该考虑配置用户模式或 PolicyKit。
答案2
Sudo 是适合这项工作的工具,您应该考虑安装它。