На странице написано:
выполнять / искать, только если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя ( 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для +операций.)
---, ---, ---- индо без "набора битов"?