3
Rubyコードのブロックを別のOSユーザーとして実行できますか?特定のOSユーザーとしてRubyブロックを実行しますか?
user("christoffer") do
# do something
end
可能:私は、理想的には、何をしたいです
はこのようなものでしょうか?
Rubyコードのブロックを別のOSユーザーとして実行できますか?特定のOSユーザーとしてRubyブロックを実行しますか?
user("christoffer") do
# do something
end
可能:私は、理想的には、何をしたいです
はこのようなものでしょうか?
このコードは、あなたが望むことができます。エラー処理はあなた次第です。 ;-)
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
ただし、それはあなたがroot
としてのRubyを実行する、またはいくつかの深刻なセキュリティ上の意味を持っている、root
setuidをツーとすることを必要とすること。
Windowsでも同じようなことができるのですか? :) – Feytality
これはPOSIXオペレーティングシステム(LinuxまたはMac)で動作しています。 また、なぜこれをやりたいのですか? – Maz
Ubuntu Server、はい。私はいくつかの異なるユーザーのためのgitリポジトリで動作しているRoRアプリケーションを持っています。プッシュ&プルするには、git-scriptsを特定のユーザーとして実行して、そのユーザーのsshキーを使用できるようにします。 – Christoffer