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

Как предоставить разрешения на запись с помощью setfacl, сохранив существующие разрешения?

Я хочу рекурсивно предоставить разрешение на запись конкретному пользователю в каталоге без потери каких-либо существующих разрешений, которые может иметь пользователь. Я считаю, что могу использовать что-то вроде этого, чтобы дать пользователю права на запись:

setfacl -R -m u:user:w dir/*

но проблема в том, что он отнимает все существующие разрешения, которые у пользователя уже могут быть. Например, если у пользователя были разрешения на выполнение перед выполнением команды setfacl, она заменит разрешение на выполнение разрешениями на запись.

Как я могу дать пользователю разрешение на запись, сохранив при этом существующие разрешения?

То, что вы хотите, называется "относительными разрешениями", функцией, которая некоторые реализации setfacl предоставляют, в основном используя классический синтаксис "+/-", используемый chmod

Однако, по крайней мере, на RHEL7 и Ubuntu 16.04 LTS, setfacl делает не предоставить такую ​​функцию. Например, что-то вроде setfacl -m user:root:+r /root/ вернуть сообщение об ошибке setfacl: Option -m: Invalid argument near character 11

Если ваш setfacl В реализации отсутствует эта функция, у вас есть две возможности:

  • использовать getfacl выводить все списки ACL к файлу, редактируя такой файл в соответствии с вашими необходимыми правами доступа, затем используйте setfacl --restore загрузить / применить новые разрешения;
  • создать сценарий для перебора каждого файла, чтения текущих списков ACL и записи новых прав доступа.