Concedendo permissão de leitura / execução para 'outros usuários' em uma árvore de diretórios

1

Existe a seguinte árvore de diretórios em várias das minhas caixas Linux:

/dir1/dir2/dir3/dir4/target

Cada um dos diretórios dir [1-4] tem vários diretórios sob eles e todos esses diretórios (e seus subdiretórios) possuem 750 de permissões. Agora, quero others navegar pelo diretório 'target' e seus subdiretórios. A execução de chmod -R o+rx em /dir1/dir2/dir3/dir4/target altera a permissão em /dir1/dir2/dir3/dir4/target para 755 , mas os usuários others não podem ir para esse diretório, pois não há permissão r-x em seus diretórios pai. Em um dos servidores, eu trabalhei em torno disso, concedendo o seguinte:

chmod -R o+x /dir1
chmod -R o+rx /dir1/dir2/dir3/dir4/target

Considerando que o comando acima também forneceria permissão 'traverse' em todos os subdiretórios de / dir [1-4], existe um comando melhor para fornecer permissões de passagem somente em diretórios / dir [1-4] e permissão rx no diretório 'target'?

    
por Sree 09.07.2018 / 11:44

1 resposta

3

Para definir x permissões para "outros" em /dir1/dir2/.../target e todos os diretórios intermediários (exceto para o diretório raiz) e r permissões no diretório target no final do caminho:

dir=/dir1/dir2/dir3/dir4/target

chmod o+r "$dir"
while [ -n "$dir" ]; do
    chmod o+x "$dir"
    dir=${dir%/*}
done

Para o caminho do diretório fornecido, isso executaria os comandos

chmod o+r /dir1/dir2/dir3/dir4/target
chmod o+x /dir1/dir2/dir3/dir4/target
chmod o+x /dir1/dir2/dir3/dir4
chmod o+x /dir1/dir2/dir3
chmod o+x /dir1/dir2
chmod o+x /dir1

O valor dir variables é alterado em cada iteração do loop removendo o último / e tudo depois dele.

    
por 09.07.2018 / 12:00

Tags