3
Ruby 코드 블록을 다른 OS 사용자로 실행할 수 있습니까?Ruby 블록을 특정 OS 사용자로 실행 하시겠습니까?
user("christoffer") do
# do something
end
가능한 : 내가 이상적으로 원하는 것은
이 같은 것입니다?
Ruby 코드 블록을 다른 OS 사용자로 실행할 수 있습니까?Ruby 블록을 특정 OS 사용자로 실행 하시겠습니까?
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
로 루비를 실행하거나 일부 심각한 보안 문제를 가지고있는, root
setuid를 간으로해야됩니다.
Windows에서 이와 비슷한 종류의 작업을 수행하려면 어떻게해야합니까? :) – Feytality
이것은 POSIX 운영 체제 (Linux 또는 Mac)에서 실행 중입니까? 또한 왜이 작업을 수행 하시겠습니까? – Maz
우분투 서버, 예. 몇 가지 다른 사용자를 위해 git-repositories로 작업하는 RoR 애플리케이션이 있습니다. push and pull하기 위해서는 git-scripts를 특정 사용자로 실행하여 해당 사용자의 ssh-keys를 사용할 수 있도록하십시오. – Christoffer