Unix セキュリティ モデルの時代やそれが開発された環境に問題があるという回答には同意しません。これを処理するメカニズムが整っているため、そうではないと思います。
<ブロック引用>ルート権限システムは理にかなっていますが、デスクトップ システムでは間違ったデータを保護しているように感じます.
スーパーユーザーのパーミッションは、ユーザーからシステムを保護するために存在します。ユーザー アカウントのアクセス許可は、他の非 root アカウントからアカウントを保護するためにあります。
プログラムを実行することで、UID を使って何かを行う許可をプログラムに与えます。 UID にはホーム ディレクトリへの完全なアクセス権があるため、プログラムに同じアクセス権を推移的に与えたことになります。スーパーユーザーが悪意のある動作 (パスワード、構成、バイナリ) から保護する必要があるシステム ファイルに変更を加えるアクセス権を持っているのと同じように、同じ種類の保護が必要なデータがホーム ディレクトリにある場合があります。
最小権限の原則は、絶対に必要な以上のアクセス権を与えてはならないことを示しています。プログラムを実行するための決定プロセスは、ファイルに関してもシステム ファイルに関しても同じである必要があります。システムを保護するためにスーパーユーザー アカウントを無制限に使用することを信頼できないコードを提供しない場合、データを保護するためにアカウントを無制限に使用することを許可しないでください。
<ブロック引用>$HOME で悪意のあるコードが発生するのを防ぐ方法はありませんか?そして、なぜ誰も気にしないのでしょうか?
Unix は、rm コマンドの周りにブレード ガードがないのと同じ理由で、そのようなきめ細かなアクセス許可を提供しません。アクセス許可は、ユーザーを自分自身から保護するためのものではありません。
悪意のあるコードがホーム ディレクトリのファイルに損害を与えるのを防ぐ方法は、自分のアカウントを使用して実行しないことです。特別な権限を持たない別のユーザーを作成し、信頼できるかどうかを判断するまで、その UID でコードを実行してください。
chrooted jail など、これを行う方法は他にもありますが、それらを設定するにはより多くの作業が必要であり、それらをエスケープすることはもはやかつてのような課題ではありません.
UNIX ベースのセキュリティ モデルは 50 年前のものです。
UNIX は広く普及しているほとんどの OS の根底にあり、大きな例外である Windows でさえ、見かけ以上に UNIX の影響を受けています。これは、コンピューターが、難解な専門家だけが使用する、大きくて高価で遅いマシンだった時代に由来します。
当時、ユーザーはどのにも大規模な個人データを収集していませんでした。 大学のサーバーでもなく、個人のコンピューターでもありません (もちろん、携帯電話でもありません)。ユーザーごとに異なるデータは、通常、科学計算プロセスの入力および出力データでした。それらを失うことは損失を構成する可能性がありますが、大部分はそれらを再計算することで補うことができ、今日のデータ漏洩の結果とはまったく異なります.
日記、銀行情報、またはヌード写真をコンピューターに保存して、悪意のあるアクセスから保護する人は誰もいなかったでしょう。 優先度の高いものではありませんでした。実際、70 年代のほとんどの学部生はおそらく興奮したでしょう。 他の人が自分の研究データに興味を示した場合。したがって、データの損失を防ぐことはコンピューター セキュリティの最優先事項と考えられており、これはアクセス制御ではなく定期的なバックアップによって適切に保証されます。
これは非常に鋭い観察です。はい、ユーザーとして実行されているマルウェアは、ホーム ディレクトリのデータを損傷/破壊/変更する可能性があります。はい、シングル ユーザー システムでのユーザー分離は、サーバーでの使用ほど役に立ちません。ただし、root ユーザー (または同等のユーザー) のみが実行できる操作がいくつかあります:
- カーネルにルートキットをインストールします。
- 永続化のために初期バックドアを含むようにブートローダーを変更します。
- ハードディスクのすべてのブロックを消去して、データを復元できないようにする
正直なところ、ワークステーションの最大の敵である私からワークステーションを保護するには、ワークステーションでの特権の分離が最も役立つと思います。システムを台無しにしたり壊したりするのが難しくなります。
さらに、ホームディレクトリのバックアップを作成する cron ジョブをルートとしていつでも設定できます (例:rsnapshot
)、ユーザーが書き込みできないように保存します。あなたが説明した状況では、それはある程度の保護になります。
必須 xkcd