创建目录所需的权限

创建目录所需的权限

我正在尝试在现有目录树下创建一个子目录。我想知道是否只有我要创建子目录的目录的权限重要,或者父目录也会对创建目录的权限产生一些影响?

我将以编程方式执行此操作,因此我需要确保我已经涵盖了广泛的场景。

答案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/dir3,但我仍然无权在 中创建文件/目录dir2

$ 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

正如您在上面看到的,虽然我可以进入该目录,但我无法列出其内容,因为我没有对其的读取访问权限,并且我无法在那里创建任何内容,因为我没有写入访问权限。 

因此,为了能够在目录中创建新文件或目录,您需要:

  • 对目标目录的每个父目录执行权限。

  • 目标目录的执行和写入权限。 

相关内容