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.