Lab 3.5 - Gestión de Permisos
Objetivos
Al final de este laboratorio, usted será capaz de:
- Comprender la importancia de los permisos en un sistema Linux
- Crear usuarios y configurar archivos compartidos
- Aplicar permisos adecuados con
chmodychown - Utilizar la notación simbólica de
chmod(u, g, o, a) - Verificar y probar los permisos
- Comprender las diferencias entre
useraddyadduser
Prerrequisitos
- Ubuntu 24.04 instalado y funcional
- Acceso root o sudo
- Terminal abierto
Recordatorio sobre la Gestión de Permisos
La gestión de permisos es un aspecto esencial de la administración de sistemas Linux. Permite controlar quién puede acceder, modificar o ejecutar archivos y directorios. Una mala configuración de los permisos puede provocar graves fallos de seguridad, comprometiendo así la confidencialidad, integridad y disponibilidad de los datos.
En esta sección, exploraremos los diferentes pasos necesarios para crear usuarios, configurar archivos y directorios compartidos, y aplicar permisos adecuados para garantizar un acceso controlado. También veremos cómo verificar estos permisos para asegurarnos de que se aplican correctamente.
Los ejercicios presentados permitirán comprender cómo las órdenes chown, chmod y su pueden utilizarse para gestionar eficazmente los accesos, así como los riesgos potenciales asociados a una mala configuración.
Ejercicio 1: Configuración Inicial de Permisos
Paso 1: Conexión como Superusuario
# En Ubuntu 24.04, utilice sudo en lugar de su
sudo su
# O utilice directamente sudo para cada comando
Paso 2: Creación de Usuarios
# En Ubuntu 24.04, utilice adduser (más amigable) o useradd
sudo adduser albert
sudo adduser bernard
sudo adduser claude
sudo adduser danielle
# Si adduser no está disponible, utilice useradd con -m para crear el home
# sudo useradd -m albert
# sudo passwd albert # Definir la contraseña
Nota: En Ubuntu 24.04, se prefiere adduser porque es interactivo y configura automáticamente el directorio home y otros parámetros.
Paso 3: Creación de la Carpeta y los Archivos
# Crear la carpeta shared_data y los subdirectorios/archivos necesarios
sudo mkdir -p /home/shared_data
sudo mkdir -p /home/shared_data/dossier1
sudo touch /home/shared_data/file1.txt
sudo touch /home/shared_data/file2.txt
sudo touch /home/shared_data/dossier1/script1.sh
sudo touch /home/shared_data/dossier1/script2.sh
# Añadir contenido a los scripts para las pruebas
echo '#!/bin/bash
echo "Script 1 exécuté"' | sudo tee /home/shared_data/dossier1/script1.sh
echo '#!/bin/bash
echo "Script 2 exécuté"' | sudo tee /home/shared_data/dossier1/script2.sh
Paso 4: Asignación de Propietarios y Permisos
# Configuración inicial de permisos y propietarios
# Albert - propietario de file1.txt con permisos 644 (rw-r--r--)
sudo chown albert:albert /home/shared_data/file1.txt
sudo chmod 644 /home/shared_data/file1.txt
# Albert - propietario de file2.txt con permisos 444 (r--r--r--) - solo lectura
sudo chown albert:albert /home/shared_data/file2.txt
sudo chmod 444 /home/shared_data/file2.txt
# Bernard - propietario de file2.txt con permisos 664 (rw-rw-r--)
sudo chown bernard:bernard /home/shared_data/file2.txt
sudo chmod 664 /home/shared_data/file2.txt
# Bernard - propietario de script1.sh con permisos 751 (rwxr-x--x)
sudo chown bernard:bernard /home/shared_data/dossier1/script1.sh
sudo chmod 751 /home/shared_data/dossier1/script1.sh
# Claude - propietario recursivo de dossier1 con permisos 766 (rwxrw-rw-)
sudo chown -R claude:claude /home/shared_data/dossier1
sudo chmod 766 /home/shared_data/dossier1
sudo chmod 666 /home/shared_data/dossier1/script1.sh
sudo chmod 666 /home/shared_data/dossier1/script2.sh
# Danielle - propietario recursivo de shared_data con permisos 777 (rwxrwxrwx) - TODOS LOS DERECHOS
sudo chown -R danielle:danielle /home/shared_data
sudo chmod -R 777 /home/shared_data
Paso 5: Verificación de los Directorios Home de los Usuarios
# Verifique que los directorios de los usuarios estén correctamente configurados
ls -l /home
# Verifique los permisos de la carpeta shared_data
ls -lR /home/shared_data
Ejercicio 2: Pruebas de Permisos
Tabla de Pruebas de Permisos
A continuación, una tabla que describe las acciones que cada usuario intentará realizar y los resultados esperados según los permisos definidos:
| Acción/Prueba | Usuario | Comando | Resultado Esperado |
|---|---|---|---|
Leer file1.txt | Albert | cat /home/shared_data/file1.txt | Éxito |
Escribir en file1.txt | Albert | echo "Test" >> /home/shared_data/file1.txt | Éxito |
Leer file2.txt | Albert | cat /home/shared_data/file2.txt | Éxito |
Escribir en file2.txt | Albert | echo "Test" >> /home/shared_data/file2.txt | Fallo (Permiso denegado) |
Leer y escribir en file2.txt | Bernard | echo "Bernard" >> /home/shared_data/file2.txt | Éxito |
Ejecutar script1.sh en dossier1 | Bernard | bash /home/shared_data/dossier1/script1.sh | Éxito |
Leer y escribir en dossier1 | Claude | echo "Claude" >> /home/shared_data/dossier1/test.txt | Éxito |
Ejecutar script1.sh en dossier1 | Claude | bash /home/shared_data/dossier1/script1.sh | Fallo (Permiso denegado) |
| Ejecutar todas las acciones en todos los archivos/carpetas | Danielle | echo "Danielle" >> /home/shared_data/file1.txt | Éxito (acceso total) |
Realización de las Pruebas
# Ejecutar las pruebas para verificar los permisos
# Prueba 1: Albert lee file1.txt
sudo su albert -c 'cat /home/shared_data/file1.txt'
# Prueba 2: Albert escribe en file1.txt
sudo su albert -c 'echo "Test Albert" >> /home/shared_data/file1.txt'
# Prueba 3: Albert lee file2.txt
sudo su albert -c 'cat /home/shared_data/file2.txt'
# Prueba 4: Albert intenta escribir en file2.txt (debería fallar)
sudo su albert -c 'echo "Test" >> /home/shared_data/file2.txt' || echo "Fallo esperado: Permiso denegado"
# Prueba 5: Bernard escribe en file2.txt
sudo su bernard -c 'echo "Bernard" >> /home/shared_data/file2.txt'
# Prueba 6: Bernard ejecuta script1.sh
sudo su bernard -c 'bash /home/shared_data/dossier1/script1.sh'
# Prueba 7: Claude escribe en dossier1
sudo su claude -c 'echo "Claude" >> /home/shared_data/dossier1/test.txt'
# Prueba 8: Claude intenta ejecutar script1.sh (debería fallar)
sudo su claude -c 'bash /home/shared_data/dossier1/script1.sh' || echo "Fallo esperado: Permiso denegado"
# Prueba 9: Danielle escribe en file1.txt (acceso total)
sudo su danielle -c 'echo "Danielle" >> /home/shared_data/file1.txt'
# Verificar los resultados
cat /home/shared_data/file1.txt
cat /home/shared_data/file2.txt
ls -l /home/shared_data/dossier1/
Ejercicio 3: Notación Simbólica con chmod
En este ejercicio, usted explorará los permisos de ejecución y la manera de concederlos a los usuarios, grupos y a todos los demás utilizando la notación simbólica de chmod.
Objetivos pedagógicos
- Comprender la notación simbólica (
u,g,o,a) conchmod - Añadir dinámicamente el permiso de ejecución sin modificar los demás derechos
- Verificar los efectos con
ls -l
Paso 1: Creación de un archivo script sencillo
# Crear un script de prueba
touch mon_script.sh
echo -e "#!/bin/bash\necho 'Script lancé !'" > mon_script.sh
# Verificar el contenido
cat mon_script.sh
Paso 2: Visualización de los permisos actuales
ls -l mon_script.sh
Verifique que el archivo no sea ejecutable (sin x en los permisos).
Paso 3: Añadir el permiso de ejecución para el usuario (propietario)
chmod u+x mon_script.sh
ls -l mon_script.sh
Luego, intente ejecutar el script con:
./mon_script.sh
Paso 4: Añadir el permiso de ejecución para el grupo
chmod g+x mon_script.sh
ls -l mon_script.sh
Paso 5: Añadir el permiso de ejecución para todos los usuarios (a = all)
chmod a+x mon_script.sh
ls -l mon_script.sh
Paso 6: Eliminación de todos los permisos de ejecución
chmod a-x mon_script.sh
ls -l mon_script.sh
Resumen de los comandos utilizados
| Comando | Acción |
|---|---|
chmod u+x archivo | Añade el permiso de ejecución para el usuario |
chmod g+x archivo | Añade el permiso de ejecución para el grupo |
chmod o+x archivo | Añade el permiso de ejecución para otros usuarios |
chmod a+x archivo | Añade el permiso de ejecución para todos |
chmod a-x archivo | Quita el permiso de ejecución para todos |
Preguntas de reflexión
- ¿Por qué a veces se utiliza
u+xen lugar dechmod 744? - ¿Es posible añadir un permiso sin afectar a los demás? Explique.
- ¿Cuál es la diferencia entre
chmod a+xychmod 755?
Anexo 1: useradd vs adduser
Creación de Usuarios con useradd y adduser
La gestión de usuarios es una tarea fundamental en la administración de sistemas bajo Linux. Dos comandos principales se utilizan comúnmente para crear usuarios: useradd y adduser. Aunque tienen nombres similares, funcionan de manera diferente.
useradd : El Comando Básico
El comando useradd es una utilidad estándar disponible en todas las distribuciones Linux. Permite crear un nuevo usuario sin interacción humana, lo que lo hace ideal para scripts de automatización. Sin embargo, useradd no solicita contraseña ni información adicional por defecto.
# Crear un usuario sin contraseña
sudo useradd -m albert
Después de crear el usuario, debe definir una contraseña manualmente con el comando passwd:
# Añadir una contraseña para el usuario
sudo passwd albert
adduser : La Versión Amigable
En algunas distribuciones Linux, como Debian y Ubuntu, adduser es un comando más amigable, que en realidad es un script Perl que envuelve a useradd. Este comando guía al administrador a través de un proceso interactivo donde puede configurar varios aspectos de la cuenta de usuario, incluyendo la contraseña, el nombre completo y otra información opcional.
# Crear un usuario con un proceso interactivo
sudo adduser albert
El sistema le hará una serie de preguntas:
- Contraseña: Se le pedirá que introduzca y confirme la contraseña del usuario.
- Nombre completo: Puede proporcionar un nombre completo para el usuario (opcional).
- Número de habitación, Teléfono del trabajo, Teléfono personal, Otra información: Estos campos son opcionales y pueden dejarse vacíos presionando
Enter. - Confirmación: Deberá confirmar la información antes de que se cree el usuario.
¿Cuándo utilizar useradd o adduser?
useradd: Utilice este comando cuando necesite crear usuarios mediante un script o cuando no desee que se le solicite información adicional.adduser: Utilice este comando cuando prefiera un proceso interactivo y desee configurar varios detalles de la cuenta de usuario en un solo paso.
Anexo 2: Gestión de Contraseñas
Añadir una contraseña después de la creación con useradd
Cuando utiliza el comando useradd, por defecto, no solicita crear una contraseña para el usuario. Para añadir una contraseña inmediatamente después de crear un usuario, puede utilizar el comando passwd.
# Crear los usuarios
sudo useradd -m pierre
sudo useradd -m marie
sudo useradd -m luc
sudo useradd -m sophie
# Añadir una contraseña para cada usuario
sudo passwd pierre
sudo passwd marie
sudo passwd luc
sudo passwd sophie
Con cada comando passwd, el sistema le pedirá que introduzca una contraseña para el usuario especificado. Asegúrese de que la contraseña cumpla con las reglas de seguridad del sistema (por ejemplo, longitud mínima, complejidad, etc.).
Cambiar la contraseña de un usuario
Para cambiar la contraseña del usuario luc, puede utilizar el siguiente comando:
sudo passwd luc
Después de ejecutar este comando, el sistema le pedirá que introduzca una nueva contraseña para el usuario luc, y luego confirmarla introduciéndola una segunda vez.
Preguntas de Reflexión
Objetivo
Comprender mejor la gestión de permisos en Linux y el impacto de estas configuraciones en la seguridad global del sistema.
-
Explique la importancia de los permisos en un sistema Linux. ¿Cómo pueden los permisos incorrectos afectar la seguridad de un sistema?
- Esta pregunta tiene como objetivo hacerle reflexionar sobre las implicaciones de seguridad y la gestión de accesos en un entorno Linux.
-
¿Qué diferencias existen entre los permisos de lectura, escritura y ejecución? ¿Por qué es crucial configurar correctamente estos permisos en un entorno multiusuario?
- Esta pregunta está diseñada para ayudarle a comprender y explicar la importancia de cada tipo de permiso en la seguridad y funcionalidad de un sistema.
-
¿Cuál es el papel del archivo sudoers en la gestión de permisos del sistema? ¿Cómo puede una mala configuración de este archivo comprometer un sistema Linux?
- Esta pregunta le anima a explorar el papel crítico del archivo sudoers en la gestión de privilegios de administración y los riesgos asociados a su mala gestión.
-
¿Por qué es importante limitar los permisos de ejecución en ciertos archivos o scripts? Dé un ejemplo donde esta limitación podría prevenir una vulnerabilidad de seguridad.
- Esta pregunta le permite discutir la importancia de restringir los permisos de ejecución y reflexionar sobre escenarios donde tales restricciones son esenciales para la seguridad.
-
¿Cómo influyen los comandos
chmodychownen la seguridad de archivos y carpetas en un servidor Linux? ¿Cuáles son las buenas prácticas para su uso?- Esta pregunta le pide describir cómo estos comandos afectan la seguridad de archivos y carpetas y reflexionar sobre las mejores prácticas para su uso eficaz y seguro.
-
Examine un escenario en el que un usuario haya obtenido accidentalmente permisos excesivos sobre archivos críticos. ¿Cuáles podrían ser las consecuencias y cómo podría resolverse este problema?
- Esta pregunta tiene como objetivo hacerle reflexionar sobre los impactos potenciales de la sobreasignación de permisos y las posibles medidas correctivas.
-
¿Qué es el "sticky bit" y cómo puede utilizarse para mejorar la seguridad de los directorios compartidos?
- Esta pregunta le anima a explorar el concepto de sticky bit, su utilidad y su aplicación en la protección de entornos donde varios usuarios acceden a los mismos directorios.
-
Discuta la importancia de la separación de derechos de usuario y administrador en un sistema Linux. ¿Cómo influye esto en la seguridad general del sistema?
- Esta pregunta le permite reflexionar sobre la importancia de la separación de privilegios para prevenir abusos de derechos y errores accidentales.
Resumen
En este laboratorio, usted ha aprendido a:
- Crear usuarios con
adduseryuseradd - Configurar archivos y directorios compartidos
- Aplicar permisos con
chmod(notación numérica y simbólica) - Cambiar propietarios con
chown - Probar y verificar los permisos
- Comprender la importancia de la seguridad de los permisos
Próximos Pasos
- Lab 3.2: Gestión de Permisos (conceptos básicos)
- Módulo 5: Usuarios y Permisos (profundización)
- Módulo 9: Seguridad del Sistema (protección avanzada)
Laboratorio creado el: Diciembre 2024