Linuxシステムは、その他のどのシステムよりも安全です。 Linuxでセキュリティを実装する方法の1つは、ユーザー管理ポリシーとユーザー権限であり、通常のユーザーはシステム操作を行う権限を持っていません。
通常のユーザーがシステム全体の変更を行う必要がある場合、’su’または’sudo’コマンドを使用する必要があります。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
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
上記の構文は、四つの部分に分かれます:
- ユーザー名: これは ‘sudo‘ ユーザー名です。
- マシン名: これは ‘sudo‘ コマンドが有効なホスト名です。大量のホストマシンを持っている場合に便利です。
- (実効ユーザー): コマンドを実行できる ‘実効ユーザー’ です。この列によりユーザーがシステムコマンドを実行することが許可されます。
- コマンド: ユーザーが実行できるコマンドまたは一連のコマンドです。
提案された読み物: 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/