ruby - 在 ruby​​ 中调用具有 root 权限的函数?

标签 ruby linux unix permissions root

我知道在 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

是否有任何 gem 可以帮助实现它或有任何想法?

提前致谢。

最佳答案

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

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

关于ruby - 在 ruby​​ 中调用具有 root 权限的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489937/

相关文章:

ruby-on-rails - HTTParty 的内存问题和下载大文件

ruby-on-rails - message.body.decoded 电子邮件显示一团糟

linux - 将数据转换为指定形式

linux - 如何根据标签将单个 XML 文件拆分为多个

unix - 为什么 sed 删除最后一行?

ruby-on-rails - Facebook Canvas 应用程序不保存 session

ruby - VSCode : Rubocop version of project gem seems to differ from version vscode uses

linux - 升级 GCC 后 MySQL++ 库不工作

c - C中的多线程无法正常工作

C 字符串比较失败?