我正在尝试编写一个需要 root 权限的程序,但是无论何时运行它都会引发权限错误。是否有更好的方法以 root 身份运行程序而无需输入sudo 'example_script.rb'另外,是否有可能从 ruby 脚本内部请求“sudo”或检查用户在使用程序时是否以 sudo 身份运行?谢谢!
您可以检查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)
您需要确保您对任何类型的任何用户数据所做的任何事情,无论您认为自己筛选得多么仔细,都会受到极大的怀疑。对于任何可以读取或写入文件的操作尤其如此。
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |