如何在 Ruby 中检查用户的 root 权限?

Pra*_*al1 5 ruby sudo root

我正在尝试编写一个需要 root 权限的程序,但是无论何时运行它都会引发权限错误。是否有更好的方法以 root 身份运行程序而无需输入sudo 'example_script.rb'另外,是否有可能从 ruby​​ 脚本内部请求“sudo”或检查用户在使用程序时是否以 sudo 身份运行?谢谢!

tad*_*man 6

您可以检查Process.uid:

case (Process.uid)
when 0
  # We're root!
else
  $stderr.puts("You must run this with root privileges via sudo")
end
Run Code Online (Sandbox Code Playgroud)

请记住,在编写以 root 身份运行的脚本时要格外小心。考虑这样的代码:

system("convert #{image_path} #{target_path}")
Run Code Online (Sandbox Code Playgroud)

这是一个巨大的安全漏洞,因为没有一个 shell 参数被正确地转义。

更安全的方法:

system("convert", image_path, target_path)
Run Code Online (Sandbox Code Playgroud)

您需要确保您对任何类型的任何用户数据所做的任何事情,无论您认为自己筛选得多么仔细,都会受到极大的怀疑。对于任何可以读取或写入文件的操作尤其如此。