Linux で「sudo」を設定するための 10 の便利な Sudoers 構成
Linux およびその他の Unix 系オペレーティング システムでは、root ユーザーのみがすべてのコマンドを実行し、インストールと更新、パッケージの削除、ユーザーとグループの作成、重要なシステムの変更など、システム上で特定の重要な操作を実行できます。設定ファイルなど。
ただし、root ユーザーの役割を引き受けるシステム管理者は、sudo コマンドといくつかの設定を使用して、他の通常のシステム ユーザーがいくつかのコマンドを実行したり、上記の操作を含む多くの重要なシステム操作を実行したりすることを許可できます。
あるいは、システム管理者が root ユーザーのパスワードを共有し (これは推奨される方法ではありません)、通常のシステム ユーザーが su コマンドを介して root ユーザー アカウントにアクセスできるようにすることもできます。
sudo を使用すると、セキュリティ ポリシーで指定されているように、許可されたユーザーが root (または別のユーザー) としてコマンドを実行できます。
- /etc/sudoers を読み取って解析し、呼び出し元のユーザーとその権限を調べます。
- 次に、呼び出し元のユーザーにパスワードの入力を求めます (通常はユーザーのパスワードですが、ターゲット ユーザーのパスワードでも構いません。または、NOPASSWD タグを使用してスキップできます)。
- その後、sudo は子プロセスを作成し、その中で setuid() を呼び出してターゲット ユーザーに切り替えます。
- 次に、シェルまたは上記の子プロセスで引数として指定されたコマンドを実行します。
以下は、デフォルトエントリを使用して sudo コマンドの動作を変更するための 10 個の /etc/sudoers ファイル構成です。
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
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults logfile="/var/log/sudo.log"
Defaults lecture="always"
Defaults badpass_message="Password is wrong, please try again"
Defaults passwd_tries=5
Defaults insults
Defaults log_input,log_output
デフォルトエントリの種類
Defaults parameter, parameter_list #affect all users on any host
Defaults@Host_List parameter, parameter_list #affects all users on a specific host
Defaults:User_List parameter, parameter_list #affects a specific user
Defaults!Cmnd_List parameter, parameter_list #affects a specific command
Defaults>Runas_List parameter, parameter_list #affects commands being run as a specific user
このガイドの範囲では、以下の形式の最初のタイプのデフォルトに絞り込みます。パラメータは、フラグ、整数値、文字列、リストのいずれかです。
フラグは暗黙的にブール値であり、'!'
演算子を使用してオフにすることができ、リストには 2 つの追加の代入演算子、+=
(リストに追加) と +=
(リストに追加) があることに注意してください。 -=
(リストから削除)。
Defaults parameter
OR
Defaults parameter=value
OR
Defaults parameter -=value
Defaults parameter +=value
OR
Defaults !parameter
1. 安全なパスを設定する
これは sudo で実行されるすべてのコマンドに使用されるパスであり、次の 2 つの重要性があります。
- システム管理者が sudo ユーザーが安全な PATH 環境変数を持っていることを信頼していない場合に使用されます。
- 「root path 」と「user path 」を分けるため、exempt_group で定義されたユーザーのみがこの設定の影響を受けません。
これを設定するには、次の行を追加します。
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
2. TTY ユーザーログインセッションで sudo を有効にする
cron や cgi-bin スクリプトなどのメソッドではなく、実際の tty から sudo を呼び出せるようにするには、次の行を追加します。
Defaults requiretty
3. pty を使用して Sudo コマンドを実行する
攻撃者が sudo を使用して悪意のあるプログラム (ウイルスやマルウェアなど) を実行することが何度かあります。これにより、メイン プログラムの実行が終了してもユーザーの端末デバイスに残るバックグラウンド プロセスが再びフォークされます。
このようなシナリオを回避するには、I/O ログがオンになっているかどうかに関係なく、use_pty
パラメータを使用して、psuedo-pty からのみ他のコマンドを実行するように sudo を設定できます。以下に続きます:
Defaults use_pty
4. Sudo ログ ファイルを作成する
デフォルトでは、sudo は syslog(3) を通じてログを記録します。ただし、カスタム ログ ファイルを指定するには、次のように logfile パラメーターを使用します。
Defaults logfile="/var/log/sudo.log"
ホスト名と 4 桁の年をカスタム ログ ファイルに記録するには、次のように log_host パラメータと log_year パラメータをそれぞれ使用します。
Defaults log_host, log_year, logfile="/var/log/sudo.log"
以下はカスタム sudo ログ ファイルの例です。
5. Sudo コマンドの入出力をログに記録する
log_input パラメータと log_output パラメータを使用すると、sudo が擬似 tty でコマンドを実行し、すべてのユーザー入力と画面に送信されたすべての出力をログに記録できるようになります。
デフォルトの I/O ログ ディレクトリは /var/log/sudo-io で、セッション シーケンス番号がある場合は、このディレクトリに保存されます。 iolog_dir パラメータを通じてカスタム ディレクトリを指定できます。
Defaults log_input, log_output
%{seq}
など、いくつかのエスケープ シーケンスがサポートされています。これは、000001 などの単調増加する Base-36 シーケンス番号に展開され、2 桁ごとに新しいディレクトリが形成されます。以下の例のように、00/00/01:
cd /var/log/sudo-io/
ls
cd 00/00/01
ls
cat log
cat コマンドを使用して、そのディレクトリ内の残りのファイルを表示できます。
6. Sudo ユーザーをレクチャーする
システムでのパスワードの使用法について sudo ユーザーにレクチャーするには、以下のように lecture パラメータを使用します。
可能な値は 3 つあります。
- 常に – 常にユーザーに説教します。
- 1 回 – 初めて sudo コマンドを実行するときにのみユーザーにレクチャーします (値が指定されていない場合に使用されます)
- 決して – ユーザーに説教をしないでください。
Defaults lecture="always"
さらに、lecture_file パラメータを使用してカスタムのレクチャー ファイルを設定し、ファイルに適切なメッセージを入力することもできます。
Defaults lecture_file="/path/to/file"
7. 間違った sudo パスワードを入力したときにカスタム メッセージを表示する
ユーザーが間違ったパスワードを入力すると、コマンド ラインに特定のメッセージが表示されます。デフォルトのメッセージは「sorry, try again」ですが、次のように badpass_message パラメータを使用してメッセージを変更できます。
Defaults badpass_message="Password is wrong, please try again"
8. sudo パスワード試行制限を増やす
パラメータ passwd_tries は、ユーザーがパスワードの入力を試行できる回数を指定するために使用されます。
デフォルト値は 3 です。
Defaults passwd_tries=5
passwd_timeout パラメータを使用してパスワードのタイムアウト (デフォルトは 5 分) を設定するには、以下の行を追加します。
Defaults passwd_timeout=2
9. 間違ったパスワードを入力すると Sudo に侮辱される
ユーザーが間違ったパスワードを入力した場合、sudo は insults パラメーターを使用して端末に侮辱を表示します。これにより、badpass_message パラメータが自動的にオフになります。
Defaults insults
詳細: 間違ったパスワードを入力すると Sudo があなたを侮辱します
10. Sudo 設定の詳細
さらに、sudo コマンドの設定について詳しくは、「su と sudo の違い」および「Linux で sudo を設定する方法」を参照してください。
それでおしまい!以下のコメントセクションを通じて、他の便利な sudo コマンド設定やトリックやヒントを Linux ユーザーと共有できます。