0

如下图所示,我将emerald_setup脚本的所有权更改为 root:root 并设置了 SUID。

在此处输入图像描述

碰巧当我安装 gem 并检查这个脚本时,它属于 edvaldo:edvaldo(我的​​用户名)并且根本没有 SUID!

在此处输入图像描述

我不知道到底发生了什么,但这个脚本会更改/etc/hosts并创建一些防火墙规则。这需要 root 权限。

所以,我的问题是:

  • 在这种 SUID 的情况下,我缺少什么?

  • 我必须如何确保 gem 可执行文件设置了 SUID?

当然我知道我可以要求用户使用

$ sudo emerald_setup

但这会给我带来另一个问题,因为 gem 可执行文件安装在用户空间中,并且它的位置不在超级用户的路径中,并且设置它(猜猜是什么?!)需要超级用户权限。

有什么建议么?

4

1 回答 1

1

您不能在 gem(甚至 tarball)中打包具有 suid 权限的程序/脚本,并且在以普通用户身份解包时恢复这些权限。在某些时候,安装您的 gem 的人将提供 root 访问的密码。您可以安排在安装 gem 时发生这种情况,方法是让 gem Rakefile 的 :install 目标运行一个脚本,提示用户输入 su(do) 密码,然后使用 sudo 运行需要运行的命令根,虽然。

于 2017-04-15T20:35:26.927 回答