O que a permissão "executar" faz?

31

Estou chocado por ainda não entender a permissão "Executar" no Linux.

Existem três permissões - ler, escrever e executar. Entendo que ler e escrever literalmente, mas o que executa exatamente?

Digamos que eu tenha example.phppermissão de execução. Com o que posso fazer example.php?

user45326
fonte

Respostas:

32

Basicamente, isso significa que você pode dizer ao sistema operacional para executar o código no arquivo. Por exemplo, se o arquivo fosse um executável binário, o acesso de gravação permitiria modificá-lo, o acesso de leitura permitiria visualizá-lo, mas sem permissões de execução, você não conseguiria executar o programa. No caso de um script, é um pouco mais complicado, porque você não precisa necessariamente 'executar' o programa, basta ler o conteúdo em um intérprete, que possui o privilégio de execução, mas você não precisa executar permissões no próprio script.

Alguns scripts no Linux são eles próprios executáveis; você verá frequentemente uma linha no topo, como

#! / bin / bash ou

#! / bin / python

Essa linha informa ao kernel que o arquivo pode ser executado chamando o programa relevante (e não é apenas texto). Então você pode simplesmente executar seu script como

./roteiro

em vez de ter que fazer

python ./script

bdk
fonte
O que isso significa para tipos de arquivos não baseados em texto, por exemplo. .pngou .avi?
iono 17/07
1
Basicamente o mesmo, a extensão do arquivo não importa. Se você possui #!/bin/bashno início do seu .aviarquivo, ele será executado como bash. Se for um formato avi real, você provavelmente não poderá executá-lo porque interpretá-lo como comandos não fará sentido e falhará.
Mifeet
O é #!realmente interpretado pelo kernel?
Masterdilo # 21/17
17

"execute" permite ao usuário executar executáveis. Para diretórios, é permitido entrar no diretório usando o comando cd.

Phil Rykoff
fonte
1
Esse acesso à parte do diretório é enorme. Você nunca imaginaria isso apenas pelo nome do próprio modo.
PrimitiveNom
2

Para fins práticos, a permissão para ler implica na capacidade de execução.

No entanto, o oposto não é verdadeiro; existe algum valor na capacidade de dar permissão para executar código sem dar permissão para lê-lo.

Adam Lee
fonte
Isso realmente faz muito sentido.
Masterdilo # 21/17
Eu tive uma confusão com READ / EXECUTE e esperava essa resposta. obrigado
T.Todua
2

É para executar aplicativos da GUI ou da linha de comando. Para o uso "normal" do php (via servidor da web), isso não muda nada. Precisamente falando, depende da configuração, mas nos casos mais comuns você não precisa da permissão + x para permitir o carregamento da sua página php via navegador.

Para executar a partir da linha de comando, você precisa:

  • adicionar #!/usr/bin/phpno início do script
  • adicionar + x permissão
  • seu script deve estar no seu caminho de pesquisa executável (variável de ambiente $ PATH) ou você deve especificar o diretório em que está antes do nome do script. Pode ser um nome de caminho absoluto, como /etc/xdg/fooou /home/fred/bar, ou um diretório relativo, como dir1/prog1ou ./prog2.
Maciek Sawicki
fonte