Узкоспециализированная задача про unison и ssh [РЕШЕНО]
Доброго времени суток!
У меня появилась довольно необычная задача, необычная своим решением.
Прошу подсказать решение в паре простых вопросов, ответы на которые, ранее мне не удалось найти ни в интернете ни у сотрудника. А тут комьюнити всегда отличалось большим опытом, по этому бывший гентушник (бывших гентушников не бывает) решил обратиться к Вам)
И так по порядку что имеем:
Рабочая станция: не очень мощный неттоп
Жесткий диск: SSD
ПО: unison, ssh.
В начале опишу то, что уже есть и работет стабильно.
Сейчас синхронизация производится запуском юнисона от пользователя det.
Удаленный хост называется x7 и прописан в host для большего удобства.
Синхронизация двусторонняя, посредством ссш сесии с ключами.
Кусочек конфига юнисона:
root = /home/det/x7 # Локальный источник root = ssh://x7/x7 # Удаленный источник
При запуске юнисона он поднимает ссш сессию, где ссш в начале обращается к умолчательному пути ~./ssh за конфигом
Host x7 User det Hostname x7 PasswordAuthentication no IdentityFile ~/.ssh/x7
И дальше уже идет непосредственная синхронизация. Это очень удобно и надеюсь всем понятно.
Теперь схему решил немного усовершенствовать для автоматического запуска юнисона под кроном от пользователя x7.
1. Создал отдельного пользователя с именем и группой x7, убрал ему шелл (#usermod -s /bin/nologin) Но proftpd запускается с системой именно от имени и группы этого пользователя без проблем.
2. Перенес все файлы ему в домик (/home/x7)
3. Поменял владельца и группу на него же, права всем папкам 770 а файлам 660 (то есть доступ только у владельца без шелла или тем кто в группе x7), и естественно добавил себя в эту группу.
Внимание вопросы:
1. Будет ли запускаться юнисон от x7 если у него нет шелла, да хоть от рУтового крона (тогда как указать от кого запускать)?
2. Если будет, то каким образом юнисону, который поднимет ссш сессию, указать, откуда конкретно брать ссш-ключ и с каким конкретно пользователем соединяться на удаленном сервере, где пользователь совсем другой?
Частичный ответ на последний вопрос это просто в домик пользователя x7, в папку ./ssh кинуть config
Host x7 User det Hostname x7 PasswordAuthentication no IdentityFile ~/.ssh/x7
И это конечно работает. Но дело в том, что я принципиально не хочу что бы в папке /home/x7, были любые файлы или папки начинающиеся на точку. Да, я умею юнисоном их игнорировать, но в мс-шке это всегда мозолит глаза.
Так же, подскажите, есть ли какая нибудь возможность дополнить строчку конфига юнисона, а именно:
root = ssh://x7/x7 # Удаленный источник
какой нибудь опцией указания пути к ключу. Имя пользователя думаю сработает просто добавив его перед именем хоста.
Заранее спасибо!
------------------------------------
Решение нашлось!
Ответы на свои же вопросы:
1. В кронтабе прописывается пользователь от которого стартовать скрипт, даже пользователю без шелла.
2. Ответ ниже.
Команда:
unison -sshargs "-i путь_до_ссш_ключа" -root "/home/x7/" -root "ssh://det@x7/x7" -auto -batch -fastcheck true -prefer newer
Позволяет это делать.
что она значит?
-sshargs позволяет указывать опции работы ссш, внутри кавычек можно использовать флаги ссш, как обычно через пробел. Путь до ссш ключа я вводил полный.
-root должно быть два, две точки синхронизации.
-auto автоматически выбирает "умолчательный" вариант действий
-batch без вопросов
-fastcheck true проверяет только изменения
-prefer newer выбирает последнюю дату изменения
Но для надежности рекомендую все таки почитать ман.
- Для комментирования войдите или зарегистрируйтесь