Os scripts de shell exigem a permissão de leitura para serem executados, mas os arquivos binários não:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
Exibir o conteúdo de um arquivo e executá-lo são duas coisas diferentes. Com os scripts de shell, essas coisas estão relacionadas porque são "executadas" pela "leitura" delas em um novo shell (ou no atual), se você perdoar a simplificação. É por isso que você precisa ser capaz de lê-los. Os binários não usam esse mecanismo.
Para diretórios, a permissão de execução é um pouco diferente; significa que você pode fazer coisas com arquivos dentro desse diretório (por exemplo, lê-los ou executá-los). Então, digamos que você tenha um conjunto de ferramentas em /tools
que deseja que as pessoas possam usar, mas apenas se elas souberem. chmod 711 /tools
. Em seguida, as coisas executáveis /tools
podem ser executadas explicitamente (por exemplo /tools/mytool
), mas ls /tools/
serão negadas. Da mesma forma, os documentos podem ser armazenados nos /private-docs
quais podem ser lidos se e somente se os nomes dos arquivos forem conhecidos.
cd
isso.stdio.h
aqui. Eu sugiro removê-lo.ls
conclusão de guias funcionando torna o trabalho de manutenção irritante e fornece pouco ou nenhum benefício real à segurança. A maioria dos arquivos nos quais um invasor pode estar interessado está em locais padrão conhecidos, ou seus locais podem ser descobertos indiretamente a partir de dados em outros arquivos (caso contrário, como os programas que legitimamente usam esses arquivos sabem onde encontrá-los?).No Gentoo, programas executáveis que são setuid (configurados para serem executados com as permissões de seus proprietários em vez de seus invocadores) têm acesso negado de leitura (modo 4711). Isso é para adicionar uma camada de proteção contra a exploração de bugs para ajudar na escalação de privilégios.
Se um invasor sem privilégios puder ler um arquivo setuid e souber de um bug que permita um ataque ao estilo libc , ele poderá usar o conteúdo do arquivo para prever onde certas funções ou bibliotecas úteis provavelmente estarão colocado na memória quando o programa é chamado.
Os sistemas modernos geralmente incluem proteções adicionais que são mais eficazes, como o ASLR , mas as restrições presentes nas plataformas de 32 bits podem deixá-los mais facilmente exploráveis.
fonte
Parece que o valor de "somente execução" não tem muita utilidade para um arquivo, mas pode ser usado para impedir que alguém leia o conteúdo de um diretório.
fonte
Você precisa ter permissões de leitura e execução para executar um script. A leitura do conteúdo de um script é o que permite sua execução; portanto, você deve poder
read and execute
. Caso contrário, você não poderá executar um script sem ele.Segurança. Alguns podem querer proteger seus arquivos e impedir que outros os executem ou os usem.
fonte
chmod 000
Considerará permissões para ninguém, excetoroot
. Às vezes, você não precisa ser tão extenso apenas para proteção - depende das intenções do usuário. Para, digamos "re-chmod", o arquivo de volta às permissões legíveis e graváveis pelas quais você teria que fazer issoroot
. Se você não conseguir acessarroot
, será difícil./tools
que deseja que as pessoas possam usar, mas apenas se elas souberem.chmod 711 /tools
. Coisas, então executáveis em/tools
pode ser executado de forma explícita, masls /tools/
será negado.