Quem são "outros" nas permissões do Linux e o que "executar" significa?


13

Não consegui encontrar as respostas para essas três perguntas:

  • Quem são os "outros", se dermos um usuário a todos os serviços em nosso servidor, "outros" não existem, certo? Por exemplo, se colocarmos o Apache em um usuário, e /var/wwwdefinirmos o que é chown apache, e entrarmos, chmod 700ele deve funcionar, certo?

  • Qual é a diferença entre "execute" e "read"?

  • Quais são as permissões de arquivo padrão para todo o sistema após uma instalação limpa (por exemplo, no Ubuntu)?

Respostas:


16

Quem são os "outros", se dermos um usuário a todos os serviços em nosso servidor, "outros" não existem, certo? Por exemplo, se colocarmos o Apache em um usuário, e /var/wwwdefinirmos o que é chown apache, e entrarmos, chmod 700ele deve funcionar, certo?

Veja como as permissões funcionam, explicadas de uma maneira muito breve:

  • O primeiro dígito é para o proprietário real de um arquivo (verifique quem é o proprietário ls -le modifique-o chown)

  • O segundo dígito é para o grupo do arquivo (embora o proprietário de um arquivo não deva necessariamente estar no mesmo grupo que possui o arquivo)

  • O terceiro dígito é qualquer outra pessoa, significando não o proprietário do arquivo e todos que não estão no grupo.

Portanto, se você chmodpossui um arquivo com 700 e ele pertence apache, nem mesmo o usuário "normal" poderá lê-lo, gravá-lo ou executá-lo. Isso é muito restritivo e é necessário apenas em raras ocasiões - por exemplo, quando você deseja proteger sua chave privada SSH, ela obtém 600permissões. Para o Apache, isso pode resultar em outros problemas, além do fato de que com sua conta de usuário normal, você não poderá mais editar nenhum arquivo /var/www.

Portanto, de um modo geral, você não precisa remover as permissões de leitura ( x00) de outras pessoas.

Você pode deixar apachepossuir o /var/wwwdiretório, mas 644talvez com (somente leitura para outros). Outra abordagem muitas vezes eu uso é adicionando seu próprio usuário e o usuário Apache para um novo www-usersgrupo e, em seguida, chmodding arquivos /var/wwwpara 775. Dessa forma, você e o Apache podem gravar nos arquivos. Veja aqui para mais informações: Permissões de grupo para apache


Qual é a diferença entre "execute" e "read"?

Arquivos executáveis ​​podem ser executados diretamente por um usuário - diretamente do shell. Para demonstrar isso, vamos escrever um arquivo curto e chamá-lo de "teste". Adicione o seguinte conteúdo:

echo "I am executable"

Salve o arquivo. Agora, no seu shell, tente entrar ./test. Você receberá um erro " -bash: ./test: permissão negada ". Isso ocorre porque, por padrão, os arquivos recém-criados não possuem permissões de execução. Se você adicionar a permissão de execução, ela funcionará.

$ chmod +x test
$ ./test
I am executable

Agora, este era apenas um script de teste, mas geralmente todos os arquivos binários (como programas compilados) também precisam do conjunto de permissões de execução, para que você possa executar e fazer algo com eles, e não apenas ler.

Estes são, por exemplo, os programas de sistema mais encontrados /bin. Execute ls -l /binpara inspecionar suas permissões. Como você pode ver, eles pertencem a rootvocê e você não pode alterá-los, mas sempre pode executá-los.

Portanto, esse também é um recurso de segurança, pois você pode restringir a execução de determinados scripts e binários para alguns usuários.

Para saber mais sobre as permissões do Unix, leia o artigo da Wikipedia . As permissões básicas que você conhece como "ler-gravar-executar" existem há muito tempo, mas são apenas parte do que você chama de Listas de controle de acesso - que oferecem muito mais funcionalidade do que isso.


Quais são as permissões de arquivo padrão para todo o sistema após uma instalação limpa (por exemplo, no Ubuntu)?

Eles variam por diretório e proprietário. Alguns arquivos e diretórios são reservados e pertencentes ao sistema root. Na maioria dos casos, você poderá lê-los com sua conta de usuário normal.

Outros diretórios como sua pasta pessoal obviamente pertencem ao seu usuário. Poderia fazer sentido negar permissões de leitura a outros usuários em uma máquina se ela for compartilhada entre várias pessoas - afinal, você não deseja que suas coisas particulares sejam expostas.

Finalmente, alguns arquivos são executáveis ​​por padrão (por exemplo, em /bin), mas outros não (por exemplo, arquivos de configuração /etc).

O padrão de hierarquia do sistema de arquivos especifica o uso pretendido para diretórios encontrados nos sistemas Linux. Você quase pode "adivinhar" quais permissões devem ser baseadas no que você deseja fazer com um diretório.


Obrigado, você realmente me ajudou muito! Não posso agradecer o suficiente, mais uma pergunta, onde está a linha entre "arquivo" e "executável", por exemplo, os arquivos PHP são executados ou lidos pelo Apache? Mais uma vez muito obrigado!
randomKek

.phparquivos normalmente não são executáveis. Eles são, simplesmente falando, apenas lidos pelo Apache quando você aponta o navegador, por exemplo. http://example.com/file.phpAntes que o Apache possa mostrar a saída, eles precisam ser interpretados pela sua instalação do PHP, mas o Apache cuida disso. Teoricamente, você pode tornar um arquivo PHP executável e executá-lo como um script - da mesma forma que fizemos com nosso testarquivo, mas isso raramente é usado.
Slhck 13/03/12

5

Só quero adicionar que a permissão de execução tenha diferentes significados efetivos para diretórios:

Para arquivos :

  • Ler: se o conteúdo do arquivo puder ser lido
  • Gravação: se o usuário ou processo puder gravar no arquivo (alterar seu conteúdo)
  • Executar: se o arquivo puder ser executado

Para pastas :

  • Ler: Se a listagem de diretórios puder ser obtida
  • Gravação: se o usuário ou processo puder alterar o conteúdo do diretório de alguma forma: crie novos ou exclua arquivos existentes no diretório ou renomeie os arquivos.
  • Executar: se o usuário ou processo puder acessar o diretório, ou seja, vá para ele (torne-o o diretório de trabalho atual)

Não, não há permissão de exclusão separada para diretórios.

(Obtenha essas informações aqui .)


0

Não sou especialista em Linux, mas tento responder mesmo assim.

Cada entrada do sistema de arquivos possui um usuário e um grupo associados. As permissões do usuário são tratadas pelos sinalizadores "usuário". Permissões de usuário de usuários que fazem parte do mesmo grupo são tratadas pelos sinalizadores "group". Todos os outros usuários são tratados pelos sinalizadores "outros".

"ler" significa o que diz. "executar" significa que você pode iniciar o arquivo (por exemplo, um comando) ou listar o diretório.

Em relação à permissão padrão, não tenho certeza. Eu acho que pode ser configurado de alguma forma e, portanto, pode ser diferente para cada usuário.


0

Para lhe dar uma resposta decente à pergunta 2, pelo menos, aqui está uma tabela de resumo mostrando o que você pode / não pode fazer:

+--------------------------------------------------+
| Execute Yes (./file.sh) | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute Yes (./file.sh) | Read No (ERROR)        |
|--------------------------------------------------|
| Execute No (ERROR)      | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute No (ERROR)      | Read No (ERROR)        |
+--------------------------------------------------+

O que é importante lembrar é que não é o USUÁRIO que lê o arquivo na memória para executá-lo, é o KERNEL fazendo isso em nome do USUÁRIO.


0

Pode ser complicado se você deseja excluir todos os outros. Veja esta lista do meu arquivo / etc / passwd (permissões e outros itens removidos para maior clareza):

root daemon bin sys sync games man lp mail news uucp proxy www-data lista de backup irc gnats libuuid syslog messagebus usbmux haldaemon ninguém

a {sou eu, e abaixo, aqui estão as coisas que eu instalei, acima de tudo, o sistema}

avahi mysql pulse rtkit saned timidez didiwiki

Por exemplo, remova as permissões de lp ou uucp e você interromperá a impressão. remova a permissão do bin, sys ou daemon e provavelmente muitas coisas serão quebradas. O irc, jogos, correio, notícias e backup provavelmente podem ser removidos com segurança (a menos que você os esteja usando através do sistema, não por um navegador). o resto deixo para suas habilidades em mecanismos de pesquisa.

Este é o ubuntu / bodhi linux, e outros sistemas podem ter menos extras. todos esses outros, no entanto, são para evitar a necessidade de executar tudo como root. Eu imagino que é possível criar um sistema em que cada arquivo possa ser lido / gravado / executado por apenas um dos usuários do sistema (barra raiz), mas não tenho certeza se foi tentado.

Executar é permissão para executar código. Ler é permissão para procurar (e copiar?) Apenas.

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.