Как я вынуждаю 'sudo' попросить пароль каждый раз, когда определенная команда используется?

Есть ли способ вызвать sudo команда для просьбы пароль каждый раз, когда я использую sudo rm /path/file?

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

17
задан 13 December 2019 в 17:42

4 ответа

Как отмечено в других ответах, sudo может установить тайм-аут на кэшируемой учетной метке времени. Это может быть сделано специально для данной команды с помощью Defaults в sudoers:

Defaults!/bin/rm timestamp_timeout=0

Всегда не забывают редактировать sudoers с visudo. Я рекомендую общедоступный файл в /etc/sudoers.d вместо того, чтобы редактировать /etc/sudoers непосредственно. Например:

sudo visudo -f /etc/sudoers.d/always-ask-pass-for-rm

От [1 113] страница справочника для [1 110] :

Значения по умолчанию

параметры конфигурации Certain могут быть изменены от их значений по умолчанию во времени выполнения через один или несколько Default_Entry строки. Они могут влиять на всех пользователей на любом хосте, всех пользователей на определенном хосте, определенного пользователя, определенную команду или команды, выполняемые как определенный пользователь. Обратите внимание, что записи на команду не могут включать параметры командной строки. Если необходимо указать аргументы, определите Cmnd_Alias и ссылка это вместо этого.

Default_Type ::= 'Defaults' |
                 'Defaults' '@' Host_List |
                 'Defaults' ':' User_List |
                 'Defaults' '!' Cmnd_List |
                 'Defaults' '>' Runas_List

Default_Entry ::= Default_Type Parameter_List

Parameter_List ::= Parameter |
                   Parameter ',' Parameter_List

Parameter ::= Parameter '=' Value |
              Parameter '+=' Value |
              Parameter '-=' Value |
              '!'* Parameter

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

24
ответ дан 21 December 2019 в 23:34

rm сценарий

обертки Когда-то назад я записал сценарий обертки для эти rm команда:

Некоторые достойные внимания особенности:

  • зашифрованный пароль должен использоваться, каждый раз rm называют, если он не используется в пакетном задании как sudo apt-get или sudo update-grub.
  • Гарантируют, что высокоуровневые каталоги никогда не удаляются, даже если относительный путь был передан.
  • Каждый раз rm используется, он зарегистрирован к journalctl и /var/log/syslog.
2
ответ дан 21 December 2019 в 23:34

Можно использовать k опция с sudo для сброса метки времени.

, Если бы sudo -k используется в качестве команды, она сразу истекала бы/делала бы недействительным кэшируемые учетные данные.

, Но если бы sudo -k используется с некоторой командой, например, sudo -k rm /some/file, оболочка попросила бы пароль, даже если некоторые учетные данные уже кэшируются. В этом случае новые учетные данные не будут кэшироваться. Это означает, выполняется ли другая команда с sudo после этого, она не попросит пароль (если учетные данные кэшировались ранее).

От [1 110] страница справочника sudo:

К [команды]

                При одном только использовании-k (уничтожают) опцию к sudo, делает недействительным кэшируемые учетные данные пользователя. Следующий раз sudo выполняется, пароль будет требоваться. Эта опция не требует пароля и была добавлена, чтобы позволить пользователю отменять sudo полномочия из .logout файла. Не вся политика безопасности поддерживает учетное кэширование.

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

, Если Вы хотите сделать sudo для просьбы пароль для определенных команд, не используя k каждый раз, можно определить пользовательские функции в .bashrc. Например, от [1 111] комментарий pa4080:

sudo() { if [[ $@ =~ ^rm ]]; then /usr/bin/sudo -k "$@"; else /usr/bin/sudo "$@"; fi; }
13
ответ дан 21 December 2019 в 23:34

Можно установить sudo, чтобы всегда попросить пароль:


$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset, timestamp_timeout=120, pwfeedback
#Defaults   mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

В моей конфигурации у меня есть sudo набор тайм-аута в 2 часа (120 минут), прежде чем это попросит пароль снова. Установка его к 0 потребует пароля каждый раз, когда Вы используете sudo

3
ответ дан 21 December 2019 в 23:34

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

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