Por que o Fedora 20 ainda nega o acesso aos diretórios home após habilitar o SELinux httpd_read_user_content e configurar os arquivos para httpd_user_content_t?

1

No meu Fedora 20, aprendi que para permitir acesso de gravação a arquivos por processos como o PHP via Apache, o proprietário do processo, que é no meu caso apache , deve ter permissões de gravação para os arquivos. Além disso, como o SELinux está ativado, os arquivos devem ter o contexto httpd_system_rw_content_t .

Também parece que uma política do SELinux impede que o httpd acesse qualquer arquivo em /home . Quase todos concordam que, para remediar isso, os arquivos que você deseja acessar devem ter o contexto de segurança httpd_user_content_t ou httpd_user_rw_content_t . Eu tenho a certeza de fazer isso, mas o Apache ainda diz que não tem permissão para acessar os diretórios. Quando esses arquivos não têm o contexto user_content, eu realmente recebo avisos do SELinux. Quando o contexto está definido, não recebo os avisos, mas o Apache ainda não consegue acessar os arquivos. Tudo sob /home/me/game tem as seguintes permissões de usuário e contexto de segurança:

$ sudo chcon -Rv --type=httpd_user_rw_content_t game
$ sudo setsebool -P httpd_read_user_content 1
$ sudo chown -R :apache game
$ ll -Zd game
drwxrwxr-x. me apache unconfined_u:object_r:httpd_user_rw_content_t:s0 game

Ainda assim, o Apache me diz:

Proibido

Você não tem permissão para acessar / jogo neste servidor.

Alguém sabe o que mais posso verificar?

    
por Spencer Williams 21.06.2014 / 19:40

1 resposta

0

Suspiro ... sempre verifique suas permissões, pessoal. Mesmo que as configurações do SELinux fossem boas, havia um diretório no caminho para o caminho que eu queria que apache atingisse e que não permitisse que esse usuário o lesse / executasse.

Antes de tudo, eu deveria ter olhado para /var/log/httpd/error_log , que claramente dizia:

(13)Permission denied: [client 127.0.0.1:38628] AH00035: access to /game/ denied (filesystem >path '/home/me/game') because search permissions are missing on a component of the path

Pesquisando o erro no Google, encontrei esta página que também explicita o problema. Como não havia problema em servir coisas de /var/www , verifiquei as permissões do diretório até o fim:

$ ll -d /
drwxr-xr-x. 18 root root 4096 Jun 22 18:52 /
$ ll -d /var
drwxr-xr-x. 21 root root 4096 Jun 22 12:51 /var
$ ll -d /var/www
drwxr-xr-x. 8 root root 4096 Jun 21 09:19 /var/www

Eu fiz o mesmo todo o caminho até meus diretórios:

$ ll -d /home
drwxr-xr-x. 4 root root 4096 Jun 13 21:31 /home
$ ll -d /home/me
drwx------. 35 me me 4096 Jun 22 19:05 /home/me

Sim ... um simples sudo chmod o=rx /home/me me levantou e foi embora. Eu não poderia ter feito isso sem verificar tudo o que vocês me pediram, e eu agradeço a você.

    
por 23.06.2014 / 03:26