Разрешения для новых файлов в общем каталоге

31

Мы только что получили новый iMac, который использует /Users/Sharedкаталог для хранения медиаресурсов (изображений, аудио, видео), которые мы хотим сделать доступными для всех пользователей на машине. После первоначального копирования всех файлов мы установили необходимые разрешения, а затем рекурсивно применили те же разрешения ко всему содержимому каталога. Это работает нормально, за исключением того, что всякий раз, когда кто-то создает новый файл или каталог, у него нет таких же разрешений, и мы должны повторить весь процесс разрешений, прежде чем каждый сможет получить к нему доступ.

Есть ли способ, которым мы можем установить разрешения для всех новых файлов / каталогов, созданных в этом каталоге?

Дэниэл Стендж
источник
Расширенные атрибуты позволят вам установить некоторые очень либеральные права доступа и попросить их распространяться внутри каталога, и продолжать делать это для новых созданий, но я не могу найти инструкции для жизни. Я могу сделать это только на серверах OSX, используя средства администрирования сервера, которые, как я полагаю, здесь не подходят?
Джейсон Салас
Нет. У нас есть доступ только к дискам ОС, которые поставляются с iMac.
Даниэль Стендж
1
Если вы довольны работой в Терминале, это может быть ответом, который вы ищете.
Boehj

Ответы:

32

Вы не можете сделать это с традиционными разрешениями в стиле POSIX, но вы можете сделать это с помощью наследуемых записей управления доступом. Чтобы разрешить доступ на чтение и запись для всей группы «сотрудники» ко всему в / Users / Shared / realshared, вы должны использовать:

sudo chmod -R +a "staff allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Users/Shared/reallyshared

Эта file_inherit,directory_inheritчасть означает, что эта запись контроля доступа будет автоматически добавлена ​​к новым файлам и папкам, созданным внутри этой папки, но она не применяется автоматически к элементам, уже находящимся там (именно поэтому я добавила -Rфлаг, chmodкоторый применяет его ко всему, что в данный момент находится папку), и она не будет применяться к элементам, созданным где-то еще, а затем перемещенным в эту папку (я не знаю, как обойти это, извините).

Гордон Дэвиссон
источник
Я бы очень хотел найти способ сделать эту работу даже для файлов, которые перемещаются в общий каталог. Очень неприятно иметь файлы в общем каталоге, которые в конечном итоге не являются полностью общими.
Радвен
Это по-прежнему не разрешает запись в папку, если разрешения posix не позволяют этого. Т.е. я создаю эту папку в Finder: drwxr-xr-x+ 2 User staff 68 Dec 15 14:10 untitled folder«+» в конце означает, что он получил расширенный ACL, примененный с помощью вашей команды выше, но Windows по-прежнему говорит, что разрешение запрещено, если я пытаюсь записать файл в эту папку. chmod g+w untitled\ folderПозвольте мне только написать это. Возможно, потому, что я установил Samba, чтобы обойти ужасную новую реализацию OSX для SMB.
Крис Дракон
@ChrisDragon: звучит так, будто самба не соблюдает ACL. Я нашел предложение здесь , чтобы добавить nt acl support = noв [Global]раздел /etc/smb.conf, но я не уверен , что по - прежнему актуальна в currentish версиях самбы.
Гордон Дэвиссон
4

Другой подход заключается в использовании Terminal (он же оболочка или командная строка) для создания / редактирования (должен быть выполнен от имени суперпользователя, см. Sudo) файла:
/etc/launchd-user.conf
добавление строки:
umask 000
сохранить и перезагрузить. Новые файлы / папки (включая файлы, измененные с помощью команды «Сохранить как») позволят всем пользователям читать и писать.

Это работает путем изменения разрешений на создание файлов по умолчанию для программ, тогда как подход ACL работает с точки зрения правил доступа, привязанных к конкретным файлам и папкам.

Без этой настройки файлы создаются, позволяя пользователю: чтение-запись, группировка и другое: только чтение.

Если вы используете общий доступ к нескольким компьютерам, это необходимо сделать для всех компьютеров, которые будут использовать общий ресурс.

Если у вас есть файлы и папки в общей области, вы должны сделать их доступными для чтения / записи для всех, используя:
sudo chmod -R og+w <shared-folder-name>

Команда читает на английском языке как режим изменения, рекурсивно просматривает все подпапки и файлы, другие права и права доступа группы добавляют доступ для записи, начиная с папки с.

Этот подход упоминается на форумах для работы по крайней мере с 10.6 и до сих пор работает на 10.7.

Другие факторы по-прежнему влияют на доступ к контенту. Например, разрешения, установленные на панели управления «Общий доступ», разрешения / ACL для домашней папки, а также при использовании Терминала любой действующий umask для оболочки.

Посмотрите права доступа к файлам umask и Posixдля деталей об этих концепциях Unix. В рецензиях слово каталог является Unix на языке синоним папки. Вы также встретите термины UID и GID: идентификаторы пользователей и групп, которые определяют принадлежность Posix к запущенным программам (процессам). Обратите внимание, что UID и GID - это числа, которые могут быть одинаковыми или разными для данного имени пользователя на разных компьютерах. Эти номера присваиваются именам в порядке создания учетных записей на данном компьютере, обычно начиная с идентификатора 501. В домашних сетях отсутствует механизм для согласования этих назначений между компьютерами. Поэтому в сетевых ресурсах может показаться, что файл принадлежит разным пользователям, поскольку идентификатор пользователя для привязки имени пользователя определяется с точки зрения доступа компьютера к файлу. Так что акции действительно всегда позволяют каждому получить доступ к файлам для всех. Другими словами, «другое» разрешение Posix является неограниченным ограничением доступа, начиная от предоставления весьма предсказуемой, но, по-видимому, неопределенной степени доступа в зависимости от идентификаторов пользователей, назначенных на разных компьютерах. Это приводит к, по-видимому, абсурдным различиям в восприятии, когда в некоторых сетях, например, установка с только одной учетной записью пользователя, когда-либо созданной на каждом Mac, сможет обмениваться без каких-либо настроек разрешений, потому что все учетные записи будут иметь одинаковый UID (501, нет независимо от того, как называются эти учетные записи), тогда как другая сеть, использующая несколько учетных записей пользователей на Mac, сразу увидит проблемы Таким образом, некоторые группы никогда не будут бороться с этим, в то время как другие могут видеть проблемы, которые развиваются со временем, или проблемы, которые появляются / исчезают спонтанно,

Неизвестно, почему Apple оставила такой серьезный юзабилити-недостаток в конфигурации, который в противном случае легко включил возможность совместного использования файлов.

На внешних дисках эта проблема решается с помощью параметра «Игнорировать разрешения для этого тома». Там может быть похожая функция для обмена файлами Apple, но где это.

Если вы используете собственную конфигурацию службы Samba, есть другие механизмы для решения этих проблем, но Samba совсем не прост в использовании.

провод
источник
/etc/launchd-user.conf устарела в пользу использования launchctl. См. Support.apple.com/en-us/HT201684
Джесс Бауэрс