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

как чтобы у каждого файла / каталога в дереве был один и тот же владелец, группа, perms, acls?

играть с коробкой scilinux 6.1. fs - это ext4 с включенными ACL.

Если у меня есть каталог, скажем / pub, я хочу, чтобы все в нем всегда, без исключения, имело предопределенного владельца, предопределенную группу, предопределенный набор разрешений и предопределенный набор ACL, независимо от того, кто скопировал файл / каталог / что угодно в, не имеет значения, если он попадет внутрь, неважно, ничего.

По сути, любой файл / каталог в каталоге 'top' (/ pub в случае / pub, src в случае / usr / src, html в случае / var / lib / html, что угодно) будет -всегда- быть владельцем: сгруппированы по владельцу: группе верхнего каталога, независимо от того, как он туда попадает, независимо от того, кто пытается его изменить. И разрешения всегда будут такими же, как и набор разрешений, независимо от того, что и как, а набор acl всегда будет одинаковым, независимо от того, что / где.

Как мне это настроить?

Я знаю, что это должен быть FAQ, но опустил, если смогу.

Вы не можете. Используйте расширенные списки ACL для предоставления необходимых разрешений (со значениями по умолчанию для применения их ко всем новым файлам) и эффективно игнорируйте традиционные биты разрешений.

Вы можете использовать функцию "установить идентификатор группы" с chmod g+s /pub чтобы группа была одинаковой для всех файлов и каталогов, добавленных в этот каталог, но «установить идентификатор пользователя» (chmod o+s /pub) не работает в большинстве систем.

Один из грязных способов сделать это - смонтировать файловые системы FAT и использовать для этого uid = gid =. Таким образом, вы не сможете изменить владельца какого-либо файла просто потому, что файловая система не поддерживает пользователей, группы или ACL.

Вы можете проверить это с помощью команд, подобных перечисленным ниже:

dd if=/dev/zero  of=/var/pubfs bs=1024 count=40960 # Create a file to test it
mkfs.vfat -F 32 /var/pubfs # Format it as FAT32
mount -t vfat -o uid=user,gid=group /var/pubfs /pub # Mount it

Вы не можете. Один из вариантов, который может сработать для вас, - это настроить задание cron для периодического запуска chown -R, chgrp -R и chmod -R во всей структуре каталогов, чтобы рекурсивно установить владельца / группу / разрешения по своему усмотрению. Это определенно путаница, и для очень больших структур каталогов потребуется много работы, но она исправит разрешения.

Вам нужно будет указать владельца / группу / разрешения для команд и каталог верхнего уровня, с которым будут работать эти команды, например chown -R nobody /tmp/testdir.

В качестве альтернативы вы можете настроить программу, используя inotify чтобы следить за каталогом на предмет изменений, а затем проверять или исправлять разрешения по мере необходимости, но у inotify есть собственный набор проблем, особенно если есть много вложенных подкаталогов ... Вы должны подписаться на уведомления об изменениях во всех этих каталогах .. .

Похоже, что ответ @womble - лучший вариант, но я не использовал расширенные ACL. Просто хотел дать несколько альтернатив.