Introducción
Este laboratorio guiado final reúne varias habilidades de preparación para el examen RHCSA. Aunque recibirá orientación sobre los comandos, los pasos se asemejan más al flujo de trabajo de validación de un administrador: inspeccionar el sistema, configurar el estado requerido y demostrar el resultado final con herramientas estándar.
En este laboratorio, creará una identidad de operador local, preparará almacenamiento persistente, desplegará un pequeño servicio desde ese almacenamiento, añadirá políticas de SELinux y firewalld, y ejecutará una comprobación de preparación final.
Inspeccionar el sistema preparado
En este paso, inspeccionará los recursos preparados para el flujo de trabajo final. Comience confirmando el dispositivo de bloques, el estado del servicio y el modo de SELinux.
La configuración inicial mantiene de forma permanente el acceso SSH y el acceso al terminal de LabEx en el navegador a través de 3002/tcp en la zona public. Conserve estas reglas de administración al modificar la política del firewall para la aplicación.
Acceda al directorio del proyecto.
cd /home/labex/project
Muestre la ruta de la partición preparada. Los comandos posteriores reutilizan esta ruta para que no tenga que adivinar qué dispositivo de bloques pertenece al laboratorio.
cat /home/labex/project/rhcsa-final-part
Inspeccione el dispositivo de bloques preparado. Todavía no tiene el sistema de archivos final, por lo que esta es su línea base antes de formatear.
lsblk "$(cat /home/labex/project/rhcsa-final-part)"
Compruebe que el servicio final aún no se haya configurado. El uso de || true permite que el laboratorio continúe incluso si se espera que la unidad no exista en este punto.
systemctl status rhcsa-final-web.service --no-pager || true
Confirme que SELinux esté en modo enforcing antes de comenzar. El modo enforcing es importante porque las etiquetas de SELinux posteriores no son solo informativas; afectan si la política se aplica o no.
getenforce
Crear la identidad del operador y el directorio compartido
En este paso, creará un grupo local, un usuario local y un directorio compartido con setgid. Los comandos están escritos para ser seguros en caso de que necesite volver a ejecutarlos.
Cree el grupo si no existe. getent group comprueba primero el servicio de nombres local, y la parte || crea el grupo solo cuando la búsqueda falla.
getent group rhcsaops || sudo groupadd rhcsaops
Cree el usuario finaladmin si no existe.
id finaladmin >/dev/null 2>&1 || sudo useradd -m -s /bin/bash -G rhcsaops finaladmin
Asegúrese de que el usuario sea miembro del grupo de operadores. Las opciones -aG añaden la pertenencia al grupo en lugar de reemplazar los grupos suplementarios existentes del usuario.
sudo usermod -aG rhcsaops finaladmin
id finaladmin
Cree un directorio compartido para las notas del operador. El modo 2770 otorga al grupo acceso total y establece el bit setgid, de modo que los nuevos archivos hereden el grupo rhcsaops.
sudo mkdir -p /srv/rhcsa-final/team
sudo chown root:rhcsaops /srv/rhcsa-final/team
sudo chmod 2770 /srv/rhcsa-final/team
Escriba un archivo de prueba como finaladmin.
sudo -u finaladmin bash -c 'echo final validation access > /srv/rhcsa-final/team/finaladmin.txt'
Inspeccione el directorio y el archivo.
sudo stat -c '%a %U:%G %n' /srv/rhcsa-final/team /srv/rhcsa-final/team/finaladmin.txt
Preparar el almacenamiento persistente
En este paso, creará un sistema de archivos en la partición preparada y lo montará de forma persistente mediante UUID. Esto refleja el patrón de validación de almacenamiento utilizado en las tareas al estilo RHCSA.
Guarde la ruta de la partición preparada en una variable de shell.
part="$(cat /home/labex/project/rhcsa-final-part)"
Cree un sistema de archivos ext4 con una etiqueta reconocible. Esto es destructivo para la partición de práctica preparada, por lo que solo se realiza después de haber confirmado la ruta del dispositivo.
sudo mkfs.ext4 -F -L RHCSA_FINAL "$part"
Cree el punto de montaje.
sudo mkdir -p /mnt/rhcsa-final
Capture el UUID del sistema de archivos y elimine cualquier línea antigua en fstab para este punto de montaje. Los UUID son identificadores estables para montajes persistentes, y eliminar líneas antiguas evita entradas duplicadas en fstab.
uuid="$(sudo blkid -s UUID -o value "$part")"
sudo sed -i '/\/mnt\/rhcsa-final/d' /etc/fstab
Añada la entrada de montaje persistente.
echo "UUID=$uuid /mnt/rhcsa-final ext4 defaults 0 0" | sudo tee -a /etc/fstab
Monte desde fstab e inspeccione el resultado. mount -a demuestra que la línea de fstab funciona, mientras que findmnt y df confirman el destino del montaje y la capacidad disponible.
sudo mount -a
findmnt /mnt/rhcsa-final
df -h /mnt/rhcsa-final
Desplegar y habilitar el servicio final
En este paso, colocará contenido web en el sistema de archivos montado y creará un servicio de systemd que lo sirva localmente en el puerto 18083.
Cree el directorio de contenido web.
sudo mkdir -p /mnt/rhcsa-final/www
Cree el archivo de contenido.
echo "RHCSA final validation service" | sudo tee /mnt/rhcsa-final/www/index.html >/dev/null
Establezca los permisos para que el usuario de servicio labex pueda leer el contenido sin hacerlo escribible por todos. El servicio solo necesita acceso de lectura de grupo y acceso de recorrido de directorio, no acceso amplio de escritura.
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
Cree la unidad de servicio. El servicio se ejecuta desde el directorio de contenido montado y se vincula a localhost en el puerto 18083, lo que facilita la validación local con 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 el archivo de unidad, recargue systemd y habilite el servicio. Los archivos de unidad en /etc/systemd/system deben ser propiedad de root, y daemon-reload hace que systemd lea la nueva unidad antes de habilitarla y reiniciarla.
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
Pruebe el servicio.
systemctl is-active rhcsa-final-web.service
curl -s http://127.0.0.1:18083/
Añadir políticas de SELinux y firewalld
En este paso, completará la política del servicio. Añada etiquetas persistentes de SELinux para el contenido y el puerto, y luego abra el puerto con firewalld.
Añada o actualice la regla de contexto de archivo persistente. El patrón || hace que esto sea seguro de volver a ejecutar: añade la regla cuando falta y la modifica cuando la ruta ya tiene una regla 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 la regla de contexto. restorecon cambia las etiquetas de archivo actuales para que coincidan con la regla de SELinux persistente que acaba de crear.
sudo restorecon -Rv /mnt/rhcsa-final/www
Añada o actualice la etiqueta de puerto HTTP de SELinux. El patrón de añadir o modificar maneja tanto un sistema nuevo como una reejecución donde la etiqueta de puerto ya existe.
sudo semanage port -a -t http_port_t -p tcp 18083 || sudo semanage port -m -t http_port_t -p tcp 18083
Inicie firewalld y abra el puerto del servicio de forma permanente.
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-port=18083/tcp
sudo firewall-cmd --reload
Inspeccione las etiquetas y el estado del firewall. Estas comprobaciones conectan el trabajo de política con el estado observable: etiqueta de archivo, tipo de puerto HTTP permitido y puerto de firewall abierto.
ls -Z /mnt/rhcsa-final/www/index.html
sudo semanage port -l | grep '^http_port_t'
sudo firewall-cmd --list-ports
Ejecutar la comprobación de preparación final
En este paso, validará el estado completo del sistema con las mismas herramientas que utilizó a lo largo del curso. Esto no es un informe escrito; es una comprobación operativa.
Compruebe la identidad local y la pertenencia al grupo.
id finaladmin
getent group rhcsaops
Compruebe el almacenamiento persistente. Está verificando tanto el montaje activo como la entrada guardada en fstab, ya que cualquiera de los dos por separado es solo la mitad del requisito de almacenamiento.
findmnt /mnt/rhcsa-final
grep /mnt/rhcsa-final /etc/fstab
Compruebe el servicio.
systemctl is-enabled rhcsa-final-web.service
systemctl is-active rhcsa-final-web.service
curl -s http://127.0.0.1:18083/
Compruebe SELinux y firewalld. El estado final debe mostrar SELinux en modo enforcing, la etiqueta de contenido HTTP en el archivo de servicio y el puerto 18083/tcp abierto en firewalld.
getenforce
ls -Z /mnt/rhcsa-final/www/index.html
sudo firewall-cmd --list-ports
Resumen
Ha completado un flujo de trabajo guiado de preparación final configurando una identidad de operador, un directorio compartido con setgid, almacenamiento persistente, un servicio de systemd, etiquetas de archivo y puerto de SELinux, exposición mediante firewalld y una validación final basada en comandos.



