Как применить разрешения 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
командуйте соответственно.