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/username
pastas 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/bin
ou usr/lib
e 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 754
se tornaria 750
, uma pasta com 756
se tornaria 752
, uma pasta com 755
se tornaria 751
, etc., enquanto uma pasta com 753
, 752
, 751
ou 750
permaneceria 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/username
pastas 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, find
executa chmod
. chmod
em 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: