Как избежать запроса пароля со стороны sudo? [дубликат]

Я знаю, что могу стать пользователем root (суперпользователем) с помощью команды su , но я должен авторизовать его после ввода команд. Есть ли способ стать пользователем root и авторизоваться (с паролем) в одной строке

81
задан 23 August 2017 в 14:27

6 ответов

Ну, единственная вещь, о которой я могу думать,

echo 'password' | sudo -S command

-S флаг делает sudo считайте пароль из стандартного входа. Как объяснено в man sudo:

- S, - stdin

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

Так, для выполнения ls с sudo полномочия, Вы сделали бы

echo 'password' | sudo -S ls

Обратите внимание, что это произведет ошибку если Ваш sudo маркер доступа активен, если Вы не должны вводить свой пароль, потому что Вы уже сделали так недавно. Для обхождения этого Вы могли использовать -k сбрасывать маркер доступа:

echo 'password' | sudo -kS ls

Я не знаю ни о каком способе получить Вас в фактическую корневую оболочку (как su или sudo -i) сделать. Это могло бы быть достаточно, для какого Вам нужно все же.

81
ответ дан 22 November 2019 в 23:12

В терминале работает visudo команда для редактирования файл sudoers :

sudo visudo

и добавляют следующую строку к список sudoers

username ALL = NOPASSWD : ALL

Примечание: Замена имя пользователя с Вашим реальным UserName в вышеупомянутой строке.

84
ответ дан 22 November 2019 в 23:12

echo 'password' | sudo -kS ls работы решения, но это имеет несколько недостатков безопасности, большинство которых было уже упомянуто в комментариях ответу terdon. Таким образом я хотел бы предложить другой подход:

, Если это - только одна команда, которую часто необходимо выполнять, например, apt-get upgrade, можно настроить систему, таким образом, что sudo someCommand делает не , требуют пароля.

, Чтобы сделать это, выполните visudo и введите что-то подобное следующему:

myusername ALL=(ALL) NOPASSWD: /usr/bin/apt-get upgrade

Примечание, что при вводе команды без аргумент (например, без upgrade в этом примере) пользователю разрешат выполнить его с любой аргумент, таким образом использует с осторожностью.

25
ответ дан 22 November 2019 в 23:12

Можно сделать это также:

sudo -S <<< "password" command
15
ответ дан 22 November 2019 в 23:12

Вместо того, чтобы удалить пароль в целом, можно увеличить тайм-аут, таким образом, только необходимо ввести его несколько раз в день; в терминале, выполненном:

sudo visudo

В конце файла, добавьте следующую строку для установки тайм-аута 30 минут (замена jsmith с именем пользователя).

Defaults:jsmith timestamp_timeout=30

можно использовать любое число, которое Вы хотите; -1 средства никакой тайм-аут (запросил только в первый раз), и 0 моментальный тайм-аут средств (предложил каждый раз Вам sudo). Тайм-аут по умолчанию составляет 5 минут.

8
ответ дан 22 November 2019 в 23:12

Vader, из Вашего комментария к Вашему исходному вопросу, требуется переключиться на интерактивную оболочку, работающую с полномочиями суперпользователя, правильно?

Sudo имеет определенный аргумент для запроса оболочки:

-s [command]
The -s (shell) option runs the shell specified by the SHELL environment variable if
it is set or the shell as specified in the password database. If a command is
specified, it is passed to the shell for execution via the shell's -c option. If no 
command is specified, an interactive shell is executed.

Это избегает уже упомянутых недостатков безопасности и позволяет "идти корень" при помощи следующей команды:

sudo -s

, ЕСЛИ я действительно должен выполнить корневую оболочку (в большинстве случаев я не делаю), тогда я нахожу очень полезным иметь переменную Домашней среды набора оболочки соответственно (для отражения выполнения как "корня"), это может быть сделано с помощью флага "-H". Таким образом, полная команда была бы

sudo -s -H

, можно найти намного больше деталей в страница справочника .

sudo
1
ответ дан 22 November 2019 в 23:12

Другие вопросы по тегам:

Похожие вопросы: