fixing pkexec in some distros

xkb
sezanzeb 4 years ago committed by sezanzeb
parent 0d60fd9977
commit 5604e9e18a

@ -25,6 +25,7 @@
import os import os
import shutil import shutil
import getpass import getpass
import pwd
from keymapper.logger import logger from keymapper.logger import logger
@ -32,20 +33,30 @@ from keymapper.logger import logger
def get_user(): def get_user():
"""Try to find the user who called sudo.""" """Try to find the user who called sudo."""
try: try:
user = os.getlogin() return os.getlogin()
except OSError: except OSError:
# failed in some ubuntu installations and in systemd services # failed in some ubuntu installations and in systemd services
pass
try:
user = os.environ['USER']
except KeyError:
# possibly the systemd service. no sudo was used
return getpass.getuser()
if user == 'root':
try:
return os.environ['SUDO_USER']
except KeyError:
# no sudo was used
pass
try: try:
user = os.environ['USER'] pkexec_uid = int(os.environ['PKEXEC_UID'])
if user == 'root': return pwd.getpwuid(pkexec_uid).pw_name
try:
user = os.environ.get('SUDO_USER', user)
except KeyError:
# no sudo was used
pass
except KeyError: except KeyError:
# possibly the systemd service. no sudo was used # no pkexec was used or the uid is unknown
user = getpass.getuser() pass
return user return user

Loading…
Cancel
Save