Прежде всего, спасибо за чтение. Мне удалось запустить задание запуска plist, которое находится в моей папке LaunchAgents. Он в основном вызывает небольшой сценарий оболочки, который определяет права доступа к папке. Затем у меня есть другая работа, которая вызывает другой сценарий, который возвращает его к тому, что было раньше.
Теперь я пытаюсь понять, как изменить права доступа к папке / файлу для определенной группы. Я понимаю, что у каждой папки / файла есть владелец, принадлежащий к группе. Да, но как я могу явно предоставить разрешения другой группе пользователей через сценарий оболочки? Это возможно? Я также читал о ACL, это тот путь, по которому я должен идти?
Теперь мой сценарий прост:
chmod -R 777 <FOLDERNAME>
затем обратно:
chmod -R 000 <FOLDERNAME>
Выполнение этого при входе в систему как администратор.
Но теоретически я хотел бы предоставить доступ другой группе:
chmod -R 777 <FOLDERNAME> <GROUPNAME>
<- Ага, вот о чем я думаю
Вам нужны ACL. Прежде всего, ваша файловая система должна быть смонтирована с этой опцией. Вы можете перемонтировать его с помощью этой опции:
# mount -o remount,acl /mount/point
Если вы хотите, чтобы этот параметр был статическим (доступен после каждой перезагрузки):
# vi /etc/fstab
#...
/dev/partition /mount/point fstype defaults,acl 1 2
Важная часть здесь - это ", acl" в столбце параметров. Все остальное можно игнорировать.
Вам необходимо установить acl
пакет и использовать setfacl
. Чтобы установить значения по умолчанию для каталога (каждый новый созданный файл и подкаталог будет иметь эти ACL):
# setfacl -d -m u::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory
Теперь вы должны установить разрешения для этого каталога (да, просто убрать параметр -d):
# setfacl -m u::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory
ВНИМАНИЕ, что если в этом каталоге есть какое-либо содержимое, разрешения ДОЛЖНЫ быть установлены явно. Вы можете использовать find для правильной настройки разрешений (помните, что каталоги должны иметь права на чтение и выполнение, чтобы люди могли получить к ним доступ / перечислить). Для начала найдите ./ -type d предоставит вам подкаталоги в текущем местоположении, и следующее установит разрешения по умолчанию для каждого из них:
# find ./ -type d -exec setfacl -d -m <acl> \{} \;
<acl>
должен быть желаемый acl\{} \;
это escape-последовательность для поиска.Если вы хотите проверить разрешения, унаследованные созданными файлами и каталогами, используйте getfacl
Вы также можете использовать переключатель -R | --recursive, но это испортит права доступа к файлам и каталогам.