gpt4 book ai didi

python - "Operation not permitted"使用 setuid() 函数删除权限时

转载 作者:太空狗 更新时间:2023-10-29 22:02:04 25 4
gpt4 key购买 nike

为什么这个使用 os.setuid()/gid() 的简单程序会失败?是用 python 编写的,但我认为这不是语言相关的问题(最后都是相同的 posix 系统调用):

import os, pwd

if os.getenv("SUDO_UID") and os.getenv("SUDO_GID"):
orig_uid=int(os.getenv("SUDO_UID"))
orig_gid=int(os.getenv("SUDO_GID"))
else:
pw = pwd.getpwnam("nobody")
orig_uid = pw.pw_uid
orig_gid = pw.pw_gid

print os.getuid(), os.getgid(), os.geteuid(), os.getegid(), orig_uid, orig_gid

os.setgid(orig_gid)
os.setuid(orig_uid)

它返回这个异常:

$ sudo python provgid.py 
0 0 0 0 1000 1000
Traceback (most recent call last):
File "provgid.py", line 15, in <module>
os.setgid(orig_gid)
OSError: [Errno 1] Operation not permitted

错误是什么?

最佳答案

只有 super 用户或具有 CAP_SETGID 能力的进程才可以设置 GID。 setuid() 调用后,有效的 UID 不再是 0,所以您不能再调用 setgid()。尝试重新排序这两个调用。

关于python - "Operation not permitted"使用 setuid() 函数删除权限时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com