Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有SUID的Ruby-gem可执行文件不能正常工作_Ruby_Rubygems_Executable_Sudo_Suid - Fatal编程技术网

具有SUID的Ruby-gem可执行文件不能正常工作

具有SUID的Ruby-gem可执行文件不能正常工作,ruby,rubygems,executable,sudo,suid,Ruby,Rubygems,Executable,Sudo,Suid,如下图所示,我将emerald\u设置脚本的所有权更改为root:root,并设置了SUID 碰巧,当我安装gem并检查这个脚本时,它属于edvaldo:edvaldo(我的用户名),并且根本没有SUID 我不知道到底发生了什么,但是这个脚本对/etc/hosts进行了更改,还创建了一些防火墙规则。这需要根权限 因此,我的问题是: 我在这起诉讼案中遗漏了什么 我必须如何确保gem可执行文件将设置SUID 当然,我知道我可以让用户使用 $ sudo emerald_setup 但这将导致

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

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

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

因此,我的问题是:

  • 我在这起诉讼案中遗漏了什么

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

当然,我知道我可以让用户使用

$ sudo emerald_setup
但这将导致我遇到另一个问题,因为gem可执行文件安装在用户空间中,其位置不在超级用户的路径中,设置它(猜怎么着?!)需要超级用户权限


有什么建议吗?

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