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にする必要があるのかと思います)、それは悪い考えだからです。
答え2
これは単なる例/いいえの質問ではなく、「場合によっては」、「頻繁に」などの回答が必要です。
それにもかかわらず、私はとにかくはい/いいえで答えようとします。また、一般的なデスクトップや小規模なホームサーバーがあるとします。それは素晴らしいものではありません。
これにより、次の4つの質問に対する回答が得られます。
- 開発者が意図したとおりに使用してください。権限と所有者/グループの操作を開始すると、問題が発生する可能性があります。
- 使用時に変更されるものと変更されないことにはいくつかの問題があります
sudo su
。sudo -i
代替を使用します(またはsudo -u someuser -i
ルート以外の人になりたい場合)。sudo -i
rootとしてログインするのと同じです。ユーザーに関するほとんどすべてが「忘れられた」 -
- パッケージからインストールする場合:rootを使用してください。
- ソースからコンパイルした場合:一般ユーザーを使用して
make install
rootとしてのみ実行します(最後のステップ)。 (またはこれらすべてを実行しないでください。このステップはファイルをより「正常な」場所に再割り当てすることですが、セキュリティがより重要であると判断された場合はスキップできます(これは編集的です))
- ファイルが属するユーザーを使用します。これは通常、homedirのすべてのエントリにルートを使用し
/etc
、homedirのすべてのエントリにユーザーを使用することを要約します。