Se um arquivo tiver permissões, -rwx-wx-wx
ele poderá ser lido por outros usuários e por grupos, ou apenas executado e gravado? Existe alguma maneira de ler um arquivo executável executando-o?
linux
permissions
chmod
Tom
fonte
fonte
Respostas:
Um arquivo com
-rwx-wx-wx
permissões possui permissões de leitura / gravação / execução para o proprietário e permissões de gravação / execução (mas não leitura) para todos os outros.Se for um script (geralmente um arquivo de texto com um
#!
na primeira linha), não poderá ser executado por outras pessoas, porque a execução de um script realmente executa o intérprete, que deve ser capaz de ler o script. (O intérprete deve ser um binário, não outro script.) (Na verdade, isso não é verdade para todos os sistemas; o Ubuntu, com um kernel do Linux 3.2.0, permite que o próprio intérprete seja um script interpretado. Parece haver um limite de cerca de quatro níveis. Não é provável que seja relevante para esta pergunta.)Se é um executável binário, pode ser executado diretamente, mas seu conteúdo não pode ser lido. Isso significa, por exemplo, que alguém que não seja o proprietário pode executá-lo como um comando, mas não pode pegar uma cópia do executável.
Obviamente, a execução requer leitura, mas é lida pelo kernel, não pelo usuário. Você pode obter algumas informações sobre o conteúdo do executável examinando a memória do processo enquanto ele está sendo executado, mas duvido que você possa reconstruir o arquivo executável binário. E se o executável estiver configurado, você não poderá examinar a memória do processo (a menos que tenha acesso à conta na qual está executando).
Aliás,
-rwx-wx-wx
é um conjunto muito estranho de permissões; ele protege o arquivo de ser lido por qualquer pessoa que não seja o proprietário, mas permite que qualquer pessoa o modifique. Não consigo pensar em um caso em que isso faria sentido.fonte
chmod 111 hello ; gdb ./hello
diz./hello: Permission denied.
;r
dizNo executable file specified.
Com essas permissões, somente o proprietário do arquivo pode executá-lo.
Outros usuários podem gravar nele, mas não executá-lo (como a execução nesse caso implica em poder lê-lo), mas podem gravar nele como uma espécie de caixa preta:
fonte
A resposta simples é não : somente o
exec
syscall pode ler um arquivo sem exigir acesso de leitura (embora exija o acesso de execução ). Umopen
comO_RDONLY
ouO_RDWR
deve falhar.fonte
Obviamente, qualquer arquivo pode ser lido pelo usuário root.
Além disso, o carregador do sistema, gerenciamento de memória, trocador, etc .... lerá um arquivo com permissão 'x', caso contrário, não poderá ser executado.
Os possíveis furos na divulgação de conteúdo executável podem ser o arquivo / proc para o processo, os arquivos principais ou o uso de um depurador.
fonte
chmod
|chown
foi executada