O que isso faz? 'Encontre ... - tipo d | xargs chmod 770'

1

O que essas duas linhas fazem?

find /backup/folder -type d|xargs chmod 770
find /backup/folder -type f|xargs chmod 660

Eu pesquisei por aí, mas não consigo descobrir o que d|xargs e f|xargs fazem.

    
por Zeth 09.07.2017 / 14:16

1 resposta

3

Você mencionou d|xargs e f|xargs , mas nenhum deles faz sentido por si só. O primeiro comando pode ser escrito como:

{ find /backup/folder -type d ; } | { xargs chmod 770 ; }

Portanto, a pergunta pode ser: o que find … | xargs … faz? Ele pega o que find gera e faz com que ele tenha argumentos do que é depois de xargs .

No primeiro comando find encontra todos os diretórios em /backup/folder (incluindo /backup/folder . Então xargs executa:

chmod 770 <all_these_directories_here>

O efeito é que todas essas permissões de diretórios agora são 770 (a menos que você não possa alterá-las em primeiro lugar). Isso significa acesso total para o proprietário, o grupo, sem acesso para outros usuários.

O segundo comando tenta definir 660 permissões para todos os arquivos (devido a -type f ) em /backup/folder . Isso significa permissão de leitura e gravação para o proprietário, o mesmo para o grupo, sem acesso para outros usuários.

Observe que a opção chmod tem -R que a torna recursiva. No entanto, dificilmente é útil quando você precisa definir todas as permissões de uma só vez, porque você quase sempre precisa de permissões diferentes para diretórios do que para arquivos, como neste caso.

Invocar chmod -R 770 /backup/folder define todos os arquivos como executáveis (para seu proprietário e grupo), o que raramente é o que você deseja. Por outro lado, chmod -R 660 /backup/folder impedirá que você pesquise diretórios.

A execução de find -type … | xargs chmod … (ou find -type … -exec chmod … {} + ) com diretórios e arquivos (separadamente) em mente é o caminho a seguir.

    
por 09.07.2017 / 14:41

Tags