Chr*_*fer 3 ruby ruby-on-rails
你可以作为不同的OS用户执行一段Ruby代码吗?
理想情况下,我想要的是这样的:
user("christoffer") do
# do something
end
Run Code Online (Sandbox Code Playgroud)
可能?
这段代码可以做你想要的.错误处理取决于您.;-)
require 'etc'
def as_user(user, &block)
u = Etc.getpwnam(user)
Process.fork do
Process.uid = u.uid
block.call(user)
end
end
puts("caller PID = #{Process.pid}")
puts("caller UID = #{Process.uid}")
as_user "bmc" do |user|
puts("In block as #{user} (uid=#{Process.uid}), pid is #{Process.pid}")
end
Run Code Online (Sandbox Code Playgroud)
但请注意,它将要求您运行Ruby as root或setuid-to- root,这具有一些严重的安全隐患.
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |