ディレクトリの作成に必要な権限

ディレクトリの作成に必要な権限

既存のディレクトリツリーの下にサブディレクトリを作成しようとしています。重要なサブディレクトリを作成するのがディレクトリの権限だけであるのか、親ディレクトリも作成されるディレクトリの権限に影響を与えるのだろうか。

私はこれをプログラム的に実行するので、広範なシナリオに対処していることを確認する必要があります。

ベストアンサー1

はい、重要です。ディレクトリを作成するには、親ディレクトリに書き込める必要があります。ディレクトリを作成することはファイルを作成するのと同じです(結局、すべてがファイルです) したがって、親エントリに対する書き込み権限が必要です。また、親ディレクトリにアクセスできる必要があります。つまり、ツリー内のすべてのディレクトリにアクセスする必要があります。

$ sudo tree -pgu 
.
└── [drwxr-xr-x terdon terdon]  dir1
    └── [drwx------ bob      bob     ]  dir2
        └── [drwxr-xr-x terdon terdon]  dir3

    

上記の例では、dir2に属しますbob。つまり、cdそのエントリまたはcdそのサブディレクトリに入れることはできませんdir3

$ cd dir1/dir2/
bash: cd: dir1/dir2/: Permission denied
$ cd dir1/dir2/dir3
bash: cd: dir1/dir2/dir3: Permission denied

    

自分自身に実行アクセス権を付与すると、からdir2移動できますが、まだ次の場所にファイル/ディレクトリを作成する権限がありません。dir2dir2/dir3dir2

$ sudo tree -pgu 
.
└── [drwxr-xr-x terdon terdon]  dir1
    └── [drwx--x--x bob      bob     ]  dir2
        └── [drwxr-xr-x terdon terdon]  dir3

$ cd dir1/dir2/
$ ls
ls: cannot open directory '.': Permission denied
$ touch file
touch: cannot touch 'file': Permission denied

上記のように、ディレクトリには入れることができますが、読み取りアクセス権がないためコンテンツを一覧表示できず、書き込みアクセス権がないため、何も作成できません。 

したがって、ディレクトリ内に新しいファイルまたはディレクトリを作成するには、次の手順を実行する必要があります。

  • 宛先ディレクトリの各親ディレクトリに対して権限を実行します。

  • 宛先ディレクトリに対する実行および書き込み権限。 

おすすめ記事