Я пытаюсь использовать os.setuid в неразделенном пользовательском пространстве имен, но он возвращает ошибку, которую я не могу найти нигде.
Код (это MRE, а не часть моей программы) ):
Код: Выделить всё
import os
os.unshare(os.CLONE_NEWUSER) # this unshares the user namespace, which should allow me to setuid (it is fake-ish)
os.setuid(0) # err
os.setgid(0) # err
os.system('/bin/bash') # launch bash
Ошибка:
Код: Выделить всё
$ python mre.py
Traceback (most recent call last):
File "path/to/mre/mre.py", line 3, in
os.setuid(0)
OSError: [Errno 22] Invalid argument
Я использую Python 3.12.4 в Manjaro Linux. Он не работает при запуске от имени пользователя root или обычного пользователя. Python не имеет setuid, и я могу отменить совместное использование пространства имен пользователя (поскольку это не дает сбоя, это делает setuid, и я почти уверен, что unshare не дает сбоя молча.). Ошибка возникает только в том случае, если я отключу доступ к пространству имен пользователя.
Может ли кто-нибудь мне помочь?
Подробнее здесь:
https://stackoverflow.com/questions/786 ... d-argument