Python子进程权限

Python子进程权限,python,unix,permissions,subprocess,Python,Unix,Permissions,Subprocess,当通过subprocess.run执行命令时,该命令的执行权限是什么?它是封闭python文件的权限吗?是用户权限吗 例如,如果使用sudo运行python文件: sudo python3 file.py 而file.py包含该行 subprocess.run([ 'chmod', '+x', 'file.sh' ]) chmod是否会以超级用户权限运行?直觉上,它应该是这样的,因为通过sudo,您正在为脚本本身授予超级用户权限-这意味着它运行的命令将由超级用户有效执行 然而,为了验证,

当通过
subprocess.run
执行命令时,该命令的执行权限是什么?它是封闭python文件的权限吗?是用户权限吗

例如,如果使用sudo运行python文件:

sudo python3 file.py
而file.py包含该行

subprocess.run([ 'chmod',  '+x',  'file.sh' ])

chmod
是否会以超级用户权限运行?

直觉上,它应该是这样的,因为通过
sudo
,您正在为脚本本身授予超级用户权限-这意味着它运行的命令将由超级用户有效执行

然而,为了验证,让我们做一个小实验

test.py

import subprocess
subprocess.run('whoami')
(现在,在终点站)


因此,
chmod
将以超级用户权限运行,是的。

…该命令实际上根本不会运行。它需要是
subprocess.run(['chmod','+x','file.sh'])
,除非传递了
shell=True
(不应该是)。不调用外部命令并执行以下操作如何:
os.chmod(path,0o755)
更新了命令以使其有效。没有理由这么做;只是想给出一个需要提升权限的命令示例。真正的例子很长:)
$ sudo python test.py
root
$