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


27

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?


Ne rien voir d'éclairant de apropos modeou apropos permissionssur OS X et Debian. Savez-vous quelle plateforme / distribution vous utilisiez? Serait-ce une commande de site local? Vous pouvez créer un script pour un tel outil en utilisant dirnameet stat.
— mrb

Utiliser Arch Linux et une jolie installation vanille donc pas trop d'outils supplémentaires installés. Notez qu'il s'agissait de propriétaires ET / OU d'autorisations, je ne suis pas sûr à ce stade. L'un ou l'autre serait utile.
— veuillez me supprimer

Réponses:


31

La commande aurait pu être:

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

6
namei -moest génial, que cela vous donne également le propriétaire.
— earthmeLon

2
ATTENTION: namei n'affichera pas les ACL linux ou MAC SELinux. J'ai compris qu'une ACL bloquait nginx en vérifiant manuellement avecsudo su nginx -s/bin/bash
— Ray Foss

28

Je pense que vous pensez peut-être à la treecommande. 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 d'indentation
  • -d - imprimer uniquement les répertoires

Les références


3
Je pense qu'il a été demandé d'afficher les ancêtres et /home/user/dir/child/filenon les enfants.
— Raphael Ahrens

@RaphaelAhrens - oui, je m'en rends compte, mais il n'y a pas de commande à ma connaissance qui fasse exactement cela, il y a cependant la commande d'arbre qui fait ce que j'ai montré et elle est étrangement similaire à ce à quoi le PO pensait.
— slm

Est-ce -uvraiment nécessaire? Il semble que ce soit ici par défaut (Tree ver. 1.6.0 sous GNU bash 4.2.45). Existe-t-il une option pour désactiver le "nom d'utilisateur / ID utilisateur"?
— Nikos Alexandris

1
@NikosAlexandris - si je laisse tomber ce commutateur, je n'obtiens pas le nom d'utilisateur. Mon ver: arbre v1.6.0. Je suis sur Fedora 19, GNU bash, version 4.2.45 (1) -release (x86_64-redhat-linux-gnu).
— slm

Différents "défauts" entre les versions bash? Merci d'avoir informé.
— Nikos Alexandris

3

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'

1
Vous pouvez inverser avec | tacsi vous l'avez ou | sed '1!G;h;$!d'non.
— mrb

2
Cela se cassera pour les chemins relatifs. Faites à la [ "$l_path" != / -a "$l_path" != . ]place.

@Evan Teitelman dirname devrait donner le chemin complet
— Raphael Ahrens

1
@RaphaelAhrens non, il retournera un point pour le chemin relatif à la fin.
— précipitez-vous le

1
En outre, stat -ldevrait probablement être statou ls -ld.

0

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 /dedans :) si vous voulez retourner où vous étiez, encapsulez la commande à l'intérieur

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

-1

La commande que vous recherchez pour répertorier les autorisations et les propriétaires / groupes est ls -l .

L'option -l est utilisée pour le format de liste longue.

ls -l / chemin / vers / liste

De plus, si vous souhaitez lister et les fichiers cachés, ajoutez l' option -a (tout) .

ls -al / chemin / vers / liste

En outre, si vous souhaitez répertorier les autorisations dans vos sous - répertoires, utilisez l' option -R (récursive) .

ls -Rl / chemin / vers / liste

La première colonne affiche les autorisations (lecture (r), écriture (w), exécution (x)) et certaines autorisations spéciales (répertoires (d), - (fichier normal)) et les 3e et 4e colonnes vous montrent le fichier / répertoire propriétaire et groupe respectivement.


2
Je ne pense pas que ce soit ce qui est demandé. Il semble que le demandeur recherche une liste des autorisations des répertoires qui mènent à un fichier.
— Mat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.