Permissões de alguma forma bloqueiam o acesso a arquivos no CentOS 6

2

Um amigo meu hospeda alguns dos sites que ele criou para seus clientes. De alguma forma, ele estragou as permissões dando aos sites de todos os clientes um erro 403 no carregamento.

Quando eu ssh para o servidor dele e faço login com a minha conta (também tenho 2 sites em execução no servidor dele), a primeira mensagem que recebo é:

Last login: Tue Jan 24 11:54:37 2012 from 82.168.36.207 Could not chdir to home directory /home/michiel: Permission denied -bash: /home/michiel/.bash_profile: Permission denied

Eu então sudo e chdir para / home /. Eu (recursivamente) chowned a pasta michiel para michiel: michiel e chmodded-lo (recursivamente) para 755.

Eu ainda recebo o mesmo erro no login e o site ainda me dá um erro 403.

Eu tentei descobrir se o SELinux está causando problemas, mas "find selinux" mostra que não existe tal arquivo ou pasta.

Alguma ideia de como resolver este problema?

    
por Chielt 24.01.2012 / 12:50

2 respostas

2

Nos comentários, parece que as permissões em / home não têm o bit de execução definido:

drw-r--r-- 26 root root 4.0K Jan 24 03:17 home

Você precisa do conjunto de bits de execução para entrar em um diretório. Então, "chmod a + x / home".

O truque é que seu amigo pode ter explodido o bit de execução recursivamente em todos os subdiretórios. Se não houver muitos usuários, posso ir a cada diretório inicial e verificar as permissões por visão. Se houver muitos usuários, existem maneiras de executar o chmod com mais eficiência, talvez algo como:

chmod -R a+x /home/*/public_html

Tenha cuidado (ao contrário do seu amigo!)

    
por 24.01.2012 / 14:01
1

O primeiro comando concede a outros usuários, além do proprietário ou seu grupo, permissão para entrar no diretório (hattip @cjc). O segundo dá permissões de leitura aos arquivos:

find "/path" -type d | xargs chmod o+x
find "/path" -type f | xargs chmod o+r

Este é o conjunto mínimo de permissões para arquivos a serem publicados. Se alguém estava confiando no DirectoryIndex, os diretórios precisarão de o+rx em vez de apenas o+x .

Meu conjunto usual de permissões é:

$ ls -ld /var/www/me.example.com
drwx-----x 12 me-example-com users 4096 Oct  4 16:44 /var/www/me.example.com

$ id me-example-com
uid=1000(me-example-com) gid=100(users)

Esse truque que eu aprendi na web significa que outros membros do grupo users não poderão olhar nos arquivos uns dos outros, mas por padrão o resto do sistema deixará www-data (o usuário Apache é executado sob no Debian) para entrar no diretório.

    
por 24.01.2012 / 14:20