Есть ли способ вызвать sudo
команда для просьбы пароль каждый раз, когда я использую sudo rm /path/file
?
Я хочу защитить мой сам от глупых ошибок, совершенных из-за низкого внимания, когда я выполняю некоторые команды из истории.
Как отмечено в других ответах, 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
Примечание, что это действительно говорит Вас, может влиять "на команды, выполняемые как определенный пользователь", но не упоминает команды, выполняемые определенным пользователем , таким образом, не могло бы быть возможно ограничить его только для Вашего пользователя. Эти примеры в странице справочника ничего не включают для этого.
rm
сценарий обертки Когда-то назад я записал сценарий обертки для эти rm
команда:
Некоторые достойные внимания особенности:
rm
называют, если он не используется в пакетном задании как sudo apt-get
или sudo update-grub
. rm
используется, он зарегистрирован к journalctl
и /var/log/syslog
. Можно использовать 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; }
Можно установить 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