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

8

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

  • Quem é "outros", se dermos todos os serviços em nosso servidor um usuário, "outros" não existem certo? Por exemplo, se colocarmos o Apache em um usuário e definirmos /var/www chowned como apache e inserirmos chmod 700 , isso deve funcionar, certo?

  • Qual é a diferença entre "executar" e "ler"?

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

por randomKek 13.03.2012 / 12:12

5 respostas

13

Who is "others", if we give all services on our server a user, "others" don't exist right? For example, if we put Apache to a user, and we set /var/www chowned to apache, and we enter chmod 700 it should work, right?

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

  • O primeiro dígito é para o proprietário real de um arquivo (verifique quem está possuindo um arquivo com ls -l e modifique-o com 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, ou seja, não o proprietário do arquivo e todos que não fazem parte do grupo.

Portanto, se você tiver chmod de um arquivo para 700 e pertencer a apache , até mesmo o usuário "normal" não poderá ler, gravar ou executar. Isso é muito restritivo e necessário apenas em raras ocasiões - por exemplo, quando você deseja proteger sua chave privada SSH, ele obtém 600 permissões. Para o Apache, isso pode até resultar em outros problemas, além do fato de que com sua conta de usuário normal, você não seria capaz de editar nenhum arquivo em /var/www .

Assim, em geral, você não precisa remover as permissões de leitura ( x00 ) para outras pessoas.

Você pode deixar apache possuir o diretório /var/www , mas com 644 (somente leitura para outros), talvez. Outra abordagem que costumo usar é adicionar seu próprio usuário e o usuário do Apache a um novo grupo www-users e, em seguida, chmodding arquivos em /var/www to 775 . Dessa forma, você e o Apache podem gravar nos arquivos. Veja aqui para mais informações: Permissões de grupo para o apache

What is the difference between "execute" and "read"?

Os 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 inserir ./test . Você receberá um erro " -bash: ./test: Permission denied ". 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, funcionará.

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

Agora, isso era apenas um script de teste, mas normalmente, todos os arquivos binários (como programas compilados) também precisam do conjunto de permissões de execução, então você pode realmente executar e fazer algo com eles, e não somente leia.

Estes são, por exemplo, os programas do sistema encontrados principalmente em /bin . Execute ls -l /bin para inspecionar suas permissões. Como você pode ver, eles são de propriedade de root e você não pode alterá-los, mas sempre pode executá-los.

Portanto, esse também é um recurso de segurança, já que 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 "leitura-gravação-execução" 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.

What are the default file permissions for the whole system after a clean install (e.g. in Ubuntu)?

Eles variam de acordo com o diretório e o proprietário. Alguns arquivos e diretórios são reservados pelo sistema e pertencem a root . Na maioria dos casos, você poderá lê-los com sua conta de usuário normal, no entanto.

Outros diretórios, como sua pasta pessoal, obviamente pertencem ao seu usuário. Pode 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 quer 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 em /etc ).

O Padrão de Hierarquia do Sistema de Arquivos especifica o uso pretendido para diretórios encontrados em sistemas Linux. Você pode quase "adivinhar" quais permissões devem ser baseadas no que você deseja fazer com um diretório.

    
por 13.03.2012 / 12:34
5

Só quero adicionar essa permissão de execução com diferentes significados efetivos para os diretórios:

Para arquivos :

  • Ler: se o conteúdo do arquivo puder ser lido
  • Escrita: Se 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
  • Write: Se usuário ou processo puder alterar o conteúdo do diretório de alguma forma: criar novo ou excluir arquivos existentes no diretório ou renomear arquivos.
  • Executar: se usuário ou processo puder acessar o diretório, isto é, ir para ele (torná-lo para ser o diretório de trabalho atual)

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

(Pegue esta informação aqui .)

    
por 13.03.2012 / 15:16
0

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

Cada entrada do sistema de arquivos tem um usuário e um grupo associados. As permissões do usuário são manipuladas pelos sinalizadores "user". As permissões de usuários de usuários que fazem parte do mesmo grupo são manipuladas pelos sinalizadores de "grupo". Todos os outros usuários são manipulados pelos sinalizadores "outros".

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

Com 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.

    
por 13.03.2012 / 12:33
0

Para dar uma resposta decente para a pergunta 2, pelo menos, aqui está uma tabela de resumo que mostra 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 arquivo de leitura do USUÁRIO na memória para executá-lo, é o KERNEL fazendo isso em nome do USUÁRIO.

    
por 13.03.2012 / 12:34
0

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

root daemon bin sys jogos de sincronização homem lp mail notícias uucp proxy www-data backup lista irc gnats libuuid syslog mensagembus usbmux haldaemon ninguém

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

avahi pulso do mysql rtkit saned timidity didiwiki

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

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

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

    
por 13.03.2012 / 14:53