web-dev-qa-db-ja.com

完全なディレクトリツリーの表示権限/所有者

"XXX/home/user/dir/child/file"のようなことをしたことを覚えており、それは所有者および/または許可を返しました:

/home
/home/user
/home/user/dir
/home/user/child
/home/user/child/file

しかし、私はこのコマンドが何であったか覚えていません。誰かアイデアはありますか?

30

コマンドは次のようになります。

namei -m /home/user/dir/child/file
34
user59736

treeコマンドを考えているかもしれません。例えば:

$ tree -pufid apps/glassfish3/ | less
apps/glassfish3
[drwxr-xr-x saml    ]  apps/glassfish3/bin
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/bin
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/config
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/doc-files
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation/security
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation/sql
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/decorator
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/ejb
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/ejb/embeddable
...
...

上記のスイッチは次のことを行います。

  • -p-権限
  • -u-ユーザー名/ユーザーID
  • -f - フルパス
  • -i-インデント行を印刷しません
  • -d-ディレクトリのみを印刷

参考文献

31
slm

それを少し考えた後、私はこれを思いつきました

#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
     ls -ld $l_path
     l_path=$(dirname -- "$l_path")
done

出力は次のようになります

-rw------- 1 tant tant 181016423 Jun 25 23:49:17 2013 /home/tant/test_file
drwxr-xr-x 85 tant tant 5632 Jul  9 19:40:11 2013 /home/tant
lrwxr-xr-x 1 root wheel 8 Sep  4 23:53:27 2012 /home -> usr/home

逆順でも大丈夫だと思います。

コメントに基づいて、ルートから下にリストする方法は次のとおりです。

#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
     ls -ld $l_path
     l_path=$(dirname -- "$l_path")
done | sed '1!G;h;$!d'
3
Raphael Ahrens

先祖の権限と所有者を知りたいディレクトリで:

for i in $(seq 0 $(pwd | tr -cd / | wc -c)) ; do pwd ; ls -lad ; cd .. ; done

その後は/ :)元の場所に戻りたい場合は、コマンドを内部にラップします

HERE=$(pwd)
...
cd ${HERE}
0
yPhil