我正在尝试构建一个平台来启动一些脚本。此脚本放置在每个用户的主文件夹中。每次启动都应该用每个用户 ID 完成,所以我正在为每个用户这样做:
user_id = pwd.getpwnam( user )[ 3 ]
user_home = pwd.getpwnam( user )[ 5 ]
os.chdir( user_home )
os.setuid( user_id )
subprocess.Popen( shlex.split( "user_script.py" ) )
但是,当 python 尝试执行 os.setuid( user_id )
时,它会引发此异常:
Traceback (most recent call last):
File "launcher.py", line XX, in <module>
OSError: [Errno 1] Operation not permitted
顺便说一下,启动这个脚本的用户在 root 组中(在 GNU/linux 操作系统上),它拥有所有的 root 权限。
如果我尝试使用 root 用户启动相同的代码,我会得到不同的错误:
OSError: [Errno 13] Permission denied
如果有人可以帮助我了解发生了什么,请...
最佳答案
只有 root 可以执行 setuid,在 root 组中是不够的。
关于python - "Operation not permitted"关于使用 os.setuid() [python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529252/