「mkdir -pm 764 a/b/c」を使用して作成された中間フォルダの権限について

「mkdir -pm 764 a/b/c」を使用して作成された中間フォルダの権限について

を使用しているときは、は 764 権限mkdir -pm 764 a/b/c しか取得できませんが、と にはデフォルトの権限があります。なぜそうなるのでしょうか。なぜすべてのディレクトリに 764 権限が付与されないのでしょうか。cab

答え1

このmkdirユーティリティは単一のディレクトリを作成します。これを使用すると、-mディレクトリが作成され、chmod指定された権限でそのディレクトリ上で効果的に実行されます (ただし、これは 2 つの手順で実行されるわけではありません。これは、状況によっては重要になる場合があります)。

を使用すると-p、まだ存在しない中間ディレクトリが作成されます。 に指定されたモードは、-mパス名の最後の名前にのみ適用されます。これは、それが作成するディレクトリであるためです (中間ディレクトリは、指定されたモードでそのディレクトリを作成できるようにするために作成されます)。

POSIX標準のmkdir各中間ディレクトリは、シェルの umask 値である(S_IWUSR|S_IXUSR|~filemask)&0777モードで作成する必要があるとします。filemask

「アプリケーションの使用状況」セクションでは、

[...] によって作成された中間パス名コンポーネントの場合mkdir、モードはデフォルトで によって変更されるu+ wxため、ファイル モード作成マスクに関係なく、サブディレクトリは常に作成されます。中間ディレクトリに異なる最終的な権限が必要な場合は、 で後で変更できますchmod

これは、中間ディレクトリのモードが、ユーザーの書き込み権限または実行権限がない可能性のあるディレクトリを作成できるように設定されていることを意味します。中間ディレクトリにも実行権限や書き込み権限が与えられていない場合、ディレクトリ パスの最後のコンポーネントは作成できません。

具体的なケースでは、

mkdir -p -m 764 a/b/c
chmod 764 a/b
chmod 764 a

ディレクトリが以前に存在しなかったことが確実にわかっている場合は、

mkdir -p -m 764 a/b/c
chmod -R 764 a

関連情報