ウェブサイト検索

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


Linuxシステムはそのどの対抗製品よりもはるかに安全です。Linuxでセキュリティを実装する方法の1つは、ユーザー管理ポリシーとユーザー権限であり、通常のユーザーはシステム操作を実行することが許可されていません。

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

注意 - この記事はUbuntuベースのディストリビューションにより適用されますが、一般的なLinuxディストリビューションのほとんどにも適用されます。

'su' と 'sudo' の違い

'su'は他のユーザーと'rootパスワード'を共有させるのに対し、'sudo'は'root'パスワードなしでシステムコマンドを実行できるようにします。'sudo'を使うことで、自分のパスワードを使ってシステムコマンドを実行でき、'root'パスワードなしでシステムの責任を委任することができます。

「sudo」とは何ですか?

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

誰が「sudo」を実行できますか?

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

$ sudo /usr/sbin/visudo

「/usr/sbin/visudo」ファイルのスクリーンショットは、次のように見えます:

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

root ALL=(ALL) ALL

注意: rootでなければ/usr/sbin/visudoファイルを編集することはできません。

sudoアクセスを付与する

多くの状況で、特にこの分野に新しく入ったシステム管理者は、「root ALL=(ALL) ALL」という文字列をテンプレートとして見つけ、他の人に制限のないアクセスを許可することがありますが、これは非常に危険な場合もあります。

/usr/sbin/visudo ファイルを以下のようなパターンに編集することは、本当に非常に危険かもしれません。すべてのリストされたユーザーを完全に信じているのでなければ。

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

sudoのパラメータ

適切に設定された‘sudo’は非常に柔軟で、実行する必要があるコマンドの数を正確に設定することができます。

設定された‘sudo‘行の構文は次のとおりです。

User_name Machine_name=(Effective_user) command

上記の構文は四つの部分に分けることができます:

  1. User_name: これは「sudo」ユーザーの名前です。
  2. マシン名: これはホスト名であり、‘sudo’コマンドが有効です。多数のホストマシンを持っているときに便利です。
  3. (効果的なユーザー): コマンドを実行できる「効果的なユーザー」。この列は、ユーザーがシステムコマンドを実行できるようにします。
  4. コマンド: ユーザーが実行する可能性のあるコマンドまたはコマンドのセット。

おすすめの読書: Linuxで'sudo'を設定するための10の便利なSudoers構成

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

Q1. あなたにはmarkというユーザーがいます。彼はデータベース管理者です。あなたは彼にデータベースサーバー(beta.database_server.com)へのすべてのアクセスを提供する必要がありますが、どのホストにもアクセスを与えてはいけません。

上記の状況については、「sudo」行は次のように書くことができます:

mark beta.database_server.com=(ALL) ALL

Q2. 同じデータベースサーバー上で、ルート以外のユーザーとしてシステムコマンドを実行する必要があるユーザー「tom」があります。

上記の状況については、「sudo」行は次のように書くことができます:

mark beta.database_server.com=(tom) ALL

Q3. あなたには、コマンド「dog」のみを実行することになっているsudoユーザー「cat」があります。

上記の状況を実装するために、次のように「sudo」と書くことができます:

mark beta.database_server.com=(cat) dog

Q4. もしユーザーに複数のコマンドを付与する必要がある場合はどうなりますか?

ユーザーが実行すべきコマンドの数が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

Q5. パスワードを入力せずに「sudo」コマンドを実行するのはどうですか?

私たちは「sudo」コマンドをパスワードを入力せずに実行することが、「NOPASSWD」フラグを使用することで可能です。

adam ALL=(ALL) NOPASSWD: PROCS

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

おすすめの読書: 正しいパスワードを入力しなかったときにSudoに侮辱させてください

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

ユーザー(ボブ)をsudoに追加するには、以下のコマンドをrootとして実行してください。

adduser bob sudo

今のところそれだけです。また面白い記事とともにここに戻ってきます。それまで、Tecmintに注目してつながり続けてください。コメント欄で貴重なフィードバックをお寄せいただくのを忘れないでください。

関連記事: