URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 77041
[ Назад ]

Исходное сообщение
"запуск root-команд через ssh-соединение"

Отправлено HAN7 , 26-Окт-07 21:05 
Здравствуйте!
Нужна возможность запуска команд root на удаленной системе поверх ssh - и это не вручную а в пакетном режиме
Подробнее:
коннект идет со скрипта (проверка по ключам, юзер в группе wheel):

#!/bin/sh
CONNECT="ssh -l <user> <IP> -p <port>"
command=`$CONNECT 'su - root -c 'команда''`

там команды которые может выполнять только root, так вот на этапе su нет ни запроса пароля (чтобы его можно было вот ввести вручную и скрипт пошел дальше), ничего - в логах ошибка как если бы вводился неправильный пароль root

Как такое можно решить?
Спасибо!


Содержание

Сообщения в этом обсуждении
"запуск root-команд через ssh-соединение"
Отправлено anonymous , 26-Окт-07 21:31 
>command=`$CONNECT 'su - root -c 'команда''`

Неправильно вложены кавычки (не факт что причина проблемы, но важное замечание)

$ echo 'su - root -c 'команда''
su - root -c команда

$ echo "su - root -c 'команда'"
su - root -c 'команда'


"запуск root-команд через ssh-соединение"
Отправлено uldus , 26-Окт-07 22:43 
Если список команд фиксированный, то лучше использовать sudo, разрешив выполнение только для этих команд, желательно лимитировав и передаваемые параметры.



"запуск root-команд через ssh-соединение"
Отправлено PxeL , 27-Окт-07 01:04 
>Если список команд фиксированный, то лучше использовать sudo, разрешив выполнение только для
>этих команд, желательно лимитировав и передаваемые параметры.

man sudo ;)

sudo -u root -p root_pass /.../script


"запуск root-команд через ssh-соединение"
Отправлено uldus , 28-Окт-07 06:41 
>>Если список команд фиксированный, то лучше использовать sudo, разрешив выполнение только для
>>этих команд, желательно лимитировав и передаваемые параметры.
>
>man sudo ;)
>sudo -u root -p root_pass /.../script

Т.е. вы хотите сказать, что не читали этот ман и решили что-то написать невпопад ?


"запуск root-команд через ssh-соединение"
Отправлено GloryS , 27-Окт-07 15:54 
>[оверквотинг удален]
>CONNECT="ssh -l <user> <IP> -p <port>"
>command=`$CONNECT 'su - root -c 'команда''`
>
>там команды которые может выполнять только root, так вот на этапе su
>нет ни запроса пароля (чтобы его можно было вот ввести вручную
>и скрипт пошел дальше), ничего - в логах ошибка как если
>бы вводился неправильный пароль root
>
>Как такое можно решить?
>Спасибо!

Если уж так надо, чем не выход
в sshd_config
PermitRootLogin yes
AllowUsers root@откда_ты_ходишь
а потом
ssh root@твой_сервер "command --with-keys"
А еще лучше, заранее обменяться ключами (и пароли не нужны)


"запуск root-команд через ssh-соединение"
Отправлено Arifolth , 28-Окт-07 16:21 
>[оверквотинг удален]
>CONNECT="ssh -l <user> <IP> -p <port>"
>command=`$CONNECT 'su - root -c 'команда''`
>
>там команды которые может выполнять только root, так вот на этапе su
>нет ни запроса пароля (чтобы его можно было вот ввести вручную
>и скрипт пошел дальше), ничего - в логах ошибка как если
>бы вводился неправильный пароль root
>
>Как такое можно решить?
>Спасибо!

вы хотите велосипед изобрести да?
чем вас не устраивает выполнение команд самим ssh`ом?
раз аутентификация по ключам значит осталось только написать
ssh user@host command command_argument1 [...]
или коннектица рутом или разрешить юзверю запускать прогу

usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-i identity_file] [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-w tunnel:tunnel] [user@]hostname [command]

UPDATE: не прочитал последний пост, предлагаю то же самое...