删除Python中某些操作的root权限

Ric*_*son 10 python linux privileges sudo root

在我的Python脚本中,我执行了一些需要root权限的操作.我还创建和写入我不希望由root独占但由运行我的脚本的用户拥有的文件.

通常,我使用我的脚本sudo.有没有办法做到这一点?

rob*_*lep 11

你可以在uid之间切换os.seteuid().这不同之处os.setuid()在于您可以在需要时返回获取root权限.

例如,以root身份运行以下命令:

import os

open('file1', 'wc')

# switch to userid 501
os.seteuid(501)
open('file2', 'wc')

# switch back to root
os.seteuid(0)
open('file3', 'wc')
Run Code Online (Sandbox Code Playgroud)

这创建file1file3以root file2身份创建,但是作为具有uid 501的用户.

如果要确定哪个用户正在调用脚本,请sudo设置两个环境变量:

SUDO_USER
SUDO_UID
Run Code Online (Sandbox Code Playgroud)

分别是呼叫用户的用户名和用户名sudo.所以,你可以用int(os.environ['SUDO_UID'])与使用os.seteuid().