Есть ли способ, чтобы существующие объекты файловой системы наследовали недавно установленные настройки ACL по умолчанию своих родительских каталогов?
Причина, по которой мне нужно это сделать, заключается в том, что у меня есть пользователь, который подключается к моему серверу через SFTP. Они могут менять каталоги в своем FTP-клиенте и видеть корневую папку и остальную часть сервера. У них нет разрешений на изменение или редактирование чего-либо, кроме своего собственного каталога пользователя, но я хотел бы запретить им даже просматривать содержимое других каталогов.
Есть ли лучший способ сделать это, чем ACL? Если ACL подходят, я предполагаю, что ACL по умолчанию в корневом каталоге будет лучшим способом ограничить доступ. Затем я мог выборочно дать пользователю разрешение на просмотр определенных каталогов. Проблема в том, что списки ACL по умолчанию наследуются только новыми объектами файловой системы, а не существующими.
Вам придется вручную установить ACL для существующих каталогов. Не сложно сделать:
find /path/to/ftp -type d -exec setfacl <acl spec> {} \;
Как упоминалось в l1x, вам понадобятся как ACL для доступа, так и ACL по умолчанию для ваших каталогов.
-d (или --default) используется для установки значений по умолчанию в каталоге, чтобы все, что в нем было создано, наследовало разрешения.
например
setfacl -d --set u :: rwx, u: tippy: rwx, u: axel: rx, g :: rx, g: lensmen: rx, o :: - MYDIR
Вот краткий обзор. http://www.vanemery.com/Linux/ACL/linux-acl.html#default
Текущие права доступа к объектам файловой системы называются ACL доступа. Также определен второй тип, называемый ACL по умолчанию. Они определяют права, которые объект файловой системы наследует от родительского каталога во время его создания. Только каталоги могут быть связаны с ACL по умолчанию. Списки ACL по умолчанию для некаталогов не будут использоваться, потому что никакие другие объекты файловой системы не могут быть созданы внутри некаталогов. Списки контроля доступа по умолчанию не играют прямой роли в проверках доступа.