2

Я могу подключиться к удаленной машине, используя открытый / закрытый ключи (без пароля) как пользователь wakatana . На удаленной машине я могу выдать: sudo /usr/bin/rootsh -i -u root затем я ввожу пароль root и получаю разрешения root. Теперь я хотел бы «полуавтоматизировать» этот процесс. Под полуавтоматизацией я подразумеваю, что мне все равно потребуется пароль root, но я также смогу передавать другие команды, которые будут выполняться с правами root, например, cat /etc/shadow

Я попробовал следующую команду: ssh -t targetmachine "sudo /usr/bin/rootsh -i -u root; cat /etc/shadow" но это дает мне интерактивное приглашение root (после ввода пароля), и я смог использовать удаленную машину, как будто я вошел в систему как root. Только после нажатия ctrl+d кажется, что он пытается открыть /etc/shadow потому что я получаю сообщение:

cat: /etc/shadow: Permission denied
Connection to targetmachine closed.

Мне нужно как-то передать команду cat /etc/shadow для rootsh . Но проблема в том, что я не могу soduo любую другую команду, кроме /usr/bin/rootsh -i -u root

Например, когда я попробовал sudo /usr/bin/rootsh -i -u root -- cat /etc/shadow я получил:

Sorry, user wakatana is not allowed to execute '/usr/bin/rootsh -i -u root -- cat /etc/shadow' as root on targetmachine.

Подводя итог, мне нужно

  1. получить доступ к целевой машине:
  2. переключить пользователя на root на удаленном сервере (введите пароль)
  3. выполнить команду под этим переключенным пользователем
  4. закрыть соединение с удаленным сервером

Обратите внимание, что мне не разрешено:

  1. редактировать файл sudoers
  2. добавление открытых / закрытых ключей в root
  3. разрешить прямой вход в систему root

Спасибо

РЕДАКТИРОВАТЬ:

Также я попытался предложить:

echo date | sudo /usr/bin/rootsh -i -u root

но это возвращает:

no tty/pty on stdin: Invalid argument

1 ответ1

1

Большинство оболочек будут читать со стандартного ввода, даже если это не клавиатура. Посмотрите, работает ли это на targetmachine:

$ echo date | sudo /usr/bin/rootsh -i -u root
[sudo] password for you: 
Mon Oct 14 13:29:09 EDT 2013

Если это так, вы можете увидеть, работает ли stdin над ssh:

$ echo 'date ; whoami ; cat /etc/shadow' | ssh -t targetmachine 'sudo /usr/bin/rootsh -i -u root'

Или, может быть, отправлять команды непосредственно в удаленный sudo:

$ ssh -t targetmachine "echo 'date ; whoami ; cat /etc/shadow' | sudo /usr/bin/rootsh -i -u root"

Будьте осторожны, чтобы одинарные / двойные кавычки были правильно вложены. (Мои тесты показывают, что sudo не работает в приведенных выше примерах, потому что он не может прочитать мой локальный tty, чтобы получить пароль.)

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