Заметки и замечания, рассказы и пересказы

Как поуправлять Synology по ssh, когда очень хочется

Иногда возникают странные желания, касающиеся домашних и не очень хранилищ, они же NAS, от известной компании Synology. Хранилища DSM (Synology DiskStation Manager) — программное сердце хранилищ, а создатели продукта позволили при должной настройке подключаться по ssh. Однако не все так хорошо, как могло бы показаться. Используя кастрированный линукс и оболочку, все будет не совсем так ласково и привычно, как в полюбившихся debian-like системах.

Например, нам нужно передать некую команду для выполнения от root. Предположим, мы хотим сделать такой маневр из под Windows (хотя это не самый принципиальный момент). Как бы нам это сделать без ввода паролей?

Наверное классическим маневром было бы использовать пароли или ключи, изображая что-то такое:

plink -ssh admin@192.168.0.222 -pw password -batch -t "echo password | sudo  some-command-with-root-permission.sh"

Т. е. мы подключились по паролю и передали команду с вводом пароля... но в случае с Synology DSM 6+ у нас такой номер не пройдет. А для того, чтобы все получилось, нужно провести небольшую подготовку, а именно немного пошалить с sudoers (visudo у нас нет, редактировать /etc/sudoers напрямую тоже толку мало)...

Буквально по шагам, делаем нижеприведённую магию. Не забываем сначала зайти по ssh и сделать sudo su

# переходим в каталог
cd /etc/sudoers.d
# создаем файл с именем пользователя 
# предположим, что у нас admin
vi admin
# включаем редактирование в vi
i
# добавляем разрешения
admin ALL=(root) NOPASSWD: /path/to/script.sh
# или на все без пароля
admin ALL=(root) NOPASSWD: ALL
# выходим из vi
<esc>
:wq! 
# ставим права на файл
chmod 0400 admin

Теперь команда вроде той, что привожу ниже, отработает без каких либо проблем или ввода пароля.

plink -ssh admin@192.168.0.222 -pw password  -batch -t "sudo /var/packages/HyperBackup/target/bin/img_backup -B -w -k 12"
Отправить
Поделиться