Normalmente tenho um diretório onde desejo que todos os usuários possam navegar, mas os arquivos são ilegíveis e inexecutáveis.
Vejo algumas perguntas relacionadas que não correspondem exatamente ao que desejo:
Essa questãoestá usando
umask
. Não se aplica porque esses arquivos já foram criados.Essa questãoestá usando ACLs. Eu quero usar permissões UNIX aqui.
Normalmente uso um find
comando, mas estou ciente de que ele tem alguns pontos fracos. Vou publicá-lo como uma resposta potencial daqui a pouco, juntamente com o motivo pelo qual acho que pode haver uma maneira melhor.
Responder1
Eu normalmente uso o seguinte:
find . -type f -print0 | xargs -0 sudo chmod 440
find . -type d -print0 | xargs -0 sudo chmod 555
No entanto, isso não leva em consideração os executáveis. Eu estava pensando em fazer algo assim para arquivos:
find . -type f -print0 | xargs -0 sudo chmod ug+r ug-w o-rwx
Mas ainda são dois comandos e não tenho certeza se esse é o melhor caminho. Talvez alguém tenha uma proposta melhor.
Responder2
Bem, apenas não defina as mesmas permissões no diretório e nos arquivos dentro dele:
$ chmod g+rx directory/
$ chmod g= directory/*
Aqui, os membros do grupo podem entrar e navegar no diretório, mas não poderão ler os arquivos contidos nele.
Editar: em relação ao seu novo título, sugiro:
$ chmod a+rx directory/
$ chmod u=rwX,g=rX,o= *
Responder3
Para diretórios e arquivos já criados:
encontre /start_directory -type d -exec chmod 755 {} \;
encontre /start_directory -type f -exec chmod 660 {} \;
Se seus usuários puderem criar novos arquivos e/ou subdiretórios, forneça mais detalhes porque uma solução depende dos requisitos exatos.