Как я могу передать пароль команде "su"? - PullRequest
2 голосов
/ 16 января 2009

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

Есть идеи?

Ответы [ 5 ]

11 голосов
/ 16 января 2009

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

5 голосов
/ 16 января 2009

Вы можете использовать ssh для localhost как другой пользователь для выполнения любой команды, которую вы хотите. Или используйте sudo и отредактируйте / etc / sudoers так, чтобы sudo не запрашивал пароль. Однако могут быть последствия для безопасности.

РЕДАКТИРОВАТЬ: Пожалуйста, дайте мне знать, почему, когда вы проголосуете. Мой ответ может быть не идеальным, но по крайней мере он работает. Я делаю это сам для некоторого лицензионного программного обеспечения, которое может быть запущено только под странным именем пользователя.

3 голосов
/ 16 января 2009

Вы не хотите указать пароль в качестве аргумента командной строки. Не столько из-за ответа @ unwind (скрипты могут быть сделаны приватными), но потому, что если кто-то запускает список процессов, вы можете увидеть аргумент команды и, следовательно, соответствующий пароль.

1 голос
/ 16 января 2009

Версия su, установленная на моем сервере Linux, не поддерживает такую ​​опцию. Я проверил sudo, но это не так. Они хотят делать подсказки сами, чтобы убедиться, что это сделано безопасным способом и (я полагаю), отговаривать людей от дословного ввода паролей в сценарии и т. Д.

0 голосов
/ 17 января 2009

Вы также можете взглянуть на утилиту «ожидаемо», которая была разработана для того, чтобы записывать сложные пользовательские вводы в программы, которые не были достаточно гибкими, чтобы получать этот ввод из других мест, кроме стандартного ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...