O que você está perguntando tem mais a ver com a maneira como o sistema de arquivos virtual realiza travessias de diretórios. Devido ao fato de que tudo em um sistema Linux é um arquivo, isso cria uma peculiaridade ao lidar com diretórios. Enquanto eles têm um campo de execução, não faz sentido tentar executar um diretório. Além disso, no sistema de arquivos ext2 / 3/4, a estrutura de dados usada tem pouca semelhança com o arquivo "true". Em vez disso, as permissões têm significados ligeiramente diferentes quando aplicadas a diretórios.
- read - O designado tem permissão para imprimir uma listagem de todas as entradas de diretório
- write - O designado tem permissão para criar novas entradas de diretório
- execute - O designado tem permissão para obter o inode de entradas de diretório
Compreendendo essas distinções, podemos ver que, se as permissões de um usuário em um diretório específico forem --x
, poderemos determinar que o usuário tem permissão para tentar acessar um arquivo, mas sem realmente poder para ver a entrada do diretório em si. Ou mais sucintamente, como por coredump, "com --x você não pode listar o diretório, mas você pode ler os arquivos dentro dele se as permissões de arquivo permitem isso. "
Sabendo de tudo isso, vamos pegar o arquivo /home/user/public/file
como exemplo. Geralmente não se deve abrir seu diretório home globalmente, mas eles querem oferecer arquivos em 'público' globalmente. Como tal, você deve definir as permissões assim:
-
/home
- 755
-
/home/user
- 711 (ou possivelmente 751)
-
/home/user/public
- 755