def change_privilege(user, group=user)
log_info "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
File.chown(target_uid, target_gid, @pid_file) if File.exists?(@pid_file)
Process.initgroups(user, target_gid)
Process::GID.change_privilege(target_gid)
Process::UID.change_privilege(target_uid)
end
rescue Errno::EPERM => e
log_info "Couldn't change user and group to #{user}:#{group}: #{e}"
end