對于文件來說,從字面上就可以理解,但對于目錄來說,執(zhí)行權限代表什么?它與讀、寫權限有什么不同呢?
先做一些小實驗,然后再總結。
### 實驗數(shù)據(jù)準備 ###
$ mkdir test # 創(chuàng)建目錄test
$ echo "hello" > test/f1 # 在目錄test下創(chuàng)建文件f1
##################
1. 讀權限
$ chmod 444 test # 修改目錄為讀權限(包括用戶、組和其它)
$ ls test # 查看目錄test的文件列表
f1 # 結果顯示
$ cat test/f1 # 再試下查看一下目錄test中的文件f1
cat: test/f1: Permission denied
由此可見,目錄的讀權限僅允許我們讀目錄,獲得在該目錄中所有文件名的列表,但無法查看目錄中文件的內(nèi)容。
2. 執(zhí)行權限
$ chmod 111 test # 修改目錄為執(zhí)行權限(包括用戶、組和其它)
$ ls test # 查看目錄test的文件列表
ls: test/: Permission denied
$ cat test/f1 # 查看目錄test中的文件f1
hello
由此可見,目錄的執(zhí)行權限不允許我們讀取目錄的文件列表,但可以查看目錄中文件的內(nèi)容。當一個目錄是我們要訪問文件的路徑名的一個組成部分時,對該目錄的執(zhí)行權限使我們可進入(在這里“進入”的含義:包括但不限于把該目錄切換為用戶的當前工作目錄,更重要的是允許用戶不以該目錄為用戶的當前工作目錄,而又可以在文件權限的允許下,在該目錄中為非作歹)該目錄。
3. 寫權限
$ chmod 222 test # 修改目錄為寫權限(包括用戶、組和其它)
$ echo "bye" > test/f1 # 修改目錄test中的文件f1的內(nèi)容
-bash: test/f1: Permission denied
$ chmod 333 test # 修改目錄為執(zhí)行、寫權限(包括用戶、組和其它)
$ echo "bye" > test/f1
$ cat test/f1
bye
由此可見,要修改目錄中的文件內(nèi)容,不僅僅需要目錄的寫權限,還需要目錄的執(zhí)行權限(這個很顯然)。
在Linux下,目錄也是有可執(zhí)行權限的,這可能令人費解,下面是對這個問題的解釋: