Visualizza l'autorizzazione / proprietario dell'albero di directory completo


27

Ricordo di aver fatto qualcosa del tipo "XXX / home / user / dir / child / file" e ha restituito il proprietario e / o l'autorizzazione di:

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

Ma non ricordo quale fosse questo comando. Qualcuno ha idea?


Non vedere nulla di illuminante da apropos modeo apropos permissionssu OS X e Debian. Sai quale piattaforma / distribuzione stavi utilizzando? Potrebbe essere stato un comando site-local? Puoi scrivere uno strumento simile usando dirnamee stat.
MR

Usando Arch Linux e una bella installazione vanilla, quindi non troppi strumenti extra installati. Si noti che erano i proprietari E / O le autorizzazioni, non sono sicuro a questo punto. O sarebbe utile.
favore, cancellami il

Risposte:


31

Il comando avrebbe potuto essere:

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

6
namei -moè fantastico, che ti dà anche il proprietario.
earthmeLon

2
ATTENZIONE: namei non mostrerà ACL di Linux o SELinux MAC. Ho capito che un ACL stava bloccando nginx controllando manualmente consudo su nginx -s/bin/bash
Ray Foss

28

Penso che potresti pensare al treecomando. Per esempio:

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

Le opzioni precedenti eseguono le seguenti operazioni:

  • -p - autorizzazioni
  • -u - nome utente / ID utente
  • -f - percorso completo
  • -i - non stampare le righe di rientro
  • -d - solo directory di stampa

Riferimenti


3
Penso che sia stato chiesto di mostrare gli antenati /home/user/dir/child/filenon i bambini.
Raphael Ahrens,

@RaphaelAhrens - sì, me ne rendo conto, ma non esiste un comando di cui sono a conoscenza che fa esattamente questo, esiste tuttavia il comando tree che fa ciò che ho mostrato ed è sospettosamente simile a quello a cui stava pensando l'OP.
slm

È -udavvero necessario? Sembra che sia predefinito qui (Tree ver. 1.6.0 sotto GNU bash 4.2.45). Esiste un'opzione per mettere a tacere "username / userid"?
Nikos Alexandris,

1
@NikosAlexandris - se lascio cadere l'interruttore non ottengo il nome utente. Mia ver: tree v1.6.0. Sono su Fedora 19, GNU bash, versione 4.2.45 (1) -release (x86_64-redhat-linux-gnu).
slm

Differenti "valori predefiniti" tra le versioni bash? Grazie per aver informato.
Nikos Alexandris,

3

Dopo averlo dato un po 'di vomito, ho pensato a questo

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

L'output è simile al seguente

-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

Spero sia ok che sia nell'ordine inverso.

Sulla base dei commenti, ecco un modo per elencare dalla radice in giù:

#!/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
Puoi invertire con | tacse ce l'hai o | sed '1!G;h;$!d'no.
MR

2
Ciò si interromperà per i percorsi relativi. Fare [ "$l_path" != / -a "$l_path" != . ]invece.

@Evan Teitelman dirname dovrebbe fornire il percorso completo
Raphael Ahrens

1
@RaphaelAhrens no, alla fine restituirà un punto per il relativo percorso.
precipita il

1
Inoltre, stat -ldovrebbe probabilmente essere stato ls -ld.

0

Nella directory di cui si desidera conoscere le autorizzazioni e i proprietari dell'antenato:

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

Nota che dopo, sarai in /:) se vuoi tornare dove eri, avvolgi il comando all'interno

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

-1

Il comando che stai cercando elencando permessi e proprietari / gruppi è ls -l .

-l opzione viene utilizzata per il formato elenco lungo.

ls -l / path / to / list

Inoltre, se si desidera elencare e i file nascosti, aggiungere l' opzione -a (tutto) .

ls -al / path / to / list

Inoltre, se si desidera elencare le autorizzazioni nelle sottodirectory utilizzare l' opzione -R (ricorsiva) .

ls -Rl / path / to / list

La prima colonna mostra i permessi (read (r), write (w), execute (x)) e alcuni permessi speciali (directory (d), - (file normale)) e la 3a e 4a colonna mostrano il file / directory proprietario e gruppo rispettivamente.


2
Non credo sia quello che viene richiesto. Sembra che il richiedente sia alla ricerca di un elenco di autorizzazioni per le directory che portano a un file.
Mat
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.