>
linux は、一般に他の多くのオペレーティングシステムよりも安全です。このセキュリティの重要な部分は、ユーザー管理と許可からです。デフォルトでは、通常のユーザーはシステムレベルの操作を実行できません。
通常のユーザーがシステム全体に影響を与える変更を行う必要がある場合、 su
または sudo
コマンドのいずれかを使用して、一時的な管理特権を取得する必要があります。
suとsudo?
を理解しています
次の説明は、 ubuntuベースの分布に基づいています。 href = “https://www.tecmint.com/top-most-popular-linux-distribuions/” rel = “noopener”ターゲット= “_blank” title = “人気のLinuxディストリビューション”>最も人気のあるLinuxディストリビューション。
-
su
(代替ユーザー) – このコマンドでは、通常はルートアカウントである別のユーザーアカウントに切り替えることができます。使用するには、ルートパスワードが必要です。これは、アクセスも必要な場合にこのパスワードを他のパスワードと共有することを意味します。 -
sudo
( superuser do ) – このコマンドにより、ユーザーはルートパスワードを共有せずに管理特権を持つ特定のシステムコマンドを実行できます。代わりに、ユーザーは独自のパスワードを入力します。これにより、より安全な責任の委任が提供されます。
例:
#suを使用してルートに切り替えます su-password:[ここのルートパスワード] #sudoを使用してパッケージを更新します sudo aptアップデート [sudo]ユーザーのパスワード:[ここのパスワード]
ご覧のとおり、 sudo
は、 su
。
と比較して、管理タスクを実行するためのより安全で柔軟な方法を提供します。
sudoとは?
は、特別なプログラムです( setuid binary )。ルートパスワードを共有せずに管理タスクを実行する安全な方法を提供します。
sudo
を使用する場合、実行するすべてのコマンドの説明責任がアカウントに結び付けられることを保証するルートパスワードではなく、独自のパスワードを入力する必要があります。
次の例では、Apache Webサーバーはルート特権で再起動し、ユーザーがルートパスワードを入力しないことに気付きます。代わりに独自のパスワードが使用されます。
sudo systemctl restart apache2
sudoを使用できますか?
sudo
を実行できるユーザーのリストは、/etc/sudoers
ファイルで制御されます。
sudo visudo
デフォルトのエントリは次のようになります。つまり、ルートユーザーは任意のユーザーとして任意のホストのコマンドを実行できます。
root all =(すべて:すべて)すべて
<図aria-describedby = "caption-attachment-60934" class = "wp-caption aligncenter" id = "attachment_60934" style = "width:714px"> 他のユーザーへのsudoアクセスを付与
複数のユーザーへの無制限の sudo
アクセスを与えると、リスクがあります。すべてのユーザーがrootとしてコマンドを実行できる場合、単純な間違いまたは侵害されたアカウントがシステムを破壊したり、機密データを公開したりする可能性があります。
危険な例(これを行わないでください):
adam all =(すべて:すべて)すべて Tom All =(すべて:すべて)すべて
ここ、 adam
および tom
は、任意のマシンのrootとして任意のコマンドを実行できます。これにより、ルートユーザーと同様の完全な管理力が得られます。
代わりに、以下で説明するように、各ユーザーが必要とする特定の特権のみを付与します。
Sudo構文の理解
適切に構成された sudo
は非常に柔軟であり、ユーザーが実行できるコマンドの数を正確に構成できます。
構成された sudo
行の構文は
です
user_name machine_name =(effection_user)コマンド
この構文は、4つの部分に分けることができます:
- user_name →
sudo
userの名前。 - machine_name →hostName
sudo
コマンドが有効な場合、これは複数のホストがある場合に役立ちます。 - effect_user →コマンドが実行されるユーザー(たとえば、rootまたは別のアカウント)。
- コマンド→このユーザーが実行できるというコマンドまたはコマンド。
この構造により、管理者は完全なルートアクセスを提供する代わりに、各ユーザーができることを正確に制御できます。
sudo構成の例
ここにいくつかの一般的な状況と、それぞれの sudo
を構成する方法:
1。特定のユーザーへの完全なデータベースアクセスを許可
データベース管理者であるユーザー mark> mark
があり、データベースサーバー beta.database_server.com
に完全にアクセスできるようにしたいのですが、他のホストにはアクセスできません。
mark beta.database_server.com =(すべて)すべて
2。特定の非ルートユーザーとしての実行コマンド
ユーザーがいます tom
同じデータベースサーバーで特定のユーザー( root )としてシステムコマンドを実行する必要があります?
tom beta.database_server.com =(Tom)All
3。ユーザーを単一のコマンドに制限します
sudo user cat
がコマンド。
を実行するだけの人がいます。
cat beta.database_server.com =(cat)犬
4。ユーザーが複数のコマンドを実行できるようにします
ユーザーはいくつかのコマンドを実行する必要がありますが、リストは短いです(10コマンド未満)。
cat beta.database_server.com =(cat)/usr/bin/command1/usr/sbin/command2/usr/sbin/command3
コマンドの長いリストについては、エイリアスを使用する方が良いです。
user_alias Admins = Tom、Jerry、Adam user_alias webmasters =ヘンリー、マーク WebマスターWebServers =(www)Apache cmnd_alias proc =/bin/kill、/bin/killall、/usr/bin/top
グループ名を%
:
をプレフィックスすることで、グループ全体にコマンドを割り当てることもできます。
%apacheadmin webservers =(www)apache
5。パスワードなしでsudoを許可します
ユーザーは、パスワードを入力せずに特定のコマンドを実行する必要があります。
adam all =(all)nopasswd:procs
ここで、ユーザー adam
は、パスワードを入力せずに procs
の下でエイリアスされたすべてのコマンドを実行できます。
要約
sudo
は、 su
と比較して柔軟性のある堅牢で安全な環境を提供します。さらに、 sudo
構成は簡単です。一部のLinuxディストリビューションには sudo
がデフォルトで有効になっていますが、今日のほとんどのディストリビューションではセキュリティ尺度として有効にする必要があります。
ユーザー(bob)
を sudo
に追加するには、次のコマンドをルートとして実行するだけです。
adduser bob sudo
それは今のところすべてです。別の興味深い記事で戻ってきます。それまでは、I Love ITにご期待ください。コメントセクションで貴重なフィードバックを提供することを忘れないでください。