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?
La commande aurait pu être:
namei -m /home/user/dir/child/file
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épertoiresAprè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'
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}