Я на Mac. Я хочу сделать так, чтобы любые новые файлы / папки, создаваемые в определенной папке, имели те же разрешения (а не группы, о которых уже позаботились), как и у родительского каталога. В Linux я обычно использовал бы setfacl, но похоже, что chmod на Mac может сделать то, что я ищу. Я прочитал справочную страницу для chmod, но все еще не могу понять, как правильно отформатировать команду, чтобы получить то, что я хочу.
23
Ответы:
Во-первых, немного предыстории, чтобы объяснить, что происходит: к файлам в OS X могут применяться два совершенно разных типа настроек разрешений: POSIX и ACL.
К файлам всегда (ну, почти всегда) применяются разрешения POSIX, состоящие из владельца, группы и других (с некоторыми комбинациями чтения, записи и выполнения для каждого из них). Невозможно управлять наследованием разрешений POSIX: новые элементы всегда принадлежат тому, кто их создал, назначение группы наследуется из папки, в которой они находятся, и доступ определяется с помощью umask (что почти всегда так: владелец получает полный доступ, группы и другие только для чтения + выполнить для папок). Таким образом, разрешения POSIX не сработают для того, что вы пытаетесь сделать.
К файлам также может быть применен список контроля доступа (ACL). Это список записей управления доступом (ACE), каждая из которых относится к пользователю или группе, определяет типы доступа (очень подробно), разрешены ли они или запрещены, а также следует ли копировать ACE в элементы, созданные внутри папки. Этот последний бит - часть, которая делает это полезным для вас; вам нужно создать ACE в папке, в которой указана нужная вам группа, типы доступа и полное наследование.
chmod на OS X может манипулировать ACE с помощью опций разрешений + a, -a и т. д. Если я понимаю, что вы хотите, вы бы использовали это (с заменой имени вашей группы и пути к папке), чтобы создать ACE:
Обратите внимание, что наследование не является «живым», то есть оно не применяется к элементам, созданным до того, как вы назначили ACE, и оно не применяется к элементам, созданным где-то еще, а затем перемещенным в папку. Вы можете применить его к существующему содержимому с помощью -R (
chmod -R +a ...
). Я не знаю способа (кроме инструментов администратора сервера Apple) принудительно наследовать элементы, перемещенные в папку.источник
ls -l
показывает только разрешения POSIX (хотя «+» после разрешений указывает на наличие ACL). Используйтеls -le
для отображения ACL, а также.chmod +a ...
команде, затем я создал abc.txt в папке. Переключившись на другого пользователя и отредактировав его с помощью TextEdit, файл обозначен как заблокированный и недоступен для редактирования.Попробуйте добавить
-R
в команду @ gordon, вот так:-R
Вариант будет (как отмечено здесь ):Кажется, вам нужно изменить файловые иерархии (для новых файлов, каталогов и т. Д.).
Вы также можете ознакомиться с этим постом Apple.SE , в котором описывается ситуация, в некоторой степени похожая на вашу (за исключением относящейся к общему каталогу), которая требует
sudo
прикрепления к передней части.источник
Это (-R) не то, что большинство людей стремятся сделать; Большую часть времени они предпочитают изменить ACL на верхнем каталоге и сделать что-то волшебное, чтобы заставить все содержащиеся объекты наследовать флаги в соответствии с ACL, который они указали в корне этого поддерева. Это гораздо более элегантно, так как ACL на объектах будут сортировать эти унаследованные ACE в соответствии с политикой.
И да, для этого мне пришлось написать скрипт на python, но я не нашел ничего подходящего.
источник
chmod + ai, i = наследовать правила acl
источник
На Mac попробуйте использовать PathFinder , это упрощает настройку ACL и POSIX. Если вы размещаете WordPress на Mac-сервере, вам также необходимо установить его
define('FS_METHOD', 'direct');
в файле wp-config.php, чтобы при установке плагинов и обновлении не запрашивались детали FTP.Таким образом, в основном вы сохраняете разрешения POSIX по умолчанию и добавляете пользователя _www (не группы) в ACL, затем нажимаете «Распространение разрешений» в окне ACL.
источник