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
$