Страницы

Поиск по вопросам

пятница, 1 февраля 2019 г.

UNIX права: что значит исполнение?

Есть чтение (4), запись (2) и исполнение (1) Что значит исполнение? Объясните простыми словами и примером.


Ответ

для файла это означает, что его можно выполнить, обратившись к нему:
либо по имени, поместив его в один из каталогов, перечисленных в переменной окружения PATH (или дополнив значение этой переменной путём к текущему местоположению этого файла) либо указав полный путь к файлу
понятно, что выполнить файл можно, только если он:
либо является скриптом и в первой строке у него указан корректный «shebang» либо является программой (скомпилированной под набор инструкций вашего процессора) и операционной системе «известно», как его загрузить в память и в какую точку передать управление

для каталога это означает, что можно прочитать не только имена файлов/каталогов, находящихся внутри данного каталога, но и их атрибуты (принадлежность, права доступа, время создания/модификации). пример:
создаём тестовый каталог, в нём создаём файл и ещё один каталог:
$ mkdir test $ touch test/file $ mkdir test/dir
сейчас мы видим атрибуты содержимого каталога test
$ ls -l test total 4 drwxr-xr-x 2 user user 4096 Apr 1 23:39 dir -rw-r--r-- 1 user user 0 Apr 1 23:38 file
а если уберём бит исполнимости с каталога test
$ chmod -x test
то увидим только имена содержащихся в нём файлов/каталогов:
$ ls -l test ls: cannot access test/dir: Permission denied ls: cannot access test/file: Permission denied total 0 d????????? ? ? ? ? ? dir -????????? ? ? ? ? ? file
и не сможем «заглянуть глубже», например, посмотреть содержимое каталога test/dir
$ ls -l test/dir ls: cannot access test/dir: Permission denied

Комментариев нет:

Отправить комментарий