O comando poderia ter sido:
namei -m /home/user/dir/child/file
Lembro-me de fazer algo como "XXX / home / user / dir / child / file" e ele retornou o proprietário e / ou a permissão de:
/home
/home/user
/home/user/dir
/home/user/child
/home/user/child/file
Mas não me lembro qual foi esse comando. Alguém tem alguma ideia?
Acho que você pode estar pensando no comando tree
. Por exemplo:
$ 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
...
...
Os switches acima fazem o seguinte:
-p
- permissões -u
- username / userid -f
- caminho completo -i
- não imprima linhas de indentação -d
- somente diretórios de impressão Depois de dar um pouco de coragem, eu inventei isso
#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
ls -ld $l_path
l_path=$(dirname -- "$l_path")
done
A saída é semelhante a esta
-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
Espero que esteja bem em ordem inversa.
Com base nos comentários, aqui está uma maneira de listar da raiz para baixo:
#!/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'
No diretório do qual você deseja saber as permissões e proprietários do ancester:
for i in $(seq 0 $(pwd | tr -cd / | wc -c)) ; do pwd ; ls -lad ; cd .. ; done
Note que depois disso, você estará em /
:) se você quiser voltar para onde estava, coloque o comando dentro
HERE=$(pwd)
...
cd ${HERE}
O comando que você está procurando para listar permissões e proprietários / grupos é ls -l .
A opção-l é usada para o formato de listagem longa.
ls -l /path/to/list
Além disso, se você deseja listar e os arquivos ocultos , adicione a opção -a (all) .
ls -al /path/to/list
Além disso, se você quiser listar as permissões em seus subdiretórios , use a opção -R (recursiva) .
ls -Rl /path/to/list
A primeira coluna exibe as permissões (read (r), write (w), executar (x)) e algumas permissões especiais (diretórios (d), - (arquivo regular)) ea terceira e quarta coluna mostra a você proprietário e grupo do arquivo / diretório, respectivamente.
Tags command-line ls files