Module: Roebe::Process

Defined in:
lib/roebe/modules/as_uid.rb

Class Method Summary collapse

Class Method Details

.as_uid(uid) ⇒ Object

#

Roebe::Process.as_uid

Usage example:

Dir.mkdir('as_root')

Roebe::Process.as_uid(1000) {
  mkdir('as_user')
  %x{whoami}
}

You can also use the name of the user, such as in:

Roebe::Process.as_uid('debug') {
#


41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/roebe/modules/as_uid.rb', line 41

def self.as_uid(uid)
  old_euid, old_uid = ::Process.euid, ::Process.uid
  ::Process.euid, ::Process.uid = uid, uid

  begin
    if block_given?
      yield
    end
  ensure
    ::Process.euid, ::Process.uid = old_euid, old_uid
  end
end

.as_user(user_name) ⇒ Object

#

Roebe::Process.as_user

#


16
17
18
19
20
21
22
# File 'lib/roebe/modules/as_uid.rb', line 16

def self.as_user(user_name)
  uid = Etc.getpwnam(user_name).uid

  Process.as_uid(uid) {
    yield if block_given?
  }
end

.mkdir(i) ⇒ Object

#

Roebe::Process.mkdir

#


57
58
59
# File 'lib/roebe/modules/as_uid.rb', line 57

def self.mkdir(i)
  Dir.mkdir(i)
end