mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-07-11 23:21:57 +00:00
fix setuid/setgid when running rootless (#892)
This commit is contained in:
@@ -116,29 +116,27 @@ def get_username() -> str:
|
|||||||
return _get_user()
|
return _get_user()
|
||||||
|
|
||||||
def setgid(user : UserType = UserType.HOST_USER):
|
def setgid(user : UserType = UserType.HOST_USER):
|
||||||
user_id = 0
|
host_user_group_id, effective_user_group_id = _get_user_group_id(), _get_effective_user_group_id()
|
||||||
|
if host_user_group_id == effective_user_group_id:
|
||||||
if user == UserType.HOST_USER:
|
pass
|
||||||
user_id = _get_user_group_id()
|
elif user == UserType.HOST_USER:
|
||||||
|
os.setgid(host_user_group_id)
|
||||||
elif user == UserType.EFFECTIVE_USER:
|
elif user == UserType.EFFECTIVE_USER:
|
||||||
pass # we already are
|
os.setgid(effective_user_group_id)
|
||||||
else:
|
else:
|
||||||
raise Exception("Unknown user type")
|
raise Exception("Unknown user type")
|
||||||
|
|
||||||
os.setgid(user_id)
|
|
||||||
|
|
||||||
def setuid(user : UserType = UserType.HOST_USER):
|
def setuid(user : UserType = UserType.HOST_USER):
|
||||||
user_id = 0
|
host_user_id, effective_user_id = _get_user_id(), _get_effective_user_id()
|
||||||
|
if host_user_id == effective_user_id:
|
||||||
if user == UserType.HOST_USER:
|
pass
|
||||||
user_id = _get_user_id()
|
elif user == UserType.HOST_USER:
|
||||||
|
os.setuid(host_user_id)
|
||||||
elif user == UserType.EFFECTIVE_USER:
|
elif user == UserType.EFFECTIVE_USER:
|
||||||
pass # we already are
|
os.setuid(effective_user_id)
|
||||||
else:
|
else:
|
||||||
raise Exception("Unknown user type")
|
raise Exception("Unknown user type")
|
||||||
|
|
||||||
os.setuid(user_id)
|
|
||||||
|
|
||||||
async def service_active(service_name : str) -> bool:
|
async def service_active(service_name : str) -> bool:
|
||||||
res, _, _ = await run(["systemctl", "is-active", service_name], stdout=DEVNULL, stderr=DEVNULL)
|
res, _, _ = await run(["systemctl", "is-active", service_name], stdout=DEVNULL, stderr=DEVNULL)
|
||||||
return res.returncode == 0
|
return res.returncode == 0
|
||||||
|
|||||||
Reference in New Issue
Block a user