У меня есть 2 пользователя на моем сервере Debian, gooduser и root .

Команда my_cmd запрашивает пароль (он подключается к ssh-серверу).

Когда я выполняю my_cmd как gooduser , все работает как положено:

gooduser@debian:/mydir$ my_cmd
someone@192.168.2.122's password: 
Permission denied, please try again.
someone@192.168.2.122's password: 
Permission denied, please try again.
someone@192.168.2.122's password: 
Permission denied (publickey,password).
fatal: The remote end hung up unexpectedly
gooduser@debian:/mydir$

Выше я проигнорировал подсказки пароля, нажав три раза клавишу ввода. Почему, я скажу вам в ближайшее время.

Однако, когда я вошел в систему как пользователь root , я пытаюсь выполнить my_cmd от имени пользователя gooduser (я должен сделать так, чтобы любые создаваемые файлы принадлежали myuser). Тем не менее, он не запрашивает пароль ни разу, и работает так, как будто я нажимал клавишу ввода 3 раза, за исключением того, что я этого не делал (сообщения "Отказано в доступе" такие же, как и выше):

root@debian:/mydir# su - gooduser -c "cd $PWD; my_cmd"
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: The remote end hung up unexpectedly
root@debian:/mydir#

Почему это происходит? Почему su игнорирует запросы пароля? Или, точнее, почему кажется, что нажимает ввод от моего имени? Что еще более важно, как я могу решить это?

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

2 ответа2

1

ssh пытается открыть /dev/tty чтобы получить пароль, но система не позволяет пользователю, кроме того, кто в данный момент вошел в систему на терминале, сделать это. Из-за этого ssh не может прочитать пароль.

0

В итоге я использовал sudo:

sudo -i -u gooduser -H bash -c "cd $PWD; my_cmd"

С помощью этой команды мне предложили ввести пароль, как и ожидалось. -i было необходимо, чтобы $PATH был настроен правильно, иначе моя команда завершилась неудачно.

Что касается того, почему su терпит неудачу, я все еще не знаю. Использование su работало в Ubuntu 12.04, но не работало в Debian (поэтому мой вопрос), поэтому я не уверен, что объяснение qqx применимо.

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