私はパスワードを入力するのが好きではありませんSudoだから私はそれを無効にする
%sudo ALL=(ALL) NOPASSWD: ALL
今悪い副作用がありました。私が実行しているすべてのシェルスクリプトは自動的に実行されます。Sudo私を代表してください。
最も一般的なユースケースは、実験的な項目を$ {HOME} / localにインストールして設定することを忘れてしまうことです。プレフィックス。
質問- スクリプトでsudoへの非対話型呼び出しをブロックする基本的な方法はありますか?存在するアーキテクチャLinux、もう少し具体的に教えてください。
答え1
「スクリプトされたsudo」と「対話型sudo」は矛盾しないので、望むことはできません。端末でsudoを使用してスクリプトを実行できます。端末で完全に自動化された方法でコマンドを実行できるツールの例には、、、、script
などがあります。expect
screen
tmux
sudoがユーザーが「直接」実行していることを何らかの方法で検出できますが(プロセスではなくキーボードやマウスなどの周辺機器と対話するためではありません)、悪意のあるスクリプトからユーザーを保護することはできません。たとえば、悪意のあるスクリプトはアカウントに偽のコマンドを追加し、次に実行するときにsudo
アクセス権を個別に使用するラッパーを呼び出す可能性があります。
いずれにせよ、保護する脅威は特に関係がありません。
ソーシャルメディアアカウントの盗難など、疑わしい作業を行わないソフトウェアの一部を信頼していない場合は、そのソフトウェアをアカウントで実行しないでください。少なくとも他のアカウント(もちろんsudoerではない)で実行してください。GUIアクセス不可。より良い分離のために仮想マシンで実行してください。 (これは完璧ではありません。一般的なマルウェアから安全ですが、政府があなたをターゲットにしている場合は必ずしもそうではありません。)
答え2
またザイルズの答えCan I block non-interactive sudo invocation?
問題の側面に応じて、状況の特定の要素に対する解決策を提案します。
sudoパスワードを入力するのが嫌で無効になりました。
そして
今悪い副作用がありました。私が実行しているすべてのシェルスクリプトは私の代わりに自動的にsudoを実行できます。
もしあなたの状況は通常、いくつかのsudo
異なるコマンドを実行しますが、パスワードを要求せずに自動的にsudoスクリプトを実行して、ルートレベルで何が起こっているのかを理解することです。できる:
- NOPASSWDオプションのキャンセル
- タイムスタンプタイムアウトをインベントリ以上に5分延長
- 信頼できないスクリプトを実行する前にsudoタイムスタンプを終了します。
NOPASSWD
このオプションのsudoerを編集する方法はすでにわかっています。
延長するためtimestamp_timeout
sudoers ファイルで非常に高い値または負の値に設定します。このパラメータのマニュアルページの関連フラグメント:
タイムスタンプタイムアウト
sudoがパスワードを再要求するまでに経過できる時間(分)。
デフォルトは 5 です。
0未満の値に設定すると、システムが再起動されるまでユーザーのタイムスタンプは期限切れになりません。
不明なスクリプトを実行しようとしている場合は、次を実行してください。sudo -k
「キル」タイムスタンプ:
-K
コマンドなしで使用すると、ユーザーのキャッシュされた資格情報が無効になります。つまり、次にsudoを実行するときにパスワードが必要です。
sudo
スクリプトを実行し、sudoがパスワードの入力を求められたら、そのスクリプトが呼び出されたことを知り、必要に応じてスクリプトを中断できます。
ところで設定をおすすめしますプロンプトパラメータの渡しその中にテキストを含めますsudo
。例:
Defaults passprompt="[sudo] password for %u:"
...したがって、sudoが(他のツールとは異なり)パスワードを求めるメッセージを表示する場合、これは明らかです。