'passwd'コマンドはどのようにrootユーザー権限を取得しますか?

'passwd'コマンドはどのようにrootユーザー権限を取得しますか?

Linuxは、passwd、setuidなどの特定のプロセスにeuid 0(ルートのuid)のみを提供する必要があることをどのように知っていますか?

プロセスがroot権限を取得できる場合、Linuxプラットフォームに潜在的なセキュリティの脆弱性が発生しませんか?

たとえば、rootユーザー権限(passwdなど)を取得できるプログラムを作成すると、重要なシステムファイル(/ etc / passwd、/ etc / groups)が破損する可能性があります。

Linuxはどのようにセキュリティを維持しますか?

答え1

このpasswdプログラムは設定値ビット設定は次のコマンドで確認できますls -l

-rwsr-xr-x 1 root root 39104 2009-12-06 05:35 /usr/bin/passwd

これはs(行の4番目の文字)です。

この権限ビットが設定されているすべてのプログラムは、そのプログラムの所有者として実行されます。この例では、ユーザーはroot(行の3番目の単語)です。

これらのsetuidプログラムはシステムのすべてのユーザーが実行できるため、何も破損しないことを確認する必要があります。効果的なルート権限。そのため、パスワードは本人のみ変更できます。 Linuxや他の同様のオペレーティングシステムは、これらのsetuidプログラムの作成者が非常に注意を払っているため、依然として安全です。

例を見る訴訟実行プログラムApache Webサーバーでは、これは広く使用されているsetuidプログラムです。このソースコードには、異常に多数のコメントがあります。

答え2

Roland Illigの答えを補完するためにroot権限が与えられたら、システムファイルを壊したり、さまざまな方法でシステムに害を及ぼすプログラムを書くことが完全に可能です。

問題はただ書くこれは自動的にrootとして実行されるという意味ではありません。所有者をrootに設定し、Rolandが言及したsetuidビットを設定する必要があり、rootだけがこれを行う権限があります。

つまり、そうです。 setuidビットが設定されているすべてのバイナリは、少なくとも潜在的なセキュリティリスクを持っています。ルートアクセスを得るためにsetuidサポートバイナリの欠陥を悪用することは、いわゆる最も一般的なソースです。権限昇格攻撃が発生すると、しばしば深刻な結果を招きます。その結果、setuidを使用するソフトウェアは比較的少なく、存在するソフトウェアは徹底的に調査される傾向があります。

関連情報