web-dev-qa-db-fra.com

Afficher l'autorisation / propriétaire de l'arborescence complète du répertoire

Je me souviens avoir fait quelque chose comme "XXX/home/user/dir/child/file" et cela a renvoyé le propriétaire et/ou la permission de:

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

Mais je ne me souviens pas de ce qu'était cette commande. Quelqu'un a une idée?

30
please delete me

La commande aurait pu être:

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

Je pense que vous pensez peut-être à la commande tree. Par exemple:

$ 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
...
...

Les commutateurs ci-dessus effectuent les opérations suivantes:

  • -p - autorisations
  • -u - nom d'utilisateur/ID utilisateur
  • -f - chemin complet
  • -i - n'imprime pas les lignes de retrait
  • -d - imprimer uniquement les répertoires

Références

31
slm

Après y avoir réfléchi, je suis venu avec cette

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

La sortie ressemble à ceci

-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

J'espère que c'est ok que c'est dans l'ordre inverse.

Sur la base des commentaires, voici un moyen de lister de la racine vers le bas:

#!/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

Dans le répertoire dont vous souhaitez connaître les autorisations et les propriétaires des ancêtres:

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

Notez qu'après cela, vous serez dans / :) si vous voulez retourner où vous étiez, encapsulez la commande à l'intérieur

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