Есть два сервера, обзовем их srv1 и srv2. На обоих серверах есть пользователь USER, с правами судоериться под других пользователей. На сервере srv2 есть пользователь CLI.
Пользователь USER может ходить по ssh с сервера srv1 на сервер srv2 без пароля, т.к. есть ключи.
Стандартная последовательность действий:user@srv1 ~ $ ssh srv2
Last login: Mon Dec 20 19:14:30 2010 from srv1
user@srv2 ~ $ sudo -s -H -u cli
Password:
cli@srv2 /home/user $Тут все понятно.
Родилась идея сократить количество телодвижений до цели. Идея вот такая:user@srv1 ~ $ ssh srv2 "sudo -s -H -u cli"
А выглядит оно на самом деле так:
user@srv1 ~ $ ssh srv2 "sudo -s -H -u cli"
Password:(его почему-то видно)whoami
cli
set|egrep 'USER|SUDO_USER|PS'
GROUPS=()
PS4='+ '
SUDO_USER=user
USER=cli
set|egrep 'HOSTNAME'
HOSTNAME=srv2
То есть ни тебе промпта, ни истории, хотя шелл есть:
set|grep SHELL
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-commentsЕсли кто-то заморачивался подобным - подскажите, это вообще реально?
Вообще-то sudo без tty не должно работать.
обычно на такие команды пишется:
sudo: sorry, you must have a tty to run sudoВо отсюда и такая проблема.
Что за ОС стоит?И вообще, не проще дать вход на srv2 для пользователя cli
> Вообще-то sudo без tty не должно работать.
> обычно на такие команды пишется:
> sudo: sorry, you must have a tty to run sudo
> Во отсюда и такая проблема.
> Что за ОС стоит?
> И вообще, не проще дать вход на srv2 для пользователя cliFreeBSD 6.4
На самом деле не проще, т.к. серверов много и юзеров типа "cli" на них тоже много, и они принадлежат разным людям.
Ошибок оно не пишет (меня это тоже смутило), но и работает как-то не ахти...
>[оверквотинг удален]
> PS4='+ '
> SUDO_USER=user
> USER=cli
> set|egrep 'HOSTNAME'
> HOSTNAME=srv2
> То есть ни тебе промпта, ни истории, хотя шелл есть:
> set|grep SHELL
> SHELL=/bin/bash
> SHELLOPTS=braceexpand:hashall:interactive-comments
> Если кто-то заморачивался подобным - подскажите, это вообще реально?на сколько изменяет мне мой склероз, через ssh невозможно запустить suid-программы
>[оверквотинг удален]
>> SUDO_USER=user
>> USER=cli
>> set|egrep 'HOSTNAME'
>> HOSTNAME=srv2
>> То есть ни тебе промпта, ни истории, хотя шелл есть:
>> set|grep SHELL
>> SHELL=/bin/bash
>> SHELLOPTS=braceexpand:hashall:interactive-comments
>> Если кто-то заморачивался подобным - подскажите, это вообще реально?
> на сколько изменяет мне мой склероз, через ssh невозможно запустить suid-программыИзменяет. Всяческие sudo, особенно, если они разрешены с NOPASSWORD возвращают результат таким образом на раз.
А ларчик просто открывался...
ssh -t srv2 "sudo -s -H -u cli"
> А ларчик просто открывался...
> ssh -t srv2 "sudo -s -H -u cli"а я с самого начала сказал, дело в отсутствии tty
-t Force pseudo-tty allocation.