suとsudoの違いとLinuxでsudoを設定する方法


Linuxシステムは、他のどのシステムよりもはるかに安全です。 Linuxでセキュリティを実装する方法の1つは、ユーザー管理ポリシーとユーザー権限であり、通常のユーザーはシステム操作を実行する権限がありません。

通常のユーザーがシステム全体の変更を実行する必要がある場合は、「su」または「sudo」コマンドを使用する必要があります。

注–この記事は、Ubuntuベースのディストリビューションに当てはまりますが、一般的なLinuxディストリビューションのほとんどにも当てはまります。

「su」を使用すると、 rootパスワードを他のユーザーと共有する必要がありますが、「sudo」を使用すると、 root パスワードなしでシステムコマンドを実行できます。 「sudo」を使用すると、独自のパスワードを使用してシステムコマンドを実行できます。つまり、 root パスワードなしでシステムの責任を委任できます。

「sudo」はルートバイナリ setuid であり、許可されたユーザーに代わってルートコマンドを実行します。ユーザーは自分のパスワードを入力して、システムコマンドの後に「sudo」を実行する必要があります。

「/ usr/sbin/visudo」を実行して、「sudo」を実行できるユーザーのリストを追加/削除できます。

$ sudo /usr/sbin/visudo

‘/ usr/sbin/visudo‘ファイルのスクリーンショットは次のようになります。

デフォルトでは、sudoリストは次の文字列のようになります。

root ALL=(ALL) ALL

注:/ usr/sbin/visudoファイルを編集するには、 root である必要があります。

多くの場合、この分野に特に慣れていないシステム管理者は、文字列「root ALL u003d(ALL)ALL」をテンプレートとして見つけ、非常に有害な可能性のある他のユーザーに無制限のアクセスを許可します。

「/ usr/sbin/visudo」ファイルを以下のパターンのようなものに編集することは、リストされているすべてのユーザーを完全に信じない限り、非常に危険な場合があります。

root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL

適切に構成された「sudo」は非常に柔軟性があり、実行する必要のあるコマンドの数を正確に構成できます。

構成された「sudo」行の構文は次のとおりです。

User_name Machine_name=(Effective_user) command

上記の構文は、次の4つの部分に分けることができます。

  1. User_name: This is the name of ‘sudo‘ user.
  2. Machine_name: This is the host name, in which ‘sudo‘ command is valid. Useful when you have lots of host machines.
  3. (Effective_user): The ‘Effective user’ that are allowed to execute the commands. This column lets you allows users to execute System Commands.
  4. Command: command or a set of commands which user may run.

いくつかの状況とそれに対応する「sudo」行:

<スパンスタイルu003d色:

上記の状況では、「sudo」行は次のように記述できます。

mark beta.database_server.com=(ALL) ALL

<スパンスタイルu003d色:

上記の状況では、「sudo」行は次のように記述できます。

mark beta.database_server.com=(tom) ALL

<スパンスタイルu003d色:

上記の状況を実装するには、「sudo」を次のように記述します。

mark beta.database_server.com=(cat) dog

<スパンスタイルu003d色:

ユーザーが実行するはずのコマンドの数が10未満の場合、以下に示すように、すべてのコマンドを横に配置し、間に空白を入れることができます。

mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...

このコマンドのリストが範囲によって異なり、各コマンドを手動で入力することが文字通り不可能な場合は、エイリアスを使用する必要があります。エイリアス!ええ、Linuxユーティリティでは、長いコマンドまたはコマンドのリストを小さくて簡単なキーワードとして参照できます。

いくつかのエイリアスの例。「sudo」構成ファイルのエントリの代わりに使用できます。

User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top

以下のように、ユーザーの代わりに、「%」の接尾辞を付けるだけでそのグループに属するシステムグループを指定することができます。

%apacheadmin WEBSERVERS=(www) APACHE

<スパンスタイルu003d色:

「NOPASSWD」フラグを使用すると、パスワードを入力せずに「sudo」コマンドを実行できます。

adam ALL=(ALL) NOPASSWD: PROCS

ここで、ユーザー「adam」は、パスワードを入力せずに、「PROCS」でエイリアスされたすべてのコマンドを実行できます。

「sudo」は、「su」と比較して柔軟性の高い堅牢で安全な環境を提供します。さらに、「sudo」構成は簡単です。一部のLinuxディストリビューションでは、デフォルトで「sudo」が有効になっていますが、今日のほとんどのディストリビューションでは、セキュリティ対策として「sudo」を有効にする必要があります。

ユーザー(bob)をsudoに追加するには、rootとして以下のコマンドを実行するだけです。

adduser bob sudo

それは今のところすべてです。別の興味深い記事でまたここに来ます。それまでは、しばらくお待ちください。Tecmintに接続します。コメントセクションで貴重なフィードバックをお寄せください。