Linuxおよびその他のUnixライクなオペレーティングシステムでは、ルートのみ ユーザーは、すべてのコマンドを実行し、インストールと更新、パッケージの削除、ユーザーとグループの作成、重要なシステム構成ファイルの変更など、システム上で特定の重要な操作を実行できます。
ただし、rootユーザーの役割を引き受けるシステム管理者は、sudoコマンドといくつかの構成を使用して、他の通常のシステムユーザーにいくつかのコマンドの実行を許可したり、上記のような重要なシステム操作を実行したりできます。
または、システム管理者がrootユーザーのパスワードを共有して(推奨される方法ではありません)、通常のシステムユーザーが suを介してrootユーザーアカウントにアクセスできるようにすることもできます。 コマンド。
sudo セキュリティポリシーで指定されているように、許可されたユーザーがroot(または別のユーザー)としてコマンドを実行できるようにします。
- / etc / sudoersを読み取って解析します 、呼び出し元のユーザーとその権限を検索します。
- 次に、呼び出し元のユーザーにパスワードの入力を求めます(通常はユーザーのパスワードですが、ターゲットユーザーのパスワードにすることもできます。または、NOPASSWDタグを使用してスキップすることもできます)。
- その後、sudoは setuid()を呼び出す子プロセスを作成します ターゲットユーザーに切り替えるには
- 次に、上記の子プロセスで引数として指定されたシェルまたはコマンドを実行します。
以下は10個の/etc / sudoers sudoの動作を変更するためのファイル構成 デフォルトを使用したコマンド エントリ。
$ sudo cat /etc/sudoers/ etc / sudoers File
# # 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 [email protected]_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環境変数を持っていると信頼していない場合に使用されます
- 「ルートパス」と「ユーザーパス」を区別するには、 excempt_groupで定義されたユーザーのみ この設定の影響を受けません。
設定するには、次の行を追加します:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
2。 TTYユーザーログインセッションでsudoを有効にする
実際のttyからsudoを呼び出せるようにするため ただし、 cronなどの方法では使用できません またはcgi-bin スクリプト、次の行を追加します:
Defaults requiretty
3。 ptyを使用してSudoコマンドを実行する
攻撃者は、sudoを使用して悪意のあるプログラム(ウイルスやマルウェアなど)を実行することがあります。これにより、メインプログラムの実行が終了しても、ユーザーの端末デバイスに残っているバックグラウンドプロセスが再びフォークされます。
このようなシナリオを回避するために、 pseudo-ptyからのみ他のコマンドを実行するようにsudoを構成できます。 use_pty
を使用する パラメータ、I / Oロギングがオンになっているかどうかは次のとおりです:
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。 LogSudoコマンドの入力/出力
log_input およびlog_output パラメータを使用すると、sudoはpseudo-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ユーザーに講義するには、講義を使用します 以下のパラメータ。
3つの可能な値があります:
- 常に–常にユーザーに講義します。
- 1回–ユーザーがsudoコマンドを初めて実行するときにのみ講義します(これは、値が指定されていない場合に使用されます)
- 決して–ユーザーに講義しないでください。
Defaults lecture="always"
さらに、 lecture_fileを使用してカスタム講義ファイルを設定できます パラメータを入力し、ファイルに適切なメッセージを入力します:
Defaults lecture_file="/path/to/file"


7。間違ったsudoパスワードを入力したときにカスタムメッセージを表示する
ユーザーが間違ったパスワードを入力すると、コマンドラインに特定のメッセージが表示されます。デフォルトのメッセージは「申し訳ありませんが、もう一度やり直してください 」、 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ユーザーと共有できます。