Tornando todas as pastas não legíveis para "outros" - mas mantendo seu status original em relação a "gravar" e "executar"

Tornando todas as pastas não legíveis para "outros" - mas mantendo seu status original em relação a "gravar" e "executar"

TLDR: Como posso alterar as permissões de todas as pastas do computador de forma que, para "outras", as pastas percam apenas a legibilidade? Ou seja, eles mantêm o status de “escrever” e “executar”, mas perdem a possibilidade de “ler” caso o tivessem em primeiro lugar?

Versão longa: Ao configurar um servidor (onde os usuários podem usar SSH) pela primeira vez, minha primeira inclinação foi tentar descobrir como alguém poderia criar novos usuários que tenham permissão para acessar apenas suas próprias home/usernamepastas e subpastas.

No entanto, encontrei algumas referências (por exemploesta pergunta/resposta) online explicando que isso talvez não fosse uma boa ideia porque os usuários ainda precisariam acessar algumas pastas do sistema como usr/binou usr/libe gravar em pastas como tmp. Claro, faz sentido. Então, o que tentei fazer foi fazer com que os usuários pudessemusaro que está nas pastas do sistema, mas nãoverseu conteúdo.

Mais especificamente, isso significaria definir todas as pastas do sistema para que não pudessem ser lidas por "outros", mantendo seu status original para "outros" no que diz respeito à capacidade de escrita e execução. Por exemplo, uma pasta com permissão 754se tornaria 750, uma pasta com 756se tornaria 752, uma pasta com 755se tornaria 751, etc., enquanto uma pasta com 753, 752, 751ou 750permaneceria a mesma. E assim por diante.

Dessa forma, ninguém além do root seria capaz de ver o que está dentro de qualquer pasta além de suas home/usernamepastas e subpastas, mas ela ainda poderia executar e escrever normalmente em todas as pastas do sistema que originalmente permitiam isso.

Como eu poderia fazer isso para todas as pastas? Comentários sobre as possíveis falhas desta ideia também são bem-vindos.

Responder1

find /path/to/directory/ -type d -exec chmod o-r {} \;

Deveria trabalhar. Para cada pasta, findexecuta chmod. chmodem seguida, remove o bit de leitura para outros.

Responder2

Somente objetos binários abertos pelo próprio kernel podem ser sinalizados como executáveis, mas não legíveis. Qualquer tipo de script (bash, python, etc.) teria que ser lido primeiro antes de ser executado. Ver:

informação relacionada