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.