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)
这创建file1
并file3
以root file2
身份创建,但是作为具有uid 501的用户.
如果要确定哪个用户正在调用脚本,请sudo
设置两个环境变量:
SUDO_USER
SUDO_UID
Run Code Online (Sandbox Code Playgroud)
分别是呼叫用户的用户名和用户名sudo
.所以,你可以用int(os.environ['SUDO_UID'])
与使用os.seteuid()
.