我們用名字打開任意類型的檔案時,對該名字中包含的每一個目錄,包括他可能隐含的目前工作目錄都應具有執行權限。這就是為什麼對于目錄其執行權限位常被稱為搜尋位的原因。
例如,為了打開檔案/usr/include/stdio.h,需要對目錄/、/usr和/usr/include具有執行權限。然後,需要具有對檔案本身的适當權限,這取決于已何種模式打開它(隻讀、讀-寫等)。
如果目前目錄是/usr/include,那麼為了打開檔案stdio.h,需要對目前目錄有執行權限。這是隐含目前目錄的一個示例。打開stdio.h檔案與打開./stdio.h作用相同。注意,對于目錄的讀權限和執行權限的意義是不相同的。讀權限允許我們讀目錄,獲得在該目錄中所有檔案名的清單。當一個目錄是我們要通路檔案的路徑名的一個組成部分時,對該目錄的執行權限使我們可以通過該目錄(也就是搜尋該目錄,尋找一個特定的檔案名)。引用隐含目錄的另一個例子是,如果PATH環境變量指定了一個我們不具有執行權限的目錄,那麼shell絕不會在該目錄下找到可執行檔案。
——以上摘自《UNIX 環境進階程式設計(第3版)》4.5節、檔案通路權限
假如有這個目錄結構 test/test.sh,其讀權限和執行權限可以形象的總結如下表。
ls test/
cd test/
sh test/test.sh
對 test/ 僅有讀權限
√
×
對 test/ 僅有執行權限
本文轉自walker snapshot部落格51CTO部落格,原文連結http://blog.51cto.com/walkerqt/1671669如需轉載請自行聯系原作者
RQSLT