/ / Linux - liste todos os subdiretórios e obtenha ACL - linux, acl, ls

Linux - liste todos os subdiretórios e obtenha o ACL - linux, acl, ls

Estou tentando:

  1. Liste todos os subdiretórios em um diretório de nível superior (/ shared) e faça a saída para um arquivo chamado directory_list
  2. Depois, quero executar o getfacl usando o arquivo como entrada e enviar os resultados para um arquivo chamado acl_list

Então, finalmente, obter as ACLs para todos os subdiretórios em / shared.

As etapas que estou tentando usar são:

  1. ls -d -- /shared/*/*/*/ > directory_list
  2. getfacl < directory_list > acl_list

Existe um comando diferente que eu possa usar para (1)onde listará os subdiretórios recursivamente, como -dr (listar diretórios recursivamente) não parece funcionar. Também não sei quantos níveis de subdiretórios existem.

Quando executo o 2º comando, parece haver algum erro de sintaxe que impede sua execução, mas verifiquei a sintaxe nas páginas de manual do linux e deve estar correto.

Alguém poderá me indicar a direção correta?

obrigado

Respostas:

2 para resposta № 1
  1. Usar find para fazer uma lista recursiva:

    find /shared -type d -print > directory_list
    
  2. getfacl espera que os nomes dos arquivos sejam argumentos de linha de comando, ele não lê a entrada padrão. xargs para executar esta tradução:

    xargs -d "n" getfacl < directory_list > acl_list
    

o -d A opção especifica o delimitador, substituindo o uso padrão do espaço em branco. No entanto, acredito que seja uma extensão GNU, pode não estar em todas as versões do xargs. Se você não pode usá-lo, precisará escrever um loop:

while read -r filename; do
getfacl "$filename"
done < directory_list > acl_list

0 para resposta № 2

o find O comando deve fornecer o que você precisa:

find /shared -type d

-type d restringe a saída apenas aos diretórios.


0 para resposta № 3

Eu sei que você realmente pediu isso, mas tecnicamente você precisa do diretório_list intermediário?

find /shared -type d -print -exec getfacl "{}" + > acl_list