2011-12-13 4 views
-3

Я пишу простой сценарий оболочки, который требует привилегии root. Используя терминал, если вы наберете sudo su и напишите пароль, он будет работать определенно. Я хочу передать пароль к файлу сценария, а затем передать его в систему, чтобы стать корневым например:shell script: перейти к корню

pass= $1 
navigateToRoot($pass) 
+2

Вы можете «т. И это было бы ужасно, если бы вы могли. –

+0

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

+0

Если вам нужен root-доступ для этого, вы делаете это неправильно. –

ответ

2

Лучше было бы:

chmod +s yourfile 
chown root yourfile 

Установив setuid бит, файл будет выполняться как root (владелец) без необходимости хранить или передавать пароль root.

Убедитесь, что никто другой не может модифицировать сценарий

chmod o-w yourfile 

СМОТРИ КОММЕНТАРИИ:

SETUID не работает на скриптах Shell, так что этот ответ неверен.

+0

setuid не работает над сценариями оболочки из-за ужасных последствий для безопасности, если это было сделано. –

1

Основываясь на вашем комментарии к вопросу, я предполагаю, что вы действительно хотите попросить пользователя пароль каким-то альтернативным способом, вместо того, чтобы иметь свой пароль в ясном тексте в файле.

Флаг -Asudo. От man sudo:

Обычно, если sudo требует пароль, он будет считывать его с текущего терминала. Если указан параметр -A (askpass), для проверки пароля пользователя выполняется (возможно, ) вспомогательная программа, а выводит пароль на стандартный вывод. Если задана переменная среды SUDO_ASKPASS , она указывает путь к программе-помощнику . В противном случае используется значение, заданное параметром askpass в sudoers (5).

0

Если вы хотите отправить пароль из сценария, вам нужен скриптовый язык, способный делать странные вещи на tty -s, например, например. expect (который основан на tcl, языке сценариев, который мне очень не нравится).

Но хорошо настроен sudo или меньше используется super команда, или, возможно, исполняемый файл (кодируется с большой осторожностью в C), которая УИП и вызывает другой скрипт, должно быть достаточно ...