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 toapache
, and we enterchmod 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 comchown
) -
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.