chmod(1) 手冊頁中對權限位的描述中提及到 rwxXst 六個權限標記, rwx 是幾乎所有 Linux 初學者都會學到的,更進者會了解到 st 兩個標記,但 X 卻少有提起。所以大致了解了一下這個標記。
用一個最簡單的 shell 腳本進行測試:
$ echo -e ‘#!/bin/sh\n\necho hello‘ > script.sh
$ ls -l script.sh
-rw-r--r-- 1 dawn users 22 Mar 3 23:52 script.sh
$ # 初始狀態是沒有執行權限的,這個時候 +X 試試
$ chmod a+X script.sh
$ ls -l script.sh
-rw-r--r-- 1 dawn users 22 Mar 3 23:52 script.sh
$ # 沒有任何變化,并沒有出現 X
$ ./script.sh
sh: ./script.sh: Permission denied
$ # 此時也無法執行
$ ########################################################
$ # u+x 后再試試
$ chmod u+x script.sh
$ ls -l script.sh
-rwxr--r-- 1 dawn users 22 Mar 3 23:52 script.sh
$ chmod a+X script.sh
-rwxr-xr-x 1 dawn users 22 Mar 3 23:52 script.sh
$ # 在 user 有執行權限的情況下執行 a+X 的效果和 a+x 相同
至此,我們已經可以對 X 有一些自己的了解了,筆者的想法是: chmod 中的 X 與 rwxst 不同,并不是真正意義的標識,而是 chmod 的一種行為,結合手冊頁中的解釋,就是當文件是目錄或對任意用戶有執行權限的情況下,才設置執行權限位,即此時等價于 x,否則不改變執行權限。
所以,有了初步理解,我們就可以驗證針對目錄是否如此了。
$ mkdir -m 664 dir
$ ls -ld dir
drw-rw-r-- 2 dawn users 4096 Mar 4 00:09 dir
$ # 在該目錄文件沒有執行權限,此時嘗試 a+X
$ chmod a+X dir
$ ls -ld dir
drwxrwxr-x 2 dawn users 4096 Mar 4 00:11 dir
$ # user、group 和 other 的執行權限成功被設置
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95576