如何反向递归检查权限?

xen*_*ide 28 command-line shell permissions

有一个命令,我认为它与 apache 一起提供,或者与它有某种关系,它检查权限,一直向下。所以,如果我有/home/foo/bar/baz,它会告诉我什么权限是bazbarfoo,和home。有谁知道这个命令是什么或其他方法?该命令基本上从参数开始,它的工作方式是/让您知道一路上的权限是什么,以便您可以查看是否有权限问题。

Ste*_*n D 33

您可能想到的实用程序是namei命令。根据手册页:

Namei 使用其参数作为任何类型 Unix 文件(符号链接、文件、目录等)的路径名。Namei 然后跟随每个路径名,直到找到终端点(文件、目录、字符设备等)。如果它找到一个符号链接,我们会显示该链接,并开始跟踪它,缩进输出以显示上下文。

可以按如下方式接收您想要的输出:

$ namei -l /usr/src/linux-headers-2.6.35-22/include/
f: /usr/src/linux-headers-2.6.35-22/include/
drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxrwsr-x root src  src
drwxr-xr-x root root linux-headers-2.6.35-22
drwxr-xr-x root root include
Run Code Online (Sandbox Code Playgroud)

namei命令是linux-util-ng软件包的一部分。有关更多详细信息,请参阅 手册页

  • 为懒惰的人使用 namei 的另一种有用方法。`namei -l $PWD/public_html/` 从您当前的目录中输入 $PWD 以获取到您当前目录的权限列表。 (2认同)

dog*_*ane 7

我不知道任何命令,但编写脚本很容易:

#!/bin/bash    
ARG=$1
while [[ "$ARG" != "." && "$ARG" != "/" ]]
do
        ls -ld -- "$ARG"
        ARG=`dirname -- "$ARG"`      
done
Run Code Online (Sandbox Code Playgroud)

例子:

$ perms.sh /tmp/1/2/3/hello.txt

-rw-rw-r--    1 user    group          0 Jan 14 16:59 /tmp/1/2/3/hello.txt
drwxrwxr-x    2 user    group       4096 Jan 14 16:59 /tmp/1/2/3
drwxrwxr-x    3 user    group       4096 Jan 14 16:43 /tmp/1/2
drwxrwxr-x    3 user    group       4096 Jan 14 16:43 /tmp/1
drwxrwxrwt   12 root     root       4096 Jan 14 17:02 /tmp
Run Code Online (Sandbox Code Playgroud)