ユーザーにdu(ディスク使用量)を実行するには実行権限が必要ですか? [コピー]

ユーザーにdu(ディスク使用量)を実行するには実行権限が必要ですか? [コピー]

次の動作を観察し、これが予想されるかどうか疑問に思います。

du所有するディレクトリでディスク使用量()を実行しようとしています。user2test_directoryuser1

chmod 777 test_directory誰もがフルアクセス(使用)を許可するように権限を変更するとuser1user2予想どおりにディスク使用量を正しく表示できます。

ここに画像の説明を入力してください。

ただし、他のユーザーの実行可能アクセスを制限すると(使用してchmod 776 test_directoryuser2実行が失敗し、du権限エラーが発生します。

ここに画像の説明を入力してください。

また、エラーが発生した場合、ディレクトリサイズは4096バイトとして表示されます。

  1. duを使用してディスクの使用を要求するためにユーザーに実行権限が必要なのはなぜですか?私は素直に読み取り権限だけが必要になると予想しました(例chmod 774:)。実際にはそうだ両方du(つまり)を実行するには読み取りおよび実行権限が必要ですchmod 775

  2. この場合、ディレクトリサイズがデフォルトで4096バイトに設定されているのはなぜですか?

ありがとうございます!

ベストアンサー1

実行/アクセス(x)権限がないと呼び出せず、dirサイズstat()dir/foo.binどれだけ大きいかわかりません。読み取り ( r) 権限だけでファイル名だけを一覧表示できますが、通常取得できるのは名前だけです。

一部のシステムでは、readdir()名前より多くの情報を提供できますが、ファイルサイズを提供できるかどうかはわかりません。 Linuxファイルシステムには、inodeおよびディレクトリエントリの存続期間中に絶対に変更されないファイル形式を提供できます。ただし、inodeがディレクトリリストから分離されているファイルシステムのディレクトリからサイズを取得するのが難しいなど、一部の変更は引き続き変わります。

サイズを知っていてもreaddir()読めるだけではサイズが分からないので読まなければなりdir/ません。アクセス権がなければできません。dir/sub/bar.bindir/subdir

ディレクトリのサイズはファイル自体のサイズではなく、ファイルリストのサイズにすぎません。だからそれはあなたに多くを教えてくれません。 4kBはext4に共通で、ファイルシステムブロックにすぎず、ファイルシステムが割り当てる必要がある最小値です。ファイルと同様に、xサイズを取得するには、そのファイルが存在するディレクトリに対する権限だけが必要です。 (たとえば、またはのサイズをx取得するにはonが必要です。)dir/dir/file.txtdir/subdir/

はい。ディレクトリツリー全体を効果的に検索するには、読み取りとアクセス権が必要です。

また見なさい:ビットを実行して読み出します。 Linuxでは、ディレクトリ権限はどのように機能しますか?

おすすめ記事