su と sudo の違いと Linux で sudo を設定する方法
Linux システム は、他のどのシステムよりも安全です。 Linux でセキュリティを実装する方法の 1 つはユーザー管理ポリシーとユーザー許可であり、通常のユーザーにはシステム操作を実行する権限がありません。
通常のユーザーがシステム全体の変更を実行する必要がある場合は、「su」または「sudo」コマンドを使用する必要があります。
注 – この記事はUbuntuベースのディストリビューションにさらに適用されますが、人気のあるほとんどのLinuxにも適用できます。配布物。
「す」対「sudo」
「su」を使用すると、root パスワードを他のユーザーに共有する必要があり、「sudo」を使用すると、 root パスワードを使用しないシステム コマンド。 「sudo」を使用すると、独自のパスワードを使用してシステム コマンドを実行できます。つまり、root パスワードを使用せずにシステムの責任を委任できます。
「sudo」とは何ですか?
「sudo」はルート バイナリの setuid であり、許可されたユーザーに代わって root コマンドを実行します。ユーザーは実行するには自分のパスワードを入力する必要があります。システム コマンドの後に「sudo」を続けます。
「sudo」を実行できるのは誰ですか?
「/usr/sbin/visudo」を実行して、「sudo」を実行できるユーザーのリストを追加または削除できます。
$ sudo /usr/sbin/visudo
「/usr/sbin/visudo」 ファイルのスクリーンショットは次のようになります。
デフォルトでは、sudo リストは次の文字列のようになります。
root ALL=(ALL) ALL
注: /usr/sbin/visudo を編集するには、root である必要があります。ファイル。
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
上記の構文は 4 つの部分に分けることができます。
- User_name: これは「sudo」ユーザーの名前です。
- Machine_name: これは、「sudo」コマンドが有効なホスト名です。多数のホスト マシンがある場合に便利です。
- (Effective_user): コマンドの実行を許可される「有効なユーザー」。この列では、ユーザーがシステム コマンドを実行できるようにします。
- コマンド: ユーザーが実行できるコマンドまたは一連のコマンド。
推奨読書: Linux で「sudo」を設定するための 10 の便利な Sudoers 構成
いくつかの状況と、それに対応する 'sudo' 行:
Q1. データベース管理者であるユーザーマークがいます。あなたは彼に、データベース サーバー (beta.database_server.com) のみへのすべてのアクセス権を提供し、ホストへのアクセス権を提供する必要はありません。
上記の状況では、「sudo」行は次のように記述できます。
mark beta.database_server.com=(ALL) ALL
Q2. ユーザー 'tom' がいるのですが、このユーザーはシステム コマンドを別のユーザーとして実行することになっています。上記で説明したように、同じデータベース サーバー上の root 。
上記の状況では、「sudo」行は次のように記述できます。
mark beta.database_server.com=(tom) ALL
Q3. コマンド「」を実行することになっている 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 ユーティリティです。
いくつかのalias 例。「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」コマンドを実行してみてはいかがでしょうか?
「NOPASSWD」フラグを使用すると、パスワードを入力せずに「sudo」コマンドを実行できます。
adam ALL=(ALL) NOPASSWD: PROCS
ここで、ユーザー「adam」は、パスワードを入力せずに、「PROCS」 の下にエイリアスされたすべてのコマンドを実行できます。
推奨読書: 間違ったパスワードを入力すると Sudo に侮辱される
「sudo 」は、「su」に比べて柔軟性が高く、堅牢で安全な環境を提供します。さらに、「sudo」の設定も簡単です。一部の Linux ディストリビューションではデフォルトで「sudo」が有効になっていますが、今日のほとんどのディストリビューションではセキュリティ対策としてこれを有効にする必要があります。
ユーザー (bob) を sudo に追加するには、root として以下のコマンドを実行するだけです。
adduser bob sudo
今のところは以上です。また別の興味深い記事をお届けします。それまでは引き続き Tecmint に接続してください。コメントセクションに貴重なフィードバックをお寄せください。