【问题标题】:Ruby gem executable with SUID not working as it should带有 SUID 的 Ruby gem 可执行文件无法正常工作
【发布时间】:2017-03-28 05:48:26
【问题描述】:

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

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

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

所以,我的问题是:

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

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

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

$ sudo emerald_setup

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

有什么建议吗?

【问题讨论】:

    标签: ruby rubygems executable sudo suid


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-11
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2015-11-24
      • 2021-10-30
      • 1970-01-01
      相关资源
      最近更新 更多