Linuxセキュリティについていくつかの質問があります。
プロセスをrootとして実行するのは大きな間違いです(rootがあまりにも多くの権限を持っており、プログラムがシステムからあまりにも多くの権限を取得しています)。私はいつもユーザーとしてプロセスを実行します。 (私は特別なファイルにアクセスして実行できるように、を使用します。
chmod
)chown
プロセス/デーモン/プログラムをrootとして実行するよりもこれが優れていますか?thenを使用してプロセスを開始した場合、
sudo su
プロセスをユーザーとして実行するセキュリティと同じですか?それとも、rootでプロセスを実行するのと同じですか?- ソフトウェアをrootとしてインストールする必要がありますか?または一般ユーザーとして?
- 構成ファイルを編集するにはどうですか?
sudo su
権限のない一般ユーザーアカウントを使用してrootとして編集する必要がありますか、それとも以前のように編集する必要がありますか?
ベストアンサー1
一般的なアイデアは、プロセスがタスクを実行するために必要な最小限の権限を要求して持つことです。これの例には、ポート80(ルートが必要な場合がある)にバインドし、権限のないシステムユーザーに変更するWebサーバーが含まれます。
「ルートが必要」の代わりに「ルートが必要になる可能性がある」を発見した可能性があります。従来、1024 未満のポートにバインドしてから変更するには、ルートとしてプロセスを開始する必要がありました。これで正しく設定したら、これを行う必要はありません。 CAP_NET_BIND_SERVICEを使用すると、ルートではなく1024未満のポートにバインドできます。
これは、「少ないコストでより多くのタスクを実行する」のもう1つの繰り返しです。必要なのはバインディングポート側だけですが、rootとして実行してすべてのアクセス権を提供されるのはなぜですか?関数はこれらの粒度を提供します。
root や他のユーザーでデーモンを起動することと root で sudo を起動することの違いは小さく、通常同じ結果を生成します。
編集、管理タスクなどの場合、ほとんどの人は「標準」ユーザーになることを好み、これらのタスクを完了するためにsudoを使用します。 rootとしてログインできない場合は、潜在的に安全でないドアが閉じます。
ソフトウェアは通常ルートとしてインストールされます。なぜ? Webサーバーがバイナリまたは構成ファイルを変更できる場合(Apacheがなぜパブリックアクセスディレクトリを/ etcにする必要があるのかと思います)、それは悪い考えだからです。