Sha256: aa5cbb59f1c2ae38a7dd6cd10a2ece8036c5255318010331a9497efc91733caf

Contents?: true

Size: 584 Bytes

Versions: 4

Compression:

Stored size: 584 Bytes

Contents

require 'daemons/etc_extension'

class CurrentProcess
  def self.change_privilege(user, group = user)
    puts "Changing process privilege to #{user}:#{group}"

    uid, gid = Process.euid, Process.egid
    target_uid = Etc.getpwnam(user).uid
    target_gid = Etc.getgrnam(group).gid

    if uid != target_uid || gid != target_gid
      Process.initgroups(user, target_gid)
      Process::GID.change_privilege(target_gid)
      Process::UID.change_privilege(target_uid)
    end
  rescue Errno::EPERM => e
    raise "Couldn't change user and group to #{user}:#{group}: #{e}"
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/daemons-1.2.3/lib/daemons/change_privilege.rb
daemons-1.2.3 lib/daemons/change_privilege.rb
daemons-1.2.2 lib/daemons/change_privilege.rb
daemons-1.2.1 lib/daemons/change_privilege.rb