为什么Python的subprocess.run()可以运行权限为600的文件?

为什么Python的subprocess.run()可以运行权限为600的文件?

a.out是一个简单的 C 程序,打印“hello world”并拥有权限 600:

-rw-------  1 jim jim  16K Jan  9 12:23 a.out

因此,可以理解的是,当我尝试运行它时./a.out,我得到了bash: ./a.out: Permission denied

然而,当我尝试从 Python 脚本运行相同的文件时,a.out 该文件会在不请求任何权限的情况下执行。我的Python脚本是:

#!/usr/bin/env python3

from subprocess import run

run("a.out") 
#run("a.out", shell=True) #this works just as well

为什么会这样呢?这是一个安全风险吗?我该如何缓解它?

PS 我使用 Ubuntu Desktop 22.04 LTS。

相关内容