如何反向递归检查权限?

如何反向递归检查权限?

有一个命令,我认为它与 apache 一起提供,或者以某种方式与之相关,它可以一直检查权限。因此,如果我有,它会告诉我、、和 的/home/foo/bar/baz权限是什么。有谁知道这个命令是什么或执行此操作的其他方法?该命令基本上从参数开始,并逐步让您知道权限是什么,以便您可以查看是否存在权限问题。bazbarfoohome/

答案1

您可能想到的实用程序是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

namei命令是linux-util-ng软件包。请参阅 手册页更多细节。

答案2

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

#!/bin/bash    
ARG=$1
while [[ "$ARG" != "." && "$ARG" != "/" ]]
do
        ls -ld -- "$ARG"
        ARG=`dirname -- "$ARG"`      
done

例子:

$ 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

答案3

我认为您正在寻找的命令是:

namei -l `pwd`

当在 /tmp/foo/bar 中执行时,会给出如下列表:

drwxr-xr-x root   root   /
drwxrwxrwt root   root   tmp
drwxr-xr-x user   group  foo
drwxr-xr-x user   group  bar

答案4

这很容易成为一句台词。这不是递归的,应该是在 bash 中执行此操作的相对快速的方法。呼唤密码在每个循环中都不是特别快,所以如果可以的话避免。

#!/bin/bash
if [ -n "$1" ]; then
    echo "Usage: $0 [FILE]"
    exit 1
fi
cd -P -- "$1"
IFS="/"
set -f # turn off globbing for the expansion of $PWD below
for dir in $PWD; do
    stat -c "$PWD %A" .
    cd ..
done

另一种选择是当前目录的一行代码。

(IFS="/"; set -f; for dir in $PWD; do stat -c "$PWD %A" .; cd ..; done)

相关内容