【问题标题】:Python subprocess permissionPython子进程权限
【发布时间】:2018-10-02 20:55:18
【问题描述】:

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

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

sudo python3 file.py

file.py 包含该行

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

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

【问题讨论】:

  • ...该命令实际上根本不会运行。必须是 subprocess.run(['chmod', '+x', 'file.sh']),除非通过了 shell=True(不应该这样)。
  • 不调用外部命令并做些什么呢:os.chmod(path, 0o755)
  • 将命令更新为有效。没有理由运行它。只是想举一个需要提升权限的命令示例。真实的例子很长:)

标签: python unix permissions subprocess


【解决方案1】:

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

但是,为了验证,让我们做一个小实验。

test.py

import subprocess
subprocess.run('whoami')

(现在,在终端上)

$ sudo python test.py
root
$

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 2017-02-21
    • 2011-05-31
    • 1970-01-01
    • 2011-10-16
    • 2017-05-21
    • 2017-12-12
    • 2019-05-03
    相关资源
    最近更新 更多