命令列出文件的权限以及从根目录到文件路径的所有文件夹

Geo*_*rge 8 linux

例如/var/some_dir_1/some_dir_2/some_dir_3/some_file,给定一个文件,是否有一个命令可以列出some_file其路径中所有目录的权限,即var, some_dir_1, some_dir_2,的权限some_dir_3

Tva*_*tom 9

您可以在绝对路径上使用nameiwith -l(long) :

namei -l /absolute/path/to/file
Run Code Online (Sandbox Code Playgroud)

它会给你类似的东西:

dr-xr-xr-x root  root   /
drwxr-xr-x root  root   absolute
drwx------ user1 group1 path
drwxr-xr-x user1 group1 to
-rw-r--r-- user1 group1 file
Run Code Online (Sandbox Code Playgroud)

您必须提供完整路径。如果您不想输入它,您可以使用realpathreadlink

namei -l $(readlink -m relative_path_to/file)
Run Code Online (Sandbox Code Playgroud)


Dan*_*eck 2

以下bash脚本打印作为参数传递的目录条目的所有权限及其所有父项的权限/

#!/usr/bin/env bash

[[ $# -eq 1 ]] || exit 1

FILEPATH="$1"

while true ; do
    ls -ld "$FILEPATH"
    [[ "$FILEPATH" != "/" ]] || exit
    FILEPATH="$( dirname "$FILEPATH" )"
done
Run Code Online (Sandbox Code Playgroud)

另存为 例如parent_permissions.sh并使用 运行/path/to/parent_permissions.sh /path/to/file

它仅适用于绝对路径,除非与此答案中的脚本readlink -f结合使用,在这种情况下,您需要将 的初始分配更改为:abspathFILEPATH

FILEPATH="$( abspath "$1" )"
Run Code Online (Sandbox Code Playgroud)

在 Linux 上,这可能有效(未经测试):

FILEPATH="$( readlink -f "$1" )"
Run Code Online (Sandbox Code Playgroud)

输出示例:

drwxr-xr-x  66 danielbeck  staff  2244  2 Feb 12:38 /Users/danielbeck
drwxr-xr-x  11 root  admin  374  1 Feb 15:21 /Users
drwxrwxr-t  35 root  admin  1258 22 Jan 23:09 /
Run Code Online (Sandbox Code Playgroud)

向调用中添加参数,或者根据您的系统情况ls将其替换为,以打印 ACL 和扩展属性(如果您对它们感兴趣)。getfacl