Exibir permissão / proprietário da árvore de diretório completo


27

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 era esse comando. Alguém tem alguma ideia?


Não vendo nada iluminando a partir apropos modeou apropos permissionsno OS X e Debian. Você sabe qual plataforma / distribuição você estava usando? Poderia ter sido um comando local-local? Você pode criar um script dessa ferramenta usando dirnamee stat.
Mrb 09/07

Usando o Arch Linux e uma bonita instalação de baunilha, não há muitas ferramentas extras instaladas. Observe que eram permissões de proprietários E / OU, não tenho certeza neste momento. Qualquer um seria útil.
delete delete me

Respostas:


31

O comando poderia ter sido:

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

6
namei -moé ótimo, que também te dá o dono.
earthmeLon

2
CUIDADO: namei não mostrará ACL do linux ou MAC do SELinux. Eu descobri que um ACL foi bloqueio nginx verificando manualmente comsudo su nginx -s/bin/bash
Raio Foss

28

Eu acho que você pode estar pensando no treecomando. 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
...
...

As opções acima fazem o seguinte:

  • -p - permissões
  • -u - nome de usuário / ID do usuário
  • -f - caminho completo
  • -i - não imprima linhas de indentação
  • -d - imprima apenas diretórios

Referências


3
I think it was asked to display the ancestors of /home/user/dir/child/file not the children.
Raphael Ahrens

@ RaphaelAhrens - sim, eu percebo que, mas não existe um comando que eu saiba que faça exatamente isso; no entanto, existe o comando em árvore que faz o que eu mostrei e é suspeitamente semelhante ao que o OP estava pensando.
Slm

É -urealmente necessário? Parece que é o padrão aqui (Tree ver. 1.6.0 no GNU bash 4.2.45). Existe uma opção para silenciar o "nome de usuário / ID do usuário"?
Nikos Alexandris

11
@ NikosAlexandris - se eu largar essa opção, não recebo o nome de usuário. Minha versão: tree v1.6.0. Estou no Fedora 19, GNU bash, versão 4.2.45 (1) -release (x86_64-redhat-linux-gnu).
slm

Diferentes "padrões" entre as versões do bash? Obrigado por informar.
Nikos Alexandris

3

Depois de pensar um pouco, eu vim com 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 é assim

-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 tudo 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'

11
Você pode reverter | tacse tiver, ou | sed '1!G;h;$!d'se não tiver.
Mrb 09/07

2
Isso será interrompido para caminhos relativos. Faça em [ "$l_path" != / -a "$l_path" != . ]vez disso.

@Evan Teitelman dirname deve dá o caminho completo
Raphael Ahrens

11
@RaphaelAhrens não, ele retornará um ponto para o caminho relativo no final.
apressar

11
Além disso, stat -lprovavelmente deve ser statou ls -ld.

0

No diretório em que você deseja conhecer as permissões e os proprietários do antepassado:

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

Observe que, depois disso, você estará em /:) se quiser voltar para onde estava, coloque o comando dentro

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

-1

O comando que você está procurando listando permissões e proprietários / grupos é ls -l .

A opção -l é usada para o formato de listagem longa.

ls -l / caminho / para / lista

Além disso, se você deseja listar e os arquivos ocultos , adicione a opção -a (todos) .

ls -al / caminho / para / lista

Além disso, se você deseja listar permissões em seus subdiretórios, use a opção -R (recursiva) .

ls -Rl / caminho / para / lista

A primeira coluna exibe as permissões (leitura (r), gravação (w), execução (x)) e algumas permissões especiais (diretórios (d), - (arquivo comum)) e a terceira e quarta coluna mostra o arquivo / diretório proprietário e grupo, respectivamente.


2
Eu não acho que é o que é pedido. Parece que o solicitante está procurando uma lista de permissões de diretórios que levam a um arquivo.
Mat
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.