сценарий оболочки: перейдите к корню - PullRequest
0 голосов
/ 13 декабря 2011

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

pass= $1
navigateToRoot($pass)

Ответы [ 3 ]

2 голосов
/ 13 декабря 2011

Лучше всего было бы:

chmod +s yourfile
chown root yourfile

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

Убедитесь, что никто не может изменить скрипт

chmod o-w yourfile

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

SETUID не работает со сценариями оболочки, поэтому этот ответ НЕВЕРНЫЙ.

1 голос
/ 13 декабря 2011

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

Вы можетеиспользуйте флаг -A для sudoman sudo:

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

0 голосов
/ 14 декабря 2011

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

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

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