【发布时间】:2012-10-27 22:32:08
【问题描述】:
在 /tmp 中打开文件时,我遇到了关于放弃 root 权限的问题。这是有问题的行:
open(filepath, 'wb')
当程序不使用 sudo 命令运行时,一切正常,这里是我 so os.stat 时的权限
posix.stat_result(st_mode=17407, st_ino=261652, st_dev=64512L, st_nlink=206, st_uid=1000, st_gid=1000, st_size=12288, st_atime=1352314677, st_mtime=1352316340, st_ctime=1352316340)
使用 sudo 命令运行程序时遇到问题。我尝试通过以下方式放弃特权
os.setegid(int(os.getenv("SUDO_GID")))
os.seteuid(int(os.getenv("SUDO_UID")))
并使用
重新启用它们os.seteuid(0)
os.setegid(0)
错误信息是
IOError: [Errno 13] Permission denied:
os.stat 产量
posix.stat_result(st_mode=17407, st_ino=261652, st_dev=64512L, st_nlink=204, st_uid=1000, st_gid=1000, st_size=4096, st_atime=1352314677, st_mtime=1352316329, st_ctime=1352316329)
理想情况下,我希望通过相应地删除并启用 root 权限来运行特定功能,就好像用户从未调用过 sudo 一样。
【问题讨论】:
-
你能发布完整的代码来重现问题吗?