GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで「sudo」を設定するための10の便利なSudoers構成

Linuxおよびその他のUnixライクなオペレーティングシステムでは、ルートのみ ユーザーは、すべてのコマンドを実行し、インストールと更新、パッケージの削除、ユーザーとグループの作成、重要なシステム構成ファイルの変更など、システム上で特定の重要な操作を実行できます。

ただし、rootユーザーの役割を引き受けるシステム管理者は、sudoコマンドといくつかの構成を使用して、他の通常のシステムユーザーにいくつかのコマンドの実行を許可したり、上記のような重要なシステム操作を実行したりできます。

または、システム管理者がrootユーザーのパスワードを共有して(推奨される方法ではありません)、通常のシステムユーザーが suを介してrootユーザーアカウントにアクセスできるようにすることもできます。 コマンド。

sudo セキュリティポリシーで指定されているように、許可されたユーザーがroot(または別のユーザー)としてコマンドを実行できるようにします。

  1. / etc / sudoersを読み取って解析します 、呼び出し元のユーザーとその権限を検索します。
  2. 次に、呼び出し元のユーザーにパスワードの入力を求めます(通常はユーザーのパスワードですが、ターゲットユーザーのパスワードにすることもできます。または、NOPASSWDタグを使用してスキップすることもできます)。
  3. その後、sudoは setuid()を呼び出す子プロセスを作成します ターゲットユーザーに切り替えるには
  4. 次に、上記の子プロセスで引数として指定されたシェルまたはコマンドを実行します。

以下は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つの重要性があります。

  1. システム管理者がsudoユーザーが安全なPATH環境変数を持っていると信頼していない場合に使用されます
  2. 「ルートパス」と「ユーザーパス」を区別するには、 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. 常に–常にユーザーに講義します。
  2. 1回–ユーザーがsudoコマンドを初めて実行するときにのみ講義します(これは、値が指定されていない場合に使用されます)
  3. 決して–ユーザーに講義しないでください。
 
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ユーザーと共有できます。


Linux
  1. Podmanでsudoを使用せずにLinuxでコンテナを実行する

  2. LinuxですべてのSudoユーザーを見つける方法

  3. LinuxでのGrafanaのインストールとセットアップ

  1. Linux用の11の最高のCADソフトウェア

  2. RockyLinux8でSudoユーザーを作成する方法

  3. Linux での sudo コマンドの例

  1. すべてのユーザーに必要な20のLinuxコマンド

  2. LinuxでユーザーのSudo権限を設定する方法

  3. PYTHONPATH が GNU/Linux の sudo で機能しない (root で機能)