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