Как применить разрешения acl для ВСЕХ файлов (в том числе и в подкаталогах) без изменения разрешений для папок?

Необходимо предоставить новому пользователю разрешения acl на сервере Linux без изменения существующих разрешений chmod. Новый пользователь не принадлежит ни к одной группе и не является владельцем файлов. Пользователь должен иметь возможность записывать и читать файлы. Необходимо использовать эффективные разрешения при записи и чтении файлов. Папки должны иметь разрешения на чтение и выполнение для этого пользователя. Проблема, с которой я столкнулся, заключается в том, что когда я меняю права доступа к файлам с помощью -R, это также меняет папки. Мне это не нужно/хочу. Как применить приведенные ниже разрешения acl для ВСЕХ файлов (в том числе и в подкаталогах) без изменения разрешений для папок?

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

      # assigned read + execute to all the folders on server (includes subfolders)
setfacl  -m user:robinhood:r-X  /server/root/

# assign read + write to ALL the files (not folder) on server
# set file permissions using effective permissions
# this assigns file permissions to all files in root directory, but not files in all subfolders.
# What's the best way to apply the command to all the files
# including those in subdirectories and not to the folders?
# The folders are not to have effective permissions.

setfacl -m mask:rw-,user:robinhood:rwx /server/root/*

1 ответ

findтвой друг:

      find /server/root -type f -execdir setfacl -m mask:rw-,user:robinhood:rwx {} \;

Эта команда находит все файлы типа file (-type f) и выполняет эту команду в каталоге файла:

      setfacl -m mask:rw-,user:robinhood:rwx {} \;

где{}является заполнителем для текущего элемента в списке результатов поиска и\;знаменует конец-execdirпараметр.

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

Если вам нужно изменить ACL подкаталогов/server/rootчтобы Robinhood получил доступ к содержимому подкаталога, просто используйтеfind -type dи отредактируйтеsetfaclкомандуйте соответственно.

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