ファイルのフル特権モードがディレクトリの場合と異なるのはなぜですか?

ファイルのフル特権モードがディレクトリの場合と異なるのはなぜですか?

私は読みましたLinux Command Line and Shell Scripting Bible by Richard Blum Christine Bresnahan

オブジェクトのフル権限セットからumask値を減算します。ファイルに対するフルアクセス権はモード666ですが、ディレクトリに対するフルアクセス権は777です。

したがって、ファイルが同時に読み取り、書き込み、および実行権限を持つことができない場合、ユーザーはタスクを実行するたびにファイルを変更する必要がありますか?プログラマが自分のコードをテストする必要がある場合はどうすればよいですか?他のファイル形式はどうですか?よろしくお願いします。

答え1

オブジェクトのフル権限セットからumask値を減算します。

これは本当ではありません。あるいは、少なくとも一般的な状況に比べて不正確で簡素化されています。

  • まず、いいえ「フル権限セット」は、ファイルを作成したプロセスがファイルの権限に設定されるわけではありません。もちろん、通常のファイルの場合、通常は次のようになります0666。つまり、テキストエディタがファイルの権限を決定するのではなく、ユーザーがumask

    ただし、ファイルを生成するプロセスでは0666ファイル権限を使用する必要はありません。プライベートファイル(SSHキーなど)の場合、0600umaskが何でも所有者以外は誰もファイルにアクセスできないように使用されます。また、実行可能ファイルの場合は、0777生成されたファイルを実行可能にすることもできます。

    0777このビットは実際には汎用ビットと同じくらい必要なので、これはディレクトリに一般的ですxrこれは通常のデータファイルの場合ではないため、0666ファイルと0777ディレクトリの場合が一般的です。

    もちろん、使用される基本的な権限は他のものかもしれませんが、これはおそらく一般的なケースです。

  • 2. umaskの値は次のとおりです。マイナスしかし、ブロックされました。減算とは、あるビットから次のビットに渡されることを意味00070666ます0657。これはumaskが動作する方法ではなく、便利ではありません。

umaskはファイルにアクセスするときにのみ使用されます。作られたLinuxのマニュアルページ「ファイルモード生成マスク」とも呼ばれます。後でchmod()umaskによって制限されず、権限を変更するために使用できます。

したがって、ファイルが同時に読み取り、書き込み、および実行権限を持つことができない場合

もちろん可能です。実行不可能なファイルには役に立ちません。

答え2

ファイルはデフォルトで実行可能ではないため、ディレクトリは実行可能です。

  • ディレクトリの「実行」フラグを使用すると、そのディレクトリ内のファイルを開くことができるため、ほとんどの場合必要です。 「読み取り」フラグを使用すると、ディレクトリの内容を一覧表示できますが、ディレクトリ内のファイルを開くことはできません。
  • 一般ファイルの「実行」フラグを使用すると、ファイルを実行できますが、通常は必要ありません。

関連情報