6

Я хочу реплицировать storage/photos файловой системы из source в destination не включая вход ssh в качестве пользователя root. Я пробовал несколько различных комбинаций, таких как:

sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com sudo zfs recieve storage/photos
sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com su -c zfs recieve storage/photos
sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com 'sudo -S zfs recieve storage/photos <~/topsecret'

Я не могу использовать sudo -S для передачи пароля, так как поток zfs уже подключен к стандартному вводу. И два приведенных выше примера, которые ожидают интерактивный терминал, а не стандартный ввод.

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

3 ответа3

6

Я столкнулся с той же проблемой ранее сегодня. Я обнаружил, что вы можете разрешить обычным пользователям выполнять определенные операции с помощью команды "zfs allow":

от имени пользователя root выполните на сервере следующее: zfs разрешает получение, создание, монтирование хранилища / фотографий для вашего_пользователя

После этого вы сможете войти на сервер, используя ваше имя_пользователя, и у вас будут привилегии zfs для получения. Смотрите здесь:http://docs.oracle.com/cd/E19253-01/819-5461/gfkco/index.html

4

Это не полностью удаляет учетную запись пользователя root, но защищает ее не только от полнофункциональной регистрации.

Установите доверие SSH, скопировав открытый ключ локального пользователя (обычно ~/.ssh/id_rsa.pub) в файл авторизованные ключи (~/.ssh/authorized_keys) для удаленного пользователя. Это исключает запросы на ввод пароля и повышает безопасность, так как ключи SSH труднее подделать. Вы, вероятно, также хотите убедиться, что у sshd_config есть PermitRootLogin without-password - это ограничивает удаленный вход в систему root только для ключей SSH (даже правильный пароль не удастся).

Затем вы можете добавить защиту, используя директиву ForceCommand в файле author_keys, чтобы разрешить выполнение только команды zfs.

1

Для тех, кто еще не обновился до 0.7.0, вот решение, которое я придумал. SSH на удаленный сервер и запустите:

mkfifo zfs-pipe

# It doesn't ask for your password until the pipe starts to receive 
# data. So check back here when you start the local command
sudo zfs receive storage/photos < zfs-pipe  

Тогда локально:

sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | \
       pv | ssh example.com "cat - > zfs-pipe"

pv необязательно, конечно. Просто приятно что-то наблюдать за прогрессом

Наконец, очистить трубу:

rm zfs-pipe

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .