Files

創建目錄所需的權限

  • February 19, 2019

我正在嘗試在現有目錄樹下創建一個子目錄。我想知道是否只有我將創建子目錄的目錄的權限或父目錄的權限也會對創建目錄的權限產生一些影響?

我將以程式方式執行此操作,因此我需要確保我已經涵蓋了廣泛的場景。

是的,它們很重要。要創建目錄,您需要能夠寫入其父目錄。創建目錄就像創建文件一樣(畢竟,一切都是文件),因此您需要對父級的寫入權限。此外,您需要能夠訪問父目錄,這意味著您需要執行對樹中所有目錄的訪問權限:

$ 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

正如您在上面看到的,雖然我可以進入目錄,但我無法列出其內容,因為我沒有讀取權限,也無法在那裡創建任何內容,因為我沒有寫入權限。 

因此,為了能夠在您需要的目錄中創建新文件或目錄:

  • 對目標目錄的每個父目錄執行權限。
  • 目標目錄的執行和寫入權限。

引用自:https://unix.stackexchange.com/questions/331895