GNU/Linux >> Linux の 問題 >  >> Linux

Unix ファイル システムのファイル モードで「実行」ビットが必要なのはなぜですか?

*nix は、".exe" という名前を付けた場合にファイルを "バイナリ実行可能ファイル" に、".bat" という名前を付けた場合に "スクリプト実行可能ファイル" にするほど脳に損傷を受けていないためです。

Linux では、ファイルの名前は重要ではありません。

そして、あなたがファイルに与える許可はする

どのような意味がありますか。私見...


実行ビットは、パーミッションとオブジェクト タイプ識別子の間で多少混同されています。

また、ファイルをホーム ディレクトリに「常にコピー」することはできません。読み取り可能な場合のみです。

ファイルは実行可能ですが、読み取りはできません。

ファイルが読み取り可能で実行可能でない場合は、そのファイルをコピーして実行ビットを反転させて使用することができます。多分。しかし、うまくいかないかもしれません。実行可能ファイルは、インストールされている場所に敏感な場合があります。または、ファイルが setuid ルート ビットに依存している可能性があります。

私は白紙の状態から始めて、許可システムをそのように設計するつもりはありません。まったく意味がありません。実行権限は実行可能タイプの属性とは別であり、実行権限は検索権限でオーバーロードされません (そのように格納されていても、API はビットマスク レベルでそれを明らかにしません)。


特別な特権で実行されるバイナリについて誰も言及していないことに驚いています。ここで、Wireshark には実際の使用例があります。その主な機能の 1 つはネットワーク トラフィックをキャプチャすることであり、これは通常 root だけが実行できます。特定のユーザーに完全なルート アクセス権を付与することなく、Wireshark でトラフィックをキャプチャできるようにすることは理にかなっています。そのため、Wireshark には dumpcap というバイナリが付属しています。 必要な機能 (CAP_NET_RAW および CAP_NET_ADMIN) が有効になっている。このバイナリは 0754 (rwxr-xr-- ) とそれに関連付けられた GID は、Wireshark がインストールする特別なグループです。このようにして、グループ内の任意のユーザーが (通常は Wireshark を介して) バイナリを実行してトラフィックをキャプチャすることができ、そのために必要な特権で実行されますが、そのグループに属していないユーザーは実行できません。実行権限がありません。ホーム ディレクトリにコピーすることはできますが、コピーには必要な機能が設定されていないため、実際にはトラフィックをキャプチャできませんでした。


Linux
  1. UNIX/Linux の umask とは

  2. なぜ mktemp が必要なのですか?

  3. ファイルにリダイレクトするときに stdout を明示的にフラッシュする必要があるのはなぜですか?

  1. パスワードハッシュとその必要性

  2. Linux で .so.1 ファイルが必要なのはなぜですか?

  3. オペレーティング システムにファイル サイズの制限があるのはなぜですか?

  1. Linux / unixでファイルを実行するために「./」(ドットスラッシュ)を使用するのはなぜですか?

  2. ファイルが見つかった場所でコマンドを実行しますか?

  3. 特定のコマンドに対応する実行可能ファイルを見つけるための unix コマンドは何ですか?