Bash

有沒有辦法查看路徑的所有中間目錄的權限..?

  • December 26, 2011

我有一個文件路徑..是否有任何單個命令可以查看路徑中所有中間目錄的文件/目錄權限..?

這是兩個oneliners。ls每個路徑組件一次呼叫:

$ (IFS=/; set -f -- $PWD; for arg; do path="${path%/}/$arg"; ls -dal "$path"; done)

輸出:

# drwxr-xr-x  31 root  admin  1122  4 Nov 22:08 /
# drwxr-xr-x  9 root  admin  306  3 Nov 17:36 /Users
# drwxr-xr-x+ 67 janmoesen  staff  2278  7 Nov 14:46 /Users/janmoesen
# drwxr-xr-x+ 53 janmoesen  staff  1802  4 Nov 22:07 /Users/janmoesen/Sites
# drwxr-xr-x  28 janmoesen  staff  952  7 Nov 15:01 /Users/janmoesen/Sites/example.com

只需一次呼叫ls所有路徑:

$ (IFS=/; set -f -- $PWD; for arg; do path="${path%/}/$arg"; paths+=("$path"); done; ls -dal "${paths[@]}")

輸出:

# drwxr-xr-x  31 root       admin  1122  4 Nov 22:08 /
# drwxr-xr-x   9 root       admin   306  3 Nov 17:36 /Users
# drwxr-xr-x+ 67 janmoesen  staff  2278  7 Nov 14:46 /Users/janmoesen
# drwxr-xr-x+ 53 janmoesen  staff  1802  4 Nov 22:07 /Users/janmoesen/Sites
# drwxr-xr-x  28 janmoesen  staff   952  7 Nov 15:01 /Users/janmoesen/Sites/example.com

Linux 附帶的namei命令主要用於顯示路徑中的符號連結,但也可以顯示所有權。

$ namei -nom ~   
f: /home/gilles
drwxr-xr-x root   root   /
drwxr-sr-x root   staff  home
drwxr-xr-x gilles gilles gilles

否則,這是一種遍歷包含給定文件的連續目錄(不是唯一一個,如本頁其他答案所示)並列出其內容的方法。

d=$PWD; set /;
while [ -n "$d" ]; do set -- "$@" "$d/"; d=${d%/*}; done;
ls -ld "$@"

請注意,在存在符​​號連結的情況下,此列表可能會有些誤導。例如,如果/foo/bar是一個符號連結,/hello/world它本身就是 的符號連結/one/two,並且所有的/foo/hello都是/world世界可讀的(比如模式 755),但/hello使用者 Alice 不可讀,那麼 Alice 將無法訪問/foo/bar,但上面的列表將只顯示世界可讀的目錄。

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