Qual é o propósito dos direitos de acesso a arquivos executáveis no Linux?

1

Eu nunca entendi isso, porque se você tiver acesso a ler um arquivo, isso não significa que você seria capaz de copiá-lo em outro lugar, permitindo que você o execute assim mesmo?

O que estou perdendo?

    
por Fragsworth 17.10.2010 / 04:33

3 respostas

6

O sinalizador Executável está lá para indicar ao kernel que os dados devem ser lidos e executados. Isso é implementado com uma chamada diferente para executar algo e ler algo. Para programas compilados, é bem possível ter acesso somente de execução a ele e não ter acesso de leitura; você não pode nem mesmo 'copiá-los' em outro lugar. Para itens interpretados como shell-scripts, a leitura é necessária para a execução.

Eu conheço uma distro Linux que usa o sinalizador de execução para controlar quais scripts são disparados na inicialização.

Em suma, o sinalizador Execute é usado para indicar a capacidade de código compilado para ser executado. O código Interpreted é executado através do processador pai e só pode precisar de 'read'.

    
por 17.10.2010 / 05:17
0

Algumas possíveis razões:

  • Protege o arquivo de ser executado acidentalmente.
  • É óbvio que os arquivos são executáveis (no Windows, você precisa verificar no Registro a lista de extensões de arquivos executáveis para saber isso)
  • Ele protege você contra algumas falhas de segurança (os invasores não precisam apenas de uma maneira de colocar um arquivo em seu sistema e de alguma forma executá-lo, eles também precisam alterar suas permissões).
  • Se os únicos discos que o usuário pode gravar para ter uma opção umask / mount que "remova" o bit de execução, eles não poderão copiá-lo em outro lugar e torná-lo executável (pelo menos, não nessa máquina e você pode tem que tomar outras precauções também)

Existem provavelmente outras razões ...

    
por 17.10.2010 / 05:02
0

doesn't that mean you would be able to copy it somewhere else, thus allowing you to execute it anyway?

Não, isso não está correto.

Existem cenários em que você não pode executar um arquivo, mesmo que tenha o bit executável definido. Aqui estão pelo menos dois deles:

  • um shell restrito que proíbe explicitamente a execução
  • um sistema de arquivos montado com a opção noexec
por 17.10.2010 / 12:07