Introdução
Tarefas reais de administração raramente envolvem apenas um comando. Um serviço pode falhar porque a unidade está inativa, o usuário do serviço não consegue ler o conteúdo, os rótulos do SELinux estão incompletos ou o firewall não expõe a porta necessária.
Neste laboratório, você irá reparar um host de serviço web preparado. O serviço deve ser executado como labex, servir conteúdo a partir de /srv/rhcsa-review/site, escutar em 127.0.0.1:18082, estar habilitado na inicialização, possuir os rótulos SELinux corretos e expor 18082/tcp através do firewalld.
Reproduzir e Diagnosticar a Falha do Serviço
Nesta etapa, você irá reproduzir a falha do serviço e inspecionar as evidências antes de realizar alterações. Comece com systemctl e journalctl, depois compare a mensagem de log com as permissões de arquivo.
A configuração inicial preserva permanentemente o acesso SSH e o terminal do navegador LabEx em 3002/tcp na zona public. Mantenha essas regras de gerenciamento ao alterar a política de firewall da aplicação.
Entre no diretório do projeto.
cd /home/labex/project
Verifique o serviço preparado. Ele existe, mas ainda não está em execução.
systemctl status rhcsa-review-web.service --no-pager || true
Tente iniciá-lo. Isso deve falhar porque o serviço é executado como labex, mas o diretório de conteúdo não está acessível para esse usuário.
sudo systemctl start rhcsa-review-web.service || echo "service start failed as expected"
sleep 1
Verifique se o systemd marcou a unidade como falha.
systemctl is-failed rhcsa-review-web.service || true
Leia as entradas de log mais recentes do serviço. O journal deve indicar que a conta de serviço não consegue usar o diretório de trabalho ou o caminho de conteúdo configurado.
sudo journalctl -u rhcsa-review-web.service -n 20 --no-pager
Inspecione as permissões do caminho de conteúdo.
sudo stat -c '%a %U:%G %n' /srv/rhcsa-review /srv/rhcsa-review/site /srv/rhcsa-review/site/index.html
Reparar Permissões de Conteúdo
Nesta etapa, você tornará o conteúdo legível pela conta de serviço sem torná-lo legível para todos. O serviço é executado com o usuário labex e grupo labex.
Defina o grupo da árvore de diretórios como labex. O serviço é executado com o grupo labex, portanto, a propriedade de grupo permite conceder acesso sem alterar os arquivos para que sejam de propriedade do usuário do serviço.
sudo chown root:labex /srv/rhcsa-review /srv/rhcsa-review/site /srv/rhcsa-review/site/index.html
Permita que o grupo percorra os diretórios e leia o arquivo de conteúdo. Os diretórios precisam do bit de execução para travessia, e o arquivo HTML precisa do bit de leitura para que o serviço possa servi-lo.
sudo chmod 750 /srv/rhcsa-review /srv/rhcsa-review/site
sudo chmod 640 /srv/rhcsa-review/site/index.html
Inspecione as permissões reparadas.
sudo stat -c '%a %U:%G %n' /srv/rhcsa-review /srv/rhcsa-review/site /srv/rhcsa-review/site/index.html
Limpe o estado de falha e inicie o serviço novamente. O reset-failed remove o marcador de falha antigo, tornando o próximo estado do systemctl mais fácil de ler após o reparo das permissões.
sudo systemctl reset-failed rhcsa-review-web.service
sudo systemctl start rhcsa-review-web.service
sleep 1
Confirme se o serviço está ativo e servindo conteúdo.
systemctl is-active rhcsa-review-web.service
curl -s http://127.0.0.1:18082/
Tornar o Serviço Persistente
Nesta etapa, você habilitará o serviço reparado para que ele inicie na inicialização. Um serviço que funciona apenas até a próxima reinicialização não está totalmente reparado.
Habilite a unidade. Iniciar corrige a inicialização atual; habilitar registra que o serviço reparado deve iniciar automaticamente no alvo de inicialização normal.
sudo systemctl enable rhcsa-review-web.service
Verifique o estado de habilitação.
systemctl is-enabled rhcsa-review-web.service
Reinicie o serviço para confirmar que a unidade ainda pode iniciar corretamente após o reparo das permissões. Uma reinicialização limpa é uma evidência mais forte do que apenas verificar o processo que estava em execução.
sudo systemctl restart rhcsa-review-web.service
sleep 1
Teste o serviço novamente.
systemctl is-active rhcsa-review-web.service
curl -s http://127.0.0.1:18082/
Adicionar Contexto SELinux e Rótulos de Porta
Nesta etapa, você fará com que os metadados da política SELinux correspondam ao design do serviço. Mesmo quando um serviço de demonstração simples consegue ler o conteúdo, os reparos de serviço web no estilo RHCSA devem incluir contexto de arquivo persistente e rótulos de porta.
Adicione uma regra de contexto de conteúdo HTTP persistente para o conteúdo do serviço. A regra fcontext é um metadado de política persistente; ela informa ao SELinux qual rótulo este caminho deve receber após a reetiquetagem.
sudo semanage fcontext -a -t httpd_sys_content_t '/srv/rhcsa-review/site(/.*)?'
Aplique a regra aos arquivos existentes. O restorecon lê a regra persistente e aplica o rótulo correto aos arquivos que já existem.
sudo restorecon -Rv /srv/rhcsa-review/site
Inspecione a regra personalizada e o rótulo resultante.
sudo semanage fcontext -l | grep '/srv/rhcsa-review/site'
ls -Zd /srv/rhcsa-review/site /srv/rhcsa-review/site/index.html
Adicione a porta do serviço ao tipo de porta HTTP. Os rótulos de porta permitem que a política SELinux entenda que a porta TCP 18082 destina-se ao tráfego de serviço do tipo HTTP.
sudo semanage port -a -t http_port_t -p tcp 18082
Inspecione o rótulo da porta HTTP.
sudo semanage port -l | grep '^http_port_t'
Abrir o Firewall e Validar de Ponta a Ponta
Nesta etapa, você exporá a porta do serviço através do firewalld e executará uma auditoria final. O serviço deve estar ativo, habilitado, rotulado e permitido pelo firewall do host.
Inicie e habilite o firewalld.
sudo systemctl enable --now firewalld
Adicione a porta do serviço permanentemente e recarregue o firewall. A regra permanente sobrevive às recargas do firewalld, e o recarregamento a aplica ao firewall ativo.
sudo firewall-cmd --permanent --add-port=18082/tcp
sudo firewall-cmd --reload
Inspecione a lista de portas ativas.
sudo firewall-cmd --list-ports
Execute as verificações finais do serviço. Esses comandos confirmam que o serviço está habilitado para inicialização, ativo agora e retornando a resposta web local esperada.
systemctl is-enabled rhcsa-review-web.service
systemctl is-active rhcsa-review-web.service
curl -s http://127.0.0.1:18082/
Audite as permissões de conteúdo uma última vez. Esta verificação final de permissão protege contra um reparo parcial comum: o serviço funciona agora, mas o modelo de acesso é mais amplo ou mais restrito do que o pretendido.
sudo stat -c '%a %U:%G %n' /srv/rhcsa-review /srv/rhcsa-review/site /srv/rhcsa-review/site/index.html
Resumo
Você reparou um host de serviço com múltiplos problemas diagnosticando uma unidade systemd com falha, corrigindo permissões do usuário do serviço, habilitando o serviço, adicionando rótulos de arquivo e porta do SELinux, abrindo o firewalld e validando a resposta web final.



