установка разрешений по умолчанию с помощью setfacl

установка разрешений по умолчанию с помощью setfacl

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

drwx--x---
-rw-r-----

но когда я устанавливаю разрешения по умолчанию только groupдля x:

setfacl -R -d -m g::x my_dir

тогда вновь созданные каталоги имеют желаемые мной разрешения, но вновь созданные файлы имеют -rw-------вместо -rw-r-----. Другими словами, я пытаюсь удалить rразрешение из каталогов, сохраняя при этом rразрешение для файлов.

Как мне этого добиться?

решение1

ACL Linux/Solaris не поддерживают это. Вы не можете установить разные ACL по умолчанию для файлов и каталогов.

Наличие каталогов, которые можно просматривать, но содержимое которых нельзя просмотреть (исполняемые, но не читаемые), редко бывает полезным. Тот факт, что это вообще работает, является своего рода исторической случайностью. Да, иногда это может быть полезно — но действительно ли вам это нужно? (Вы можете задать это как отдельный вопрос.)

Если вам действительно нужны каталоги и файлы с разными разрешениями, вот несколько вариантов, которые вы можете рассмотреть:

  • Позвольте вашему приложению изменить владельца создаваемых им файлов, вместо того чтобы полагаться на внутренние свойства файловой системы.
  • Сделайте все конфиденциальным по умолчанию ( setfacl -d -m group:mygroup:X) и воспользуйтесь одним из предложений вРазрешение Group+rx только в каталогах, использующих ACL?:

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

решение2

Похоже, вы не сможете сделать это ни с помощью , setfaclни с помощью umask, поскольку они оба не допускают отдельных значений по умолчанию для файлов и каталогов.Посмотрите этот похожий вопрос для других вариантов. Если вы хотите заставить какое-либо приложение создавать каталоги без разрешения на чтение и файлы с ними, вы можете либо изменить его, либо попробовать LD_PRELOAD, указав только двоичный файл (хотя написание библиотеки для этого может оказаться излишним).

Связанный контент