suとsudoの違い、およびLinuxでsudoを構成する方法

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

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

Linux: su v/s sudo

注意– この記事はUbuntuベースのディストリビューションにも適用されますが、多くの一般的なLinuxディストリビューションにも適用されます。

‘su’対’sudo’

su‘は他のユーザーとrootパスワードを共有するよう強制しますが、’sudo‘はrootパスワードなしでシステムコマンドを実行できるようにします。‘sudo‘を使用すると、システムコマンドを実行するために独自のパスワードを使用できるため、rootパスワードなしにシステムの責任を委任できます。

‘sudo’とは何ですか?

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

‘sudo’を実行できるのは誰ですか?

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

$ sudo /usr/sbin/visudo

A screen shot of ‘/usr/sbin/visudo‘ file, looks something like this:

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 のパラメータ

A properly configured ‘sudo‘ is very flexible and number of commands that needs to be run may be precisely configured.

構成済みの ‘sudo‘ 行の構文は次のようになります:

User_name Machine_name=(Effective_user) command

上記の構文は、四つの部分に分かれます:

  1. ユーザー名: これは ‘sudo‘ ユーザー名です。
  2. マシン名: これは ‘sudo‘ コマンドが有効なホスト名です。大量のホストマシンを持っている場合に便利です。
  3. (実効ユーザー): コマンドを実行できる ‘実効ユーザー’ です。この列によりユーザーがシステムコマンドを実行することが許可されます。
  4. コマンド: ユーザーが実行できるコマンドまたは一連のコマンドです。

提案された読み物: Linuxで’sudo’を設定するための10の有用なSudoers設定

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

Q1. データベース管理者であるユーザーmarkを持っています。彼には、Database Server (beta.database_server.com)上でのみ、すべてのアクセスを提供する必要があります。

上記の状況では、’sudo’行は次のように書くことができます:

mark beta.database_server.com=(ALL) ALL

Q2. ユーザー’tom‘が、同じDatabase Server上でroot以外のユーザーとしてシステムコマンドを実行する必要があります。

上記の状況では、’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ユーティリティで、長大なコマンドやコマンドのリストを短くて簡単なキーワードとして参照することができます。

A few alias Examples, which can be used in place of entry in ‘sudo‘ configuration file.

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

クエスチョン5. パスワードを入力せずに ‘sudo’ コマンドを実行する方法はありますか?

私たちは ‘NOPASSWD’ フラグを使用してパスワードを入力せずに ‘sudo’ コマンドを実行することができます。

adam ALL=(ALL) NOPASSWD: PROCS

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

関連記事: パスワードを間違えた場合にSudoに侮辱させる

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

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

adduser bob sudo

それでは今回は以上です。また別の興味深い記事でお会いしましょう。その間、Tecmintにアクセスを保ち、つながり続けてください。コメントセクションで貴重なフィードバックをお忘れなく。

Source:
https://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/