Wyświetl uprawnienie / właściciela pełnego drzewa katalogów

27

Pamiętam, że robiłem coś takiego jak „XXX / home / user / dir / child / file” i zwróciło to właściciela i / lub pozwolenie:

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

Ale nie pamiętam, czym było to polecenie. Czy ktoś ma pomysł?

proszę usuń mnie
źródło
Nie widzę nic oświecającego z apropos modelub apropos permissionsna OS X i Debianie. Czy wiesz, jakiej platformy / dystrybucji używałeś? Czy mogło to być polecenie lokalne? Możesz napisać takie narzędzie za pomocą dirnamei stat.
mrb
Korzystanie z Arch Linux i dość waniliowej instalacji, więc nie zainstalowano zbyt wielu dodatkowych narzędzi. Pamiętaj, że to byli właściciele I / LUB uprawnienia, nie jestem pewien w tym momencie. Albo przydałby się.
proszę skasuj mnie

Odpowiedzi:

31

Poleceniem mogło być:

namei -m /home/user/dir/child/file
użytkownik59736
źródło
6
namei -mojest świetne, że daje również właścicielowi.
earthmeLon
2
UWAGA: namei nie pokaże linuksowych list ACL ani adresów MAC SELinux. Zorientowałem się, że ACL blokuje nginx, ręcznie sprawdzając za pomocąsudo su nginx -s/bin/bash
Ray Foss,
28

Myślę, że możesz myśleć o treepoleceniu. Na przykład:

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

Powyższe przełączniki wykonują następujące czynności:

  • -p - uprawnienia
  • -u - nazwa użytkownika / identyfikator użytkownika
  • -f - Pełna ścieżka
  • -i - nie drukuj linii wcięć
  • -d - tylko drukuj katalogi

Referencje

slm
źródło
3
Myślę, że poproszono o pokazanie przodków, a /home/user/dir/child/filenie dzieci.
Raphael Ahrens,
@RaphaelAhrens - tak, zdaję sobie sprawę z tego, ale nie mam polecenia, które jest tego świadome, robi dokładnie to, istnieje jednak polecenie drzewa, które robi to, co pokazałem i jest podejrzanie podobne do tego, o czym myślał OP.
slm
Czy to -unaprawdę konieczne? Wygląda na to, że tutaj jest domyślnie (Tree ver. 1.6.0 pod GNU bash 4.2.45). Czy istnieje opcja wyciszenia „nazwy użytkownika / identyfikatora użytkownika”?
Nikos Alexandris
1
@NikosAlexandris - jeśli upuszczę ten przełącznik, nie otrzymam nazwy użytkownika. Moja wersja: drzewo v1.6.0. Jestem na Fedorze 19, GNU bash, wersja 4.2.45 (1) -release (x86_64-redhat-linux-gnu).
slm
Różne „domyślne” między wersjami bash? Dziękuję za informację.
Nikos Alexandris,
3

Po zastanowieniu się, wymyśliłem to

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

Dane wyjściowe wyglądają tak

-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

Mam nadzieję, że jest w porządku, że jest w odwrotnej kolejności.

W oparciu o komentarze, oto sposób na listę od katalogu głównego w dół:

#!/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'
Raphael Ahrens
źródło
1
Możesz cofnąć, | tacjeśli masz, lub | sed '1!G;h;$!d'jeśli nie.
mrb
2
Spowoduje to uszkodzenie ścieżek względnych. Rób [ "$l_path" != / -a "$l_path" != . ]zamiast tego.
@Evan Teitelman dirname powinien podać pełną ścieżkę
Raphael Ahrens
1
@RaphaelAhrens nie, zwróci kropkę na ścieżkę względną na końcu.
pędzi
1
Ponadto stat -lprawdopodobnie powinien być statlub ls -ld.
0

W katalogu, w którym chcesz poznać uprawnienia i właścicieli ancestera:

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

Pamiętaj, że po tym będziesz w /:) jeśli chcesz wrócić do miejsca, w którym byłeś, zawiń polecenie w środku

HERE=$(pwd)
...
cd ${HERE}
yPhil
źródło
-1

Poleceniem, którego szukasz na liście uprawnień i właścicielach / grupach, jest ls -l .

Opcja -l jest używana dla formatu długiej listy.

ls -l / ścieżka / do / listy

Ponadto, jeśli chcesz wyświetlić listę i ukryte pliki, dodaj opcję -a (wszystkie) .

ls -al / path / to / list

Ponadto, jeśli chcesz wyświetlić listę uprawnień w swoich podkatalogach, użyj opcji -R (rekurencyjnej) .

ls -Rl / ścieżka / do / listy

Pierwsza kolumna wyświetla uprawnienia (odczyt (r), zapis (w), wykonanie (x)) i niektóre uprawnienia specjalne (katalogi (d), - (zwykły plik)), a trzecia i czwarta kolumna pokazuje plik / katalog odpowiednio właściciel i grupa.

dastergon
źródło
2
Nie sądzę, żeby o to proszono. Wygląda na to, że pytający szuka listy uprawnień do katalogów, które prowadzą do pliku.
Mat.