ルートが/ usr / sbinの実行可能ファイルに書き込むことができるのはなぜですか?

ルートが/ usr / sbinの実行可能ファイルに書き込むことができるのはなぜですか?

/usr/sbinバイナリコンパイルファイル(たとえば)にユーザーへの書き込み権限がある理由を説明しますかroot

私にとって、これはコンパイルされます。つまり、直接書き込むことは役に立たず、ファイルが特定のセキュリティ問題にさらされる可能性があることを意味します。

ファイルのようなスクリプトはbash基本的にテキストファイルなので書き込み可能ですが、私が知っている限り、実際に書き込む必要がないコンパイルされたファイルについてなぜ同じですか?

ご意見ありがとうございます。

ベストアンサー1

/binルート(または実行可能ファイルが保存されている他の標準ディレクトリ)がファイルに書き込むことができるかどうかは重要ではありません。私が使用しているLinuxサーバーではrootとして書き込むことができますが、OpenBSDコンピュータでは書き込めません。

グループや「その他」が書けない限り!

セキュリティの問題はありません。

-rwxr-xr-x 1 root root 126584 Feb 18  2016 /bin/ls

誰かがそれを無視したい場合はrootでなければならず、rootで上書きされたら次のrootいずれかをしなければなりません。

  1. 新しいバージョンをインストールするか、
  2. 苦手な、
  3. 攻撃者すでにroot権限があります

考慮すべきもう1つのことは、ファイルが書き込み禁止になっているかどうかに関係なく、ルートがファイルに書き込むことができることです。なぜなら…ルートだからです。

また、「スクリプト」はバイナリと同様に実行可能ファイルであることに注意してください。スクリプトは「テキストファイルなので」書き込む必要はありません。その場合は、同じディレクトリにある他の実行可能ファイルと同じ権限を持つ必要があります。

まだすべてのものの権限を変更しないでください!これはあらゆる種類の混乱を招き、権限が正しく設定されていることを確認するパッケージマネージャを混乱させる可能性があります。セキュリティが重要なアプリケーションの権限を誤って誤った方法で変更した場合でも、システムが脆弱になる可能性があります。

次のものが見つからない限り、実行可能ファイルの権限が正しく設定されているとします。本物奇妙なことに、この場合は変更を開始するのではなく、関連するパッケージ管理者に連絡して確認する必要があります。


コメントからそしてチャットで、誰かが歴史を求めた。

バイナリファイル権限の歴史Linuxでこれは私が知っているものではありません。ただ、ディレクトリの権限を受け継いだのか、それともumaskLinuxの基本的な権限を受け継いだのか推測することもできますが、よくわかりません。

私が知っているのは、OpenBSDがデフォルトで特権モード555()を使用して基本システム1-r-xr-xr-xにバイナリをインストールすることです。これはMakefileフラグメントで指定されており、/usr/share/mk/bsd.own.mkここでは555に設定されていますBINMODE(すでに設定されていない場合)。後でmake build実行可能ファイルをインストールするときに使用されます/usr/src

私は見ましたこのファイルに関するコメント付きのCVSログ、1995年にNetBSDからインポートされた後、ファイルのこの行が変更されていないことがわかりました。

NetBSDでは、このファイルはまずCVSに入れます。1993年にはBINMODE555に設定された。

FreeBSDプロジェクトは、NetBSDとまったく同じファイルを使用しているようです。少なくとも1994年以降後で提出以前のファイルがBerkeley Software Distribution 4.4BSDバージョンからインポートされたというメモをコミットメッセージに追加しました。

さらに、バークレー CSRGソースをそのままにしてくださいSCCSしかし、彼らの店はGitHubからGitとして利用可能2.当社がここで法医学的に処理する文書約束したようです。渡すキスボスティック(または彼に近い人)1990年。

これがまさにその物語です。欲しいならなぜ、それからKeithに尋ねるべきだと思います。 「という変更に対するコミットメッセージを見たいです。555 でなければなりません。なぜなら…「しかし。

1 BSDシステムは、Linuxより「基本システム」と「サードパーティパッケージ」(ポート/パッケージ)に厳密に分類されています。基本システムは、以下を提供する一貫した単位です。十分オペレーティングシステムを実行するための機能セットです。ポートまたはソフトウェアパッケージは「ローカルソフトウェア」と見なされます/usr/local

2 1970年代以降のUnixバージョンを扱うより包括的なGitHubリポジトリも可能

おすすめ記事