Я копирую серверы на резервный сервер. Каждый резервный сервер имеет свою собственную учетную запись на резервном сервере, и файлы пересылаются. Важно, чтобы разрешения оставались неизменными (используя rsync -p) для упрощения восстановления.
Я пытаюсь создать скрипт, который может читать файлы и создавать статистику. Мне не нравится, что этот сценарий запускается под пользователем root, и его также невозможно запустить для каждого резервного пользователя, так как сценарий должен иметь возможность читать все файлы всех пользователей. Тем не менее, это создает проблему, когда файл, например, chmodded 600. Я не хочу трогать разрешения, но другой пользователь, кроме пользователя root, и владелец не может прочитать его.
Определенный пользователь без полномочий root должен иметь возможность читать все файлы в каталоге или разделе независимо от уровня разрешений (и владелец файлов не должен иметь возможности предотвратить это). Есть ли способ добиться этого? Я использую FreeBSD с томом ZFS.
источник
Ответы:
Использование
sudo
.Если в вашем
sudoers
файле указана точная и конкретная команда, команда должна вызываться в точности так, как указано в,sudoers
иначе она будет отклонена.Например:
В этом примере пользователь
backup
может выполнить команду точно так, как показано:Если они вызывают
sudo rsync...
вместоsudo /usr/bin/rsync
команды сбой или если флаги или пути отличаются, команда завершается ошибкой.Если вы делаете это в скрипте, то вы хотите разрешить использование этих команд без пароля:
Для получения дополнительной информации см.
sudoers(5)
Справочную страницу нижеCmnd_list
.источник
pfexec
. Но так как ты на BSD,sudo
придется делать.Вы можете написать
suid
версию,cat
которая может выполняться только вашим резервным пользователем (сделать группу эксклюзивной для резервного пользователя и сделать исполняемый файл доступным для чтения только этой группе). Этоcat
позволит вам только читать файлы в интересующем вас каталоге. (Возможно, вы захотите запретить символические ссылки и не упускать такие хитрости/dir/../otherdir/
).Затем ваш сценарий может использовать этот исполняемый файл для чтения файлов, не имея привилегий root.
источник
ВНИМАНИЕ: Как отметил Стефан в комментариях ниже, владельцы файлов все равно смогут отозвать ACL.
Если у вас есть root-доступ к компьютеру, вы можете сделать это с помощью ACL :
Это даст
USERNAME
доступ на чтение всем файлам и каталогам/path/to/directory
.источник
Bindfs - это файловая система FUSE, которая предоставляет представления дерева каталогов с различными разрешениями и владельцем. Для FreeBSD нет порта, но вы можете скомпилировать его из исходного кода.
Чтобы дать пользователю
backupper
(и только этому пользователю) представление о том,/some/files
где все файлы доступны для чтения, смонтируйте читаемое представление/some/files
в личном каталогеbackupper
.источник
У ZFS есть некоторые механизмы для этого.
Один из механизмов все еще находится в разработке и еще не реализован, но позволяет монтировать набор данных с переопределением «владельца». В этом случае вы можете клонировать снимок, смонтировать его с владельцем, переопределенным для резервного пользователя, создать резервную копию и затем уничтожить клон. Недостатком является то, что вы не делаете резервную копию реального владения файлами.
Наилучшим решением, вероятно, являются списки ACL в стиле ZFS nfsv4.
источник
У меня есть две идеи, как решить эту проблему, используя технологии, специфичные для FreeBSD, хотя я и не пробовал:
Используйте стручковый перец. Это мой предпочтительный метод. Кроме того, поскольку он был недавно перенесен на Linux, он также должен работать там. Было бы так:
Используйте обязательный контроль доступа. Это не работает на Linux AFAIK, и это более неудобно для установки. Было бы так:
ugidfw добавить тему uid root jailid BACKUP_JAIL_ID mode rsx
источник