привязка корневого прохода к команде sudo

241
Suhayb Kharabsheh

Можно ли выполнить команду sudo с паролем администратора?

пример :

sudo apt-get update -password is 'root' 

это поместить команду в приложение при запуске Ubuntu, которому нужен root-доступ

1
Вы можете изменить файл sudoers, чтобы отключить запрос пароля для пользователя, который запускает программу. cascer1 7 лет назад 1
@ cascer1 нет важно, чтобы пароль был включен Suhayb Kharabsheh 7 лет назад 0
Если вы хотите, чтобы пароль был включен, но где-то написан открытым текстом, это то, что вы хотите? Возможно, вы не поняли, что @ cascer1 говорит о способе выборочного разрешения выполнения без пароля для конкретной пары (пользователь / команда), что представляется неплохой идеей. Пользователю все равно нужно будет ввести пароль для любых других команд sudo. Вы можете взглянуть на документацию файла sudoer. A. Loiseau 7 лет назад 3

2 ответа на вопрос

1
hvindin

Если вы хотите, чтобы какой-то конкретный процесс запускался при запуске от имени пользователя root, я бы посоветовал вам обернуть его в скрипт systemd / init.d. Для systemd что-то вроде этого, вероятно, будет работать:

[Unit] Description=Some command  [Service] User=root Type=oneshot ExecStart=/usr/bin/whateverprogram and associated arguments  [Install] WantedBy=multi-user.target 

Хотя в приведенном выше примере я считаю, что директива User является излишней.

В качестве альтернативы, без реализации какого-либо инструмента управления секретами (см. Хранилище hashicorps, у ansible есть аналогичная функция и т. Д.), Вы в значительной степени застряли с двумя вариантами:

Создайте /etc/sudoers.d/somefile с записью для всех программ, которые будут запускаться с повышенными привилегиями без пароля. То есть.

ALL ALL=/usr/bin/theprogramtorun NOPASSWD 

Или вы, если вам совсем не безразлична безопасность системы и ваш пользователь - sudoer, вы можете попробовать написать что-то вроде:

echo "thisisaterribleidea" | sudo -S /usr/bin/command 

Чтобы передать пароль в виде открытого текста через командную строку

-1
Suhayb Kharabsheh

Ну, лучшая практика это:

echo "your password" | sudo --stdin command 

Сначала будет выполнена команда, а затем введен пароль, введенный вами в операторе echo.

Это решение имеет два негативных эффекта. Во-первых, пароль будет в истории оболочки, а во-вторых, вы ничего не сможете ввести во время выполнения команды. pbies 7 лет назад 1
@pbies ну, во-первых, это реальная угроза, мне плевать на второе, так как я пытаюсь запустить bash-скрипт при запуске системы Suhayb Kharabsheh 7 лет назад 0
Вы можете сделать это в файле /etc/rc.local. pbies 7 лет назад 0
Чтобы немного понизить первый факт, вы можете захотеть `cat` скрытый частный файл только для чтения. Еще одним недостатком является то, что вам нужно пересмотреть все свои скрипты, когда вы меняете пароль. A. Loiseau 7 лет назад 1