python - "Operation not permitted"关于使用 os.setuid() [python]

标签 python operating-system privileges setuid

我正在尝试构建一个平台来启动一些脚本。此脚本放置在每个用户的主文件夹中。每次启动都应该用每个用户 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/

相关文章:

python - 在WingIDE中,当 "Always Report"被激活时,如何忽略特定位置的异常?

memory - 计算2级页表的大小

multithreading - 操作系统是否知道应用程序线程?

MySQL授予数据库除一张表之外的所有权限

python - 当管道传输到文件时分析 subprocess.Popen 的输出

python请求库传递逗号分隔的id作为参数

c++ - 为什么分配更大的空间时,堆地址的增长方向会相反?

c - 允许线程降低其自身 nice 的最便携(在 *nix 中)方式

php - Mac OSX Apache 写入权限

python - 我可以给这个 Django 表单一个作者吗?