Как рекурсивно изменить общий доступ / разрешение папки в Mac OS X

55

Существуют ли какие-либо инструменты или сценарии Mac OS X, которые позволяют рекурсивно изменять свойства общего доступа / разрешения для файлов и подпапок в папке? Например, чтобы каждый или конкретный пользователь мог читать и писать, только для чтения или только для записи.

пури
источник

Ответы:

75

Попробуйте команду chmod. Например, если у вас есть имя каталога mydir, следующая команда включит чтение / запись для этого mydir рекурсивно.

$ chmod -R +rw mydir

Для дополнительной информации:

$ man chmod
Хай вю
источник
19
Хороший ответ, плохой пример. При добавлении прав доступа для чтения и / или записи к папкам необходимо также добавить доступ для выполнения («x», или «поиск»), иначе r / w бесполезны. С другой стороны, вы обычно не хотите добавлять команду execute к файлам. Делая рекурсивные изменения, вы работаете с различными файлами и папками. Ответ заключается в том, чтобы использовать функцию «умного выполнения» (заглавной X) в chmod: chmod -R +rwX mydirдобавит выполнение только тогда, когда это имеет смысл.
Гордон Дэвиссон
Гордон: Отличное наблюдение. Тем не менее, каталог обычно включает x, если пользователь не делает что-то напуганное, чтобы отключить его.
Хай Ву
1
Зависит от начальных разрешений. Например, если вы посмотрите на домашнюю папку Mac с конфигурацией по умолчанию, вы увидите, что для большинства папок («Рабочий стол», «Документы», «Библиотека» и т. Д.) Владелец имеет полный (rwx) доступ ко всему, кроме группы и других). нет доступа (нет чтения, записи или выполнения). Если вы добавляете чтение или запись для группы или других в одну из этих папок, вам также необходимо добавить команду execute.
Гордон Дэвиссон
1
У меня не работает, применяется только к основной папке, а не к подпапкам.
delphirules
29

Выберите корневую папку, с которой вы хотите работать, и откройте Инспектор (CMD-i или щелкните правой кнопкой мыши и «Показать информацию»). На нижней панели вы можете управлять разрешениями.

Добавьте и удалите разрешения для списка там. Чтобы рекурсивно применить одни и те же разрешения для каждой подпапки, щелкните значок и выберите «Применить к вложенным элементам ...»

Примечание. Я заметил, что «Применить к вложенным элементам ...» отображается серым цветом, когда маленький значок замка в правой нижней части окна заблокирован. Если это так, просто нажмите на замок, чтобы разблокировать его, введя свои учетные данные, а затем повторите попытку с «Применить к вложенным элементам ...»

gregsabo
источник
Хотя в целом это полезно, оно не выполнит того, о чем просят. Он заменяет разрешения в подкаталогах, вместо того, чтобы, например, добавлять пользователя ко всем, независимо от того, какие разрешения были раньше.
Даниэль Бек
@DanielBeck вы не правы, он применяет все элементы разрешений, chmod и chown, это правильный способ «mac» для этого
Роб
Я только что попробовал этот ответ (в тестовой папке), и он не работал правильно: поскольку папка обычно является «исполняемой», этот бит был также установлен для всех вложенных файлов, что неверно. я просто хотел изменить пользователя и группу.
поток
12

Вы хотите использовать chmodи chownкоманду.

Если я правильно помню, вы можете изменить разрешения следующим образом:

chmod -R +a "joshhunt allow read" /some/file/or/folder/
chmod -R +a "Guest deny read" /some/other/folder/
chmod -R +a "Guest deny write" /some/other/folder/

Для более подробной информации об этих командах, посмотрите соответствующие страницы man в Терминале:

man chmod
man chown
Джош Хант
источник
1
Лучший способ при попытке указать разрешения для конкретного пользователя
megalucio