На странице написано:
выполнять / искать, только если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя ( X
)
POSIX говорит:
Завивка символ X должен представлять выполнение / поиск часть битов режима файла , если файл является каталогом или , если ток (неизмененные) биты режима файла имеют по крайней мере один из битов выполнения (S_IXUSR, S_IXGRP или S_IXOTH) множество. Он должен игнорироваться, если файл не является каталогом, и ни один из битов выполнения не установлен в текущих битах режима файла.
Это флаг условного разрешения: chmod
смотрит на то, что он обрабатывает в данный момент, и если это каталог, или если у него установлен бит выполнения в текущих разрешениях (владелец, группа или другое), он действует так, как если бы запрошенное разрешение было x
, в противном случае он игнорирует это. Условие проверяется в то время, когда chmod
применяется конкретная X
инструкция, поэтому вы можете очистить биты выполнения за один и тот же запуск, a-x,a=rwX
чтобы установить только исполняемый бит для каталогов.
Вы можете увидеть, имеет ли файл установленный бит выполнения, посмотрев на часть «access» в stat
выводе или в первом столбце ls -l
. Биты выполнения представлены как x
. -rwxr-xr-x
является общим для исполняемых файлов и указывает, что исполняемый бит установлен для владельца, группы и других пользователей; -rw-r--r--
является общим для других файлов и указывает, что исполняемый бит не установлен (но бит чтения установлен для всех, а бит записи для владельца). Посмотрите Понимание разрешений UNIX и их атрибутов, у которого есть намного больше деталей.
Таким образом, в вашем примере u=rwX
задает права владельца на чтение и запись во всех случаях, а для каталогов и исполняемых файлов - выполнение; аналогично для group ( g=rX
) и other ( o=rX
), чтение и выполнение для каталогов и исполняемых файлов.
Назначение этого оператора - дать пользователю возможность предоставлять chmod
различные файлы и каталоги и получать правильные разрешения на выполнение (при условии, что ни в одном из файлов не установлен недопустимый бит выполнения). Это позволяет избежать необходимости различать файлы и каталоги (как в традиционных find . -type f -exec chmod 644 {} +
и find . -type d -exec chmod 755 {} +
командах), и пытается разумно обращаться с исполняемыми файлами .
(Обратите внимание , что MacOSchmod
поддерживает , очевидно , только X
для +
операций.)
---, ---, ---
- индо без "набора битов"?