Sudo rm /path/file
を使用するたびにSudo
コマンドに毎回パスワードを要求する方法はありますか?
私は歴史からいくつかのコマンドを実行しているときに注意力が低いために犯された愚かな間違いから自分を守りたいのです。
他の回答で述べたように、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
From sudoers
のマンページ :
デフォルト
特定の構成オプションは、1つ以上の
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
「特定のユーザーとして実行されているコマンド」に影響を与えることができると記載されていますが、特定のユーザーによって実行されているコマンドについては言及されていないことに注意してください。ユーザーのみに制限することはできない場合があります。 マンページの例 には何も含まれていません。
k
オプションをSudo
とともに使用して、タイムスタンプをリセットできます。
Sudo -k
をコマンドとして使用すると、キャッシュされた資格情報がすぐに期限切れ/無効になります。
ただし、Sudo -k
をSudo -k rm /some/file
などのコマンドで使用すると、一部の資格情報が既にキャッシュされている場合でも、シェルはパスワードを要求します。この場合、新しい資格情報はキャッシュされません。つまり、その後にSudo
を含む別のコマンドが実行されても、パスワードは要求されません(資格情報が以前にキャッシュされている場合)。
Sudoのマンページ から:
-k [コマンド]
単独で使用した場合、Sudoの-k(kill)オプションは、ユーザーのキャッシュされた資格情報を無効にします。次回Sudoを実行するときには、パスワードが必要になります。このオプションはパスワードを必要とせず、ユーザーが.logoutファイルからSudo権限を取り消すことができるように追加されました。すべてのセキュリティポリシーが資格情報のキャッシュをサポートしているわけではありません。
パスワードを必要とする可能性のあるコマンドまたはオプションと組み合わせて使用した場合、-kオプションを指定すると、Sudoはユーザーのキャッシュされた資格情報を無視します。その結果、Sudoはパスワードを要求し(セキュリティポリシーでパスワードが必要な場合)、ユーザーのキャッシュされた資格情報を更新しません。
Sudo
がk
を毎回使用せずに特定のコマンドのパスワードを要求するようにする場合は、.bashrc
でカスタム関数を定義できます。たとえば、 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
を使用するたびにパスワードが必要になります
rm
ラッパースクリプト先ほど、rm
コマンドのラッパースクリプトを書きました。
注目すべき機能のいくつか:
Sudo apt-get
やSudo update-grub
などのバッチジョブ内で使用されていない限り、rm
が呼び出されるたびに使用する必要があります。rm
が使用されるたびに、journalctl
および/var/log/syslog
に記録されます。