Definir permissões globais de navegação para subdiretórios (rx), mas tornar os arquivos inacessíveis para todos, exceto o proprietário e os membros do grupo

Definir permissões globais de navegação para subdiretórios (rx), mas tornar os arquivos inacessíveis para todos, exceto o proprietário e os membros do grupo

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 findcomando, 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.

informação relacionada