Как вы даете полный доступ w/ chmod нескольким группам? Нужно использовать ACL?

Прежде всего, спасибо за чтение. Я успешно выполнил задание по запуску plist, которое находится в моей папке LaunchAgents. В основном он вызывает небольшой скрипт оболочки, который chmod - это права доступа к папке. Затем у меня есть другая работа, которая вызывает другой скрипт, который меняет его на прежний.

Теперь я пытаюсь выяснить, как изменить права доступа к папке / файлу для определенной группы. Я понимаю, что у каждой папки / файла есть владелец, который принадлежит группе. Да, но как я могу явно дать разрешения другой группе пользователей через сценарий оболочки? Это возможно? Я также читал о ACL, по этому пути я должен идти?

Мой сценарий теперь прост:

chmod -R 777 <FOLDERNAME>

затем обратно:

chmod -R 000 <FOLDERNAME>

Запуск этого при входе в систему как администратор.

Но я хотел бы предоставить доступ для другой группы, в теории:

chmod -R 777 <FOLDERNAME> <GROUPNAME> <- ага, это то, что я думаю

1 ответ

Решение

Вам нужны ACL. Прежде всего, ваша файловая система должна быть смонтирована с этой опцией. Вы можете перемонтировать его с помощью этой опции:

# mount -o remount,acl /mount/point

Если вы хотите, чтобы эта опция была статической (доступна после каждой перезагрузки):

# vi /etc/fstab
#...
/dev/partition  /mount/point  fstype  defaults,acl 1 2

Важной частью здесь является ",acl" в столбце параметров. Все остальное вы можете игнорировать.

Вам нужно установить acl пакет и использовать setfacl, Чтобы установить значения по умолчанию для каталога (каждый новый файл и вложенный каталог будут иметь эти acls):

# setfacl -d -m u::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory
  • Создание пользователя имеет полные права
  • user1 только прочитал выполнить
  • то же самое для группы по умолчанию
  • group1 имеет права на чтение, выполнение и запись
  • group2 читать и выполнять
  • у других здесь нет шансов

Теперь вы должны установить разрешения для этого каталога (да, просто опция strip -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, но это может испортить права доступа к файлам и каталогам.

Другие вопросы по тегам