Назад | Перейти на главную страницу

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

Прежде всего, спасибо за чтение. Мне удалось запустить задание запуска 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
  • Пользователь создания имеет полные разрешения
  • user1 только прочитал выполнение
  • то же самое для группы по умолчанию
  • group1 имеет доступ на чтение, выполнение и запись
  • group2 читать и выполнять
  • у других нет шансов здесь

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