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?

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


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.


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.


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.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.