Hoje vou tentar configurar o diretório de usuários no servidor Apache. Encontrou um problema difícil O processo de configuração, os problemas e suas soluções são resumidos a seguir:
1. Configuração convencional:
Adicionar usuário da web:
adicionar usuário web
senha da web
Crie o diretório public_html no diretório do usuário da web e defina as permissões para 755:
mkdir public_html
chmod 755 public_html -R
Modifique /etc/http/httpd.conf:
#
# UserDir: O nome do diretório anexado à página inicial do usuário
# diretório se uma solicitação ~user for recebida.
#
# O caminho para o diretório 'public_html' da conta do usuário final deve ser
# acessível ao ID do usuário do servidor web. Isso geralmente significa que ~userid.
# deve ter permissões de 711, ~userid/public_html deve ter permissões
# de 755, e os documentos nele contidos devem ser legíveis por todos.
# Caso contrário, o cliente receberá apenas a mensagem "403 Forbidden".
#
# Veja também: http://httpd.apache.org/docs/misc/FAQ.html#forbidden
#
<IfModule mod_userdir.c>
#
# UserDir está desabilitado por padrão, pois pode confirmar a presença
# de um nome de usuário no sistema (dependendo do diretório inicial
# permissões).
#
#UserDir desativar
#
# Para permitir solicitações para /~user/ para servir o public_html do usuário
#, remova a linha "UserDir desabilitar" acima e remova o comentário
# a seguinte linha:
#
UserDir public_html
</IfModule>
2. Ocorrem testes e problemas:
http://127.0.0.1/~web
ster
Proibido
Você não tem permissão para acessar /~web neste servidor.
Além disso, um erro 403 Forbidden foi encontrado ao tentar usar um ErrorDocument para lidar com a solicitação.
-------------------------------------------------- ----------------------------------
Servidor Apache/2.0.54 (Fedora) em 127.0.0.1 Porta 80
Geralmente, quando esse problema ocorre, o problema que vem à mente é a permissão de acesso ao diretório. Depois de muito tempo de verificação e ajuste, o problema não foi resolvido. Durante esse período, pensei se era um problema com o Selinux, entrei e olhei em volta, mas não encontrei nada para mudar. (Fatos posteriores provam que às vezes a intuição é muito precisa. A diferença entre saber se você consegue encontrar a resposta é muitas vezes se você se aprofunda na intuição).
3. Solução para o problema Depois de muito tempo procurando pelo Apache 403 no Google, finalmente vi em um blog que o autor encontrou exatamente o mesmo problema que eu: a configuração do Apache e do diretório estavam boas, mas a página poderia. não será exibido. A solução é modificar o controle de acesso do Selinux para public_html.
Use o seguinte comando para modificar os atributos de segurança da pasta
chcon -R -t httpd_user_content_t public_html/
4. Resumo dos conhecimentos relacionados:
Perguntas frequentes sobre o Fedora Core 5 SELinux
http://fedora.redhat.com/docs/selinux-faq-fc5/#faq-entry-public_html P: Como faço para que um diretório public_html de usuário funcione no SELinux?
R: Este processo pressupõe que você habilitou diretórios HTML públicos de usuário em seu arquivo de configuração do Apache, /etc/httpd/conf/httpd.conf. Este processo cobre apenas o fornecimento de conteúdo da Web estático. Para obter mais informações sobre Apache HTTP e SELinux, consulte. http://fedora.redhat.com/docs/selinux-apache-fc3/.
Se você ainda não possui um diretório ~/public_html, crie-o e preencha-o com os arquivos e pastas a serem servidos.
cd ~mkdir public_htmlcp /caminho/para/content ~/public_html
Neste ponto, o httpd está configurado para fornecer o conteúdo, mas você ainda recebe um erro 403 proibido. Isso ocorre porque o httpd não tem permissão para ler o tipo de segurança do diretório e dos arquivos conforme eles são criados no diretório inicial do usuário. contexto de segurança da pasta e seu conteúdo recursivamente usando a opção -R:
ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:user_home_t public_htmlchcon -R -t httpd_user_content_t public_html/ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:httpd_user_content_t public_html/ls -Z public_html/- rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t bar.html-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t baz.html-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t foo.html
Você poderá notar posteriormente que o campo do usuário, definido aqui como user_u, foi alterado para system_u. Isso não afeta o funcionamento da política de destino. O campo que importa é o campo de tipo.
Suas páginas da web estáticas agora devem ser servidas corretamente. Se você continuar tendo erros, certifique-se de que o booleano que habilita os diretórios iniciais do usuário esteja habilitado. Você pode configurá-lo usando system-config-securitylevel. Área de política. Selecione Permitir que HTTPD leia os diretórios iniciais. As alterações entrarão em vigor imediatamente.
Análise dos comandos utilizados:
ls -Z -d público_html/
#Exibe o contexto de segurança do arquivo/diretório -Z, --context
Exibir contexto de segurança para que caiba na maioria dos monitores Exibe apenas modo, usuário, grupo, contexto de segurança e nome do arquivo.-d, --directory.
lista entradas de diretório em vez de conteúdo e não desreferencia links simbólicos
chcon -R -t httpd_user_content_t public_html/
#Modifique o contexto de segurança de arquivos/diretórios -R, --recursive
alterar arquivos e diretórios recursivamente-t, --type
definir o tipo TYPE no contexto de segurança de destino