用於列出檔案和從根目錄到檔案路徑的所有資料夾的權限的命令

用於列出檔案和從根目錄到檔案路徑的所有資料夾的權限的命令

給定一個文件,比如說/var/some_dir_1/some_dir_2/some_dir_3/some_file,是否有一個命令可以列出 的權限以及從 root 開始其路徑中的所有目錄,即, , ,some_file的權限?varsome_dir_1some_dir_2some_dir_3

答案1

您可以在絕對路徑上使用nameiwith (long):-l

namei -l /absolute/path/to/file

它會給你類似的東西:

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

您必須提供完整路徑。如果您不想鍵入它,可以使用realpathreadlink

namei -l $(readlink -m relative_path_to/file)

答案2

以下bash腳本列印作為參數傳遞的目錄條目的所有權限及其所有父項的權限/

#!/usr/bin/env bash

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

FILEPATH="$1"

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

另存為 例如parent_permissions.sh並使用 運行/path/to/parent_permissions.sh /path/to/file

它僅適用於絕對路徑,除非與readlink -f或組合abspath這個答案的腳本,在這種情況下,您需要將 的初始分配變更FILEPATH為:

FILEPATH="$( abspath "$1" )"

在 Linux 上,這可能有效(未經測試):

FILEPATH="$( readlink -f "$1" )"

輸出範例:

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 /

在呼叫中新增參數ls,或根據您的系統情況將其替換為getfacl,以列印 ACL 和擴充屬性(如果您對它們感興趣)。

相關內容