Introdução
Este laboratório guiado final reúne várias habilidades de preparação para o RHCSA. Você ainda receberá orientações de comando, mas as etapas estão mais próximas de um fluxo de trabalho de validação de um administrador: inspecionar o sistema, configurar o estado necessário e comprovar o resultado final com ferramentas padrão.
Neste laboratório, você criará uma identidade de operador local, preparará o armazenamento persistente, implantará um pequeno serviço a partir desse armazenamento, adicionará políticas de SELinux e firewall e executará uma verificação final de prontidão.
Inspecionar o Sistema Preparado
Nesta etapa, você inspecionará os recursos preparados para o fluxo de trabalho final. Comece confirmando o dispositivo de bloco, o estado do serviço e o modo do SELinux.
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
Exiba o caminho da partição preparada. Os comandos posteriores reutilizam este caminho para que você não precise adivinhar qual dispositivo de bloco pertence ao laboratório.
cat /home/labex/project/rhcsa-final-part
Inspecione o dispositivo de bloco preparado. Ele ainda não possui o sistema de arquivos final, portanto, esta é sua linha de base antes da formatação.
lsblk "$(cat /home/labex/project/rhcsa-final-part)"
Verifique se o serviço final ainda não foi configurado. O || true mantém o laboratório em execução, mesmo que a unidade deva estar ausente neste momento.
systemctl status rhcsa-final-web.service --no-pager || true
Confirme se o SELinux está em modo enforcing antes de começar. O modo enforcing é importante porque os rótulos do SELinux que serão aplicados posteriormente não são apenas informativos; eles afetam a aplicação da política.
getenforce
Criar a Identidade do Operador e o Diretório Compartilhado
Nesta etapa, você criará um grupo local, um usuário local e um diretório compartilhado com setgid. Os comandos foram escritos para serem seguros caso você precise executá-los novamente.
Crie o grupo, caso ele não exista. O getent group verifica o serviço de nomes local primeiro, e a parte || cria o grupo apenas quando a busca falha.
getent group rhcsaops || sudo groupadd rhcsaops
Crie o usuário finaladmin, caso ele não exista.
id finaladmin >/dev/null 2>&1 || sudo useradd -m -s /bin/bash -G rhcsaops finaladmin
Certifique-se de que o usuário seja membro do grupo de operadores. As opções -aG adicionam o usuário ao grupo sem remover seus grupos suplementares existentes.
sudo usermod -aG rhcsaops finaladmin
id finaladmin
Crie um diretório compartilhado para as anotações do operador. O modo 2770 concede acesso total ao grupo e define o bit setgid, para que novos arquivos herdem o grupo rhcsaops.
sudo mkdir -p /srv/rhcsa-final/team
sudo chown root:rhcsaops /srv/rhcsa-final/team
sudo chmod 2770 /srv/rhcsa-final/team
Crie um arquivo de teste como finaladmin.
sudo -u finaladmin bash -c 'echo final validation access > /srv/rhcsa-final/team/finaladmin.txt'
Inspecione o diretório e o arquivo.
sudo stat -c '%a %U:%G %n' /srv/rhcsa-final/team /srv/rhcsa-final/team/finaladmin.txt
Preparar o Armazenamento Persistente
Nesta etapa, você criará um sistema de arquivos na partição preparada e o montará de forma persistente usando o UUID. Isso reflete o padrão de validação de armazenamento usado em tarefas no estilo RHCSA.
Armazene o caminho da partição preparada em uma variável de shell.
part="$(cat /home/labex/project/rhcsa-final-part)"
Crie um sistema de arquivos ext4 com um rótulo reconhecível. Esta operação é destrutiva para a partição de prática preparada, portanto, só deve ser feita após confirmar o caminho do dispositivo.
sudo mkfs.ext4 -F -L RHCSA_FINAL "$part"
Crie o ponto de montagem.
sudo mkdir -p /mnt/rhcsa-final
Capture o UUID do sistema de arquivos e substitua qualquer linha antiga no fstab para este ponto de montagem. UUIDs são identificadores estáveis para montagens persistentes, e remover linhas antigas evita entradas duplicadas no fstab.
uuid="$(sudo blkid -s UUID -o value "$part")"
sudo sed -i '/\/mnt\/rhcsa-final/d' /etc/fstab
Adicione a entrada de montagem persistente.
echo "UUID=$uuid /mnt/rhcsa-final ext4 defaults 0 0" | sudo tee -a /etc/fstab
Monte a partir do fstab e inspecione o resultado. O mount -a prova que a linha do fstab funciona, enquanto findmnt e df confirmam o destino da montagem e a capacidade disponível.
sudo mount -a
findmnt /mnt/rhcsa-final
df -h /mnt/rhcsa-final
Implantar e Habilitar o Serviço Final
Nesta etapa, você colocará o conteúdo da web no sistema de arquivos montado e criará um serviço systemd que o disponibiliza localmente na porta 18083.
Crie o diretório de conteúdo da web.
sudo mkdir -p /mnt/rhcsa-final/www
Crie o arquivo de conteúdo.
echo "RHCSA final validation service" | sudo tee /mnt/rhcsa-final/www/index.html >/dev/null
Defina as permissões para que o usuário de serviço labex possa ler o conteúdo sem torná-lo gravável por todos. O serviço precisa apenas de acesso de leitura ao grupo e de travessia de diretório, não de acesso amplo de escrita.
sudo chown -R root:labex /mnt/rhcsa-final/www
sudo chmod 750 /mnt/rhcsa-final/www
sudo chmod 640 /mnt/rhcsa-final/www/index.html
Crie a unidade de serviço. O serviço é executado a partir do diretório de conteúdo montado e vincula-se ao localhost na porta 18083, o que facilita a validação local com curl.
sudo tee /etc/systemd/system/rhcsa-final-web.service >/dev/null <<'EOF'
[Unit]
Description=RHCSA final validation web service
After=network.target
[Service]
Type=simple
User=labex
Group=labex
WorkingDirectory=/mnt/rhcsa-final/www
ExecStart=/usr/bin/python3 -m http.server 18083 --bind 127.0.0.1
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
Proteja o arquivo da unidade, recarregue o systemd e habilite o serviço. Arquivos de unidade em /etc/systemd/system devem pertencer ao root, e o daemon-reload faz com que o systemd leia a nova unidade antes de você habilitá-la e reiniciá-la.
sudo chown root:root /etc/systemd/system/rhcsa-final-web.service
sudo chmod 644 /etc/systemd/system/rhcsa-final-web.service
sudo systemctl daemon-reload
sudo systemctl enable rhcsa-final-web.service
sudo systemctl restart rhcsa-final-web.service
sleep 1
Teste o serviço.
systemctl is-active rhcsa-final-web.service
curl -s http://127.0.0.1:18083/
Adicionar Política de SELinux e Firewall
Nesta etapa, você completará a política do serviço. Adicione rótulos persistentes do SELinux para o conteúdo e a porta, e abra a porta com o firewalld.
Adicione ou atualize a regra de contexto de arquivo persistente. O padrão || torna isso seguro para reexecução: ele adiciona a regra quando ela está ausente e a modifica quando o caminho já possui uma regra personalizada.
sudo semanage fcontext -a -t httpd_sys_content_t '/mnt/rhcsa-final/www(/.*)?' || sudo semanage fcontext -m -t httpd_sys_content_t '/mnt/rhcsa-final/www(/.*)?'
Aplique a regra de contexto. O restorecon altera os rótulos atuais dos arquivos para corresponder à regra persistente do SELinux que você acabou de criar.
sudo restorecon -Rv /mnt/rhcsa-final/www
Adicione ou atualize o rótulo da porta HTTP do SELinux. O padrão de adicionar ou modificar lida tanto com um sistema novo quanto com uma reexecução onde o rótulo da porta já existe.
sudo semanage port -a -t http_port_t -p tcp 18083 || sudo semanage port -m -t http_port_t -p tcp 18083
Inicie o firewalld e abra a porta do serviço permanentemente.
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-port=18083/tcp
sudo firewall-cmd --reload
Inspecione os rótulos e o estado do firewall. Essas verificações conectam o trabalho de política ao estado observável: rótulo do arquivo, tipo de porta HTTP permitida e porta aberta no firewall.
ls -Z /mnt/rhcsa-final/www/index.html
sudo semanage port -l | grep '^http_port_t'
sudo firewall-cmd --list-ports
Executar a Verificação Final de Prontidão
Nesta etapa, você validará o estado completo do sistema com as mesmas ferramentas que usou ao longo do curso. Isso não é um relatório escrito; é uma verificação operacional.
Verifique a identidade local e a associação ao grupo.
id finaladmin
getent group rhcsaops
Verifique o armazenamento persistente. Você está verificando tanto a montagem ativa quanto a entrada salva no fstab, pois qualquer uma delas isoladamente é apenas metade do requisito de armazenamento.
findmnt /mnt/rhcsa-final
grep /mnt/rhcsa-final /etc/fstab
Verifique o serviço.
systemctl is-enabled rhcsa-final-web.service
systemctl is-active rhcsa-final-web.service
curl -s http://127.0.0.1:18083/
Verifique o SELinux e o firewalld. O estado final deve mostrar o SELinux em modo enforcing, o rótulo de conteúdo HTTP no arquivo de serviço e a porta 18083/tcp aberta no firewalld.
getenforce
ls -Z /mnt/rhcsa-final/www/index.html
sudo firewall-cmd --list-ports
Resumo
Você concluiu um fluxo de trabalho guiado de prontidão final configurando uma identidade de operador, um diretório compartilhado com setgid, armazenamento persistente, um serviço systemd, rótulos de arquivo e porta do SELinux, exposição via firewalld e uma validação final baseada em comandos.



