Почему файл Python является исполняемым, хотя его разрешения равны 644?

1112 Я думаю, что что-то здесь неправильно понимаю. Я сделал простой файл тестирования Python, чтобы увидеть, как разрешения влияют на использование файлов Python. Я сделал это, чтобы иметь возможность ответить 64-битный Ubuntu 12.04 Python не может запустить существующий файл Python

SetUp

Я создал файл test.py с содержимым

print 'I am working'

Тестовый пример 1

ls -al test.py 
-rw-r--r-- 1 joey joey 25 Dec 24 11:11 test.py
python test.py
I am working
  • Почему python выполняет этот файл, хотя я не делал chmod +x test.py?

Тестовый пример 2

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

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 выполняет файлы без прав на выполнение?
4
задан 13 April 2017 в 15:24

2 ответа

Да, Python требует только чтение содержимого файла. Напомним, что Python является интерпретируемым языком (например, PHP, Ruby и т. Д.) И просто обрабатывает содержимое этого файла, а не выполняет его; python здесь исполняемый файл!

Для правильной справочной информации; обратите внимание, что вы можете запускать сценарии двумя способами:

  • Для вызова интерпретатора с файлом в качестве ввода / аргумента не требуются права доступа, кроме прав чтения, например:

    python myscript.py
    
  • Запустить сценарий по его шебангу . Требуется ли установить исполняемый бит.

    ./myscript.py
    

    Шебанг (первая строка в файле) выглядит примерно как

    #!/usr/bin/env python
    
.
0
ответ дан 13 April 2017 в 15:24

«python нужно только разрешение на чтение», чтобы прочитать содержимое вашего файла и обработать код.

ваш пользователь может выполнять Python. тогда python может читать файл (из-за 400). Если вы хотите выполнить файл напрямую, например, «./testo.py», вам нужны права на выполнение вашего файла.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: