Как сделать права суперпользователя более длительными, чем использование sudo?

Есть ли способ, с помощью которого я могу заставить команду sudo давать мне разрешения на более длительный период, чем время по умолчанию?

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

1
задан 18 December 2017 в 05:58

6 ответов

Из man sudoers:

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.  This
                       can be used to allow users to create or delete their
                       own time stamps via “sudo -v” and “sudo -k” respec‐
                       tively.

Как вы можете видеть, таймаут по умолчанию sudo составляет 15 минут. Вы можете изменить это значение в /etc/sudoers.

Вы не редактируете непосредственно /etc/sudoers, а используете visudo для этого.

Из man visudo:

     visudo edits the sudoers file in a safe fashion, analogous to vipw(8).
     visudo locks the sudoers file against multiple simultaneous edits, pro‐
     vides basic sanity checks, and checks for parse errors.  If the sudoers
     file is currently being edited you will receive a message to try again
     later.

Итак, введите sudo visudo в терминал, который откроет файл /etc/sudoers в текстовом редакторе nano.

Ищите эту строку:

Defaults    env_reset

И добавьте timestamp_timeout=X, где X - время, которое вы хотите установить за считанные минуты.

Итак, в качестве примера :

Defaults    env_reset,timestamp_timeout=5

Если вы укажете 0, вам всегда будет задан пароль. Если вы указали отрицательное значение, тайм-аут никогда не истечет.

После завершения сохраните и выйдите.

X

11
ответ дан 23 May 2018 в 17:41
  • 1
    Ударьте меня на 29 секунд =) – Sergiy Kolodyazhnyy 6 September 2015 в 21:25
  • 2
    Ты хороший -_-б Я на ноутбуке. , , возможно, мне нужно больше кофе – Sergiy Kolodyazhnyy 6 September 2015 в 21:30
  • 3
    Вы также можете установить, например, -1 для таймаута - если вы никогда не хотите запускать запрос пароля. – Michał Żywiecki 6 September 2015 в 21:48

Попробуйте это.

Выполните следующую команду в терминале:
sudo visudo
Прокрутите вниз до строки, которая выглядит так:
Defaults        env_reset
Измените ее, например:
Defaults        env_reset,timestamp_timeout=30

Измените 30 на время, в минутах, что вы хотите, чтобы он подождал, пока он не истечет. Вы также можете изменить его на 0, если вы хотите вводить пароль каждый раз при запуске sudo или -1, если вы никогда не хотите приглашения пароля. Нажмите Ctrl + X, чтобы закончить редактирование, Y, чтобы сохранить изменения, и Enter для выхода. [!d8 ]

Вот источник: http://lifehacker.com/make-sudo-sessions-last-longer-in-linux-1221545774

8
ответ дан 23 May 2018 в 17:41

Не могу поверить, что простейшая команда:

sudo -s

здесь не упоминается. Переключатель «-s» предоставляет вам консоль с правами root, которая сохраняется до ее выхода. Нет необходимости качаться с настройками по умолчанию.

5
ответ дан 23 May 2018 в 17:41
  • 1
    Почему это проголосовало? – coteyr 7 September 2015 в 11:36
  • 2
    Я не уменьшал, но это побеждает одно преимущество использования sudo: каждая отдельная команда регистрируется (так что вы можете видеть, что вы сделали). Вы теряете этот журнал, когда открываете корневую оболочку. – guntbert 9 September 2015 в 22:27
  • 3
    @guntbert, безусловно, является каждой командой, зарегистрированной, но в истории пользователя root. – Oliver Friedrich 11 September 2015 в 11:49
  • 4
    @BeowulfOF не обязательно - история bash - это нечто совершенно иное, чем системный журнал. – guntbert 11 September 2015 в 15:40
  • 5
    Действительно, @guntbert, если вы используете журнал auth, как это, у вас разные проблемы. – Oliver Friedrich 8 October 2015 в 17:33

Вы можете отредактировать файл /etc/sudoers (с sudo visudo: будьте осторожны) и добавить строку, подобную

Defaults:myname timestamp_timeout=15 

, где myname - ваш идентификатор пользователя. Значение тайм-аута находится в минутах. Вы можете использовать значение -1 для того, чтобы никогда не истекать, а затем введите sudo -k, чтобы убить аутентификацию, так что вам нужен пароль еще раз.

Или вы можете добавить запись, чтобы сказать, что определенная команда не нужен пароль вообще.

4
ответ дан 23 May 2018 в 17:41
  • 1
    +1 для указания sudo -k вручную аннулировать кешированную аутентификацию. – Byte Commander 19 September 2015 в 22:05

Все остальные ответы до сих пор, похоже, сосредотачиваются вокруг изменения таймаута по умолчанию, как долго вы снова вводите пароль с помощью sudo. Однако, если вы хотите просто запускать команды как root без добавления каждой команды с помощью sudo, вы можете получить корневую оболочку с помощью:

sudo -i

или

sudo bash

или

sudo <your preferred shell here>

. Хотя все они только запускают один процесс с правами root, единственный процесс, о котором идет речь, просто является оболочкой, которая позволит вам запустить столько других процессов, сколько вы например root, без необходимости вводить sudo или пароль. :)

Конечно, с большой силой приходит большая ответственность, не делайте глупостей и т. д.

1
ответ дан 23 May 2018 в 17:41
  • 1
    БУДЬТЕ ОЧЕНЬ ОСТОРОЖНЫ с этим. Фактически вы будете запускать корневую оболочку. – hmayag 7 September 2015 в 11:02
  • 2
    Почему это занижено? – coteyr 7 September 2015 в 11:35
  • 3
    @hmayag Да, если вы запустите корневую оболочку, вы действительно будете запускать корневую оболочку. Отсюда и причина предупреждения в конце. – reirab 7 September 2015 в 22:22
  • 4
    @coteyr Возможно, по той же причине, что и ответ BeoWulf. – guntbert 13 September 2015 в 20:28

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

Итак, вы должны сделать

sudo visudo -f /etc/sudoers.d/timeout

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

Defaults timestamp_timeout=X

и сохраните как обычно. Затем, если выйдет новая версия /etc/sudoers, вам не нужно выбирать между установкой более новой версии или сохранением ваших изменений - у вас автоматически будут оба.

1
ответ дан 23 May 2018 в 17:41

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

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