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/www
definirmos o que é chown apache
, e entrarmos, chmod 700
ele 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 -l
e 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ê chmod
possui 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 600
permissõ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 apache
possuir o /var/www
diretório, mas 644
talvez 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-users
grupo e, em seguida, chmodding arquivos /var/www
para 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 /bin
para inspecionar suas permissões. Como você pode ver, eles pertencem a root
você 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.