Как передать пароль в скрипте bash? - PullRequest
0 голосов
/ 07 марта 2011

Мне нужно выполнить команду, которая необходима для запуска от имени пользователя root.

Я читал некоторые посты об использовании жестко запрограммированных паролей в сценариях, которые могут быть небезопасными, но на самом деле мне все равно, потому что я все равно предоставляю пользователям пароль root. Это раздетая система, и в ней всего 2 пользователя: клиент и root, поэтому избегайте предупреждать меня о проблемах безопасности, продолжайте и предлагайте быстрое и грязное решение.

Для этого bash-скрипта мне нужно получить как суперпользователь, используя su, тогда "моя команда", и затем выйдите из системы.

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

В качестве альтернативы, возможно, я мог бы установить sudo, но есть ли шанс выполнить команду без запроса пароля (редактирование sudoers или что-то в этом роде)? Как насчет использования ожидать?

Обновление: Я забыл сказать, что это также переносимый SO, используемый для USB-накопителей (может быть, позже и для CDLive), как вы знаете, в некоторых дистрибутивах такого типа предоставляется пароль root, если нужны пользователи. Упомянутая выше команда является расширением пакета для установки некоторого приложения, и только root имеет права на выполнение такой команды (я должен сказать, что это не команда apt-get install или rpm, поэтому не беспокойтесь об этом).

1 Ответ

1 голос
/ 07 марта 2011

Если вы хотите, чтобы команда работала без пароля, установите эту конкретную команду как исполняемую без пароля в файле /etc/sudoers (ограничив аргументы только теми, которые вы хотите разрешить,если ваш вариант использования допускает это ограничение).

Это так же просто, как установить флаг NOPASSWD: для соответствующей записи sudoers.

Если вы действительно, действительно наденьтене заботиться о безопасности, это может быть так просто:

%admin ALL=(ALL) NOPASSWD: ALL

(после помещения пользователей с возможностями sudo в группу admin UNIX)

... или, есливы сделали заботу, вы могли бы сделать что-то конкретное:

someuser ALL = NOPASSWD: /usr/local/sbin/my_admin_command

Обратите внимание, что если эти команды будут выполняться без присутствия пользователя, им также может не назначаться TTY;в таком случае вы должны быть уверены, что ваш файл sudoers не содержит строку (oft-present-by-default):

Defaults requiretty

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

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