【问题标题】:Call a function with root's permission in ruby?在ruby中调用具有root权限的函数?
【发布时间】:2012-07-14 10:51:27
【问题描述】:

我知道在 shell 脚本中我可以做到这一点:

#!/bin/sh

foo() {
    rm -rf /
}

foo # fail
sudo foo # succeed

为了在 ruby​​ 中实现这一点,我现在使用一个单独的脚本文件来存储那些需要 root 权限的操作,然后像 system(['sudo', 'ruby', 'sudo_operations.rb', 'do_rm_rf_root']) 这样调用主脚本。

如果我可以直接调用该函数而不将其分离出来,那就更好了。例如,我想知道这样的事情:

def sudo(&method_needs_root_privilege)
    # ...
end

然后我可以这样使用:

sudo do
    puts ENV['UID'] # print 0
    system('rm -rf /') # successfully executed
end

是否有任何帮助或任何想法来实现这一点?

提前致谢。

【问题讨论】:

    标签: ruby linux unix permissions root


    【解决方案1】:

    没有。 UID/GID 只存在于进程级别;函数不能作为与进程的其余部分不同的用户(例如 root)运行。

    虽然进程可以更改其 uid(使用 set*id 系列系统调用),但进程必须已经以 root 身份运行才能这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多