正如您在下图中看到的,我将emerald_setup
脚本的所有权更改为root:root并设置了SUID。
当我安装gem并检查此脚本时,它属于edvaldo:edvaldo(我的用户名)并且根本没有SUID!
我不确切知道发生了什么,但此脚本会对/etc/hosts
进行更改,并会创建一些防火墙规则。这需要root权限。
所以,我的问题是:
在SUID的这个案例中我缺少什么?
我该怎样继续确保gem可执行文件设置了SUID?
当然我知道我可以要求用户使用
运行此脚本$ sudo emerald_setup
但是这会导致另一个问题,因为gem可执行文件安装在用户空间中,并且它的位置不在超级用户的路径中并设置它(猜猜是什么?!)需要超级用户权限。
有什么建议吗?
答案 0 :(得分:1)
您无法在gem(甚至是tarball)中使用suid权限打包程序/脚本,并且在以普通用户身份解压缩时可以恢复这些权限。在某些时候,无论谁安装你的gem,都将提供root访问密码。您可以通过让gem Rakefile的:install目标运行一个脚本来提示用户输入su(do)密码然后使用sudo来运行需要运行的命令来安排安装gem时发生这种情况。但是,根。