ルートからファイルのパスまでのファイルとすべてのフォルダの権限を一覧表示するコマンド

ルートからファイルのパスまでのファイルとすべてのフォルダの権限を一覧表示するコマンド

たとえば、 というファイルがある場合、 の権限と、ルートからのパスにあるすべてのディレクトリの権限、つまり 、 、 、 の権限を一覧表示する/var/some_dir_1/some_dir_2/some_dir_3/some_file単一のコマンドはありますか?some_filevarsome_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

フルパスを指定する必要があります。入力したくない場合は、realpathまたは を使用できますreadlink

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

eg として保存し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 /

関心がある場合は、ACL と拡張属性を印刷するために、呼び出しに引数を追加するlsか、たとえば、システムの適切な に置き換えます。getfacl

関連情報