有没有办法查看路径的所有中间目录的权限..?

xyz*_*xyz 8 shell bash permissions files

我有一个文件路径.. 是否有任何单个命令可以查看路径中所有中间目录的文件/目录权限..?

Gil*_*il' 10

Linux 附带的namei命令主要用于显示路径中的符号链接,但也可以显示所有权。

$ namei -nom ~   
f: /home/gilles
 drwxr-xr-x root   root   /
 drwxr-sr-x root   staff  home
 drwxr-xr-x gilles gilles gilles
Run Code Online (Sandbox Code Playgroud)

否则,这里有一种方法可以遍历包含给定文件的连续目录(不是唯一的,正如本页上的其他答案所示)并列出它们的内容。

d=$PWD; set /;
while [ -n "$d" ]; do set -- "$@" "$d/"; d=${d%/*}; done;
ls -ld "$@"
Run Code Online (Sandbox Code Playgroud)

请注意,此列表在存在符号链接时可能会有些误导。例如,如果/foo/bar是一个符号链接,/hello/world它本身是一个符号链接/one/two,以及所有/foo/hello并且/world是世界可读的(比如模式 755)但/hello用户 Alice 不可读,那么 Alice 将无法到达/foo/bar,但上面的列表将只显示世界可读的目录。


jan*_*sen 9

这是两个oneliners。ls每个路径组件一次调用:

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

输出:

# 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
Run Code Online (Sandbox Code Playgroud)

只需对ls所有路径进行一次调用:

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

输出:

# 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
Run Code Online (Sandbox Code Playgroud)