带有SUID的Ruby gem可执行文件无法正常工作

时间:2017-03-28 05:48:26

标签: ruby rubygems executable sudo suid

正如您在下图中看到的,我将emerald_setup脚本的所有权更改为root:root并设置了SUID。

enter image description here

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

enter image description here

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

所以,我的问题是:

  • 在SUID的这个案例中我缺少什么?

  • 我该怎样继续确保gem可执行文件设置了SUID?

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

运行此脚本
$ sudo emerald_setup

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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