У меня есть следующий bash-скрипт:
echo "$(id -u)"
mkdir test
Мой собственный идентификатор пользователя — 1000. Теперь, когда я запускаю python3.5 без прав root и запускаю скрипт через subprocess.check_output
, скрипт работает, как и ожидалось, и создает папку, которая принадлежит мне. Однако, когда я запускаю python с помощью sudo, а затем использую os.setegid(1000); os.setuid(1000)
, скрипт выводит 0, а папка «test» принадлежит пользователю root. Хотя я понимаю, что echo "$(id -u)"
может быть желательным поведением, я не понимаю, почему эта папка принадлежит пользователю root. Разве функция os.seteuid()
не должна этому препятствовать?
Мой точный вызов:
>>> os.setegid(1000)
>>> os.seteuid(1000)
>>> subprocess.check_output(["/.script.sh"])
В результате папка «test» принадлежит пользователю root. Является ли это желаемым поведением, и если да, то есть ли способ запустить скрипт как обычный пользователь, сохраняя при этом возможность вернуться к root-правам в скрипте python (т.е. не устанавливая «настоящий» uid?)