首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么即使一个python文件的权限是644,它也是可执行的?

为什么即使一个python文件的权限是644,它也是可执行的?
EN

Ask Ubuntu用户
提问于 2013-12-24 10:20:07
回答 2查看 6.2K关注 0票数 7

我想我有点误会了。我制作了一个简单的python测试文件,以了解权限如何影响python文件的使用。我这么做是为了能够回答64位ubuntu12.04蟒无法运行现有python文件

SetUp

我制作了一个包含内容的test.py文件

代码语言:javascript
复制
print 'I am working'

测试用例1

代码语言:javascript
复制
ls -al test.py 
-rw-r--r-- 1 joey joey 25 Dec 24 11:11 test.py
python test.py
I am working
  • 尽管我没有执行chmod +x test.py,但是python为什么要执行这个文件呢?

测试用例2

代码语言:javascript
复制
chmod 400 test.py
ls -al test.py 
-r-------- 1 joey joey 25 Dec 24 11:11 test.py
python test.py
I am working

显然python只需要读取权限才能执行我的文件?

测试用例3

代码语言:javascript
复制
chmod 200 test.py
ls -al test.py 
--w------- 1 joey joey 25 Dec 24 11:11 test.py
python test.py
python: can't open file 'testo.py': [Errno 13] Permission denied

写入权限不足(对于记录而言,只有可执行权限也不足)。

  • 为什么python在没有可执行权限的情况下执行文件?
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2013-12-24 10:47:24

是的,Python只需要读取文件内容。回想一下Python是一种解释语言(如PHP、Ruby等)只需处理该文件的内容,而不是执行它;python是这里的可执行文件!

有关适当的背景信息,请注意,您可以以两种方式运行脚本:

  • 使用文件作为输入/参数调用解释器不需要读取权限,例如: python
  • 按其谢邦运行脚本确实需要可执行位集,因为它将启动一个新进程,即Python解释器。./myscript.py -- shebang (文件中的第一行)--应该类似于#!/usr/bin/env来定义该文件的解释器。

注:在以前一种形式运行时(因此被忽略),这样的shebang行也是Python中的注释,因此它可以双向工作。如果一次运行需要不同的解释器版本,例如python3.10 myscript.py (如果您不喜欢默认的python ),则可能对用户有用。这就是为什么您可能会看到后一种形式在任何入口点/脚本中都相当常见的原因。

票数 9
EN

Ask Ubuntu用户

发布于 2013-12-24 10:31:44

"python只需要读取权限“来读取文件的内容并处理代码。

您的用户可以执行python。然后python可以读取文件(因为400)。如果您希望像“./tum.py”那样直接执行文件,那么您需要文件的执行权限。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/395124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档