2.5 – Práctica guiada: “La estación orbital Andrómeda”

La estación espacial Andrómeda necesita organizar a su tripulación.
Hay tres equipos principales:

  • pilotos
  • ingenieros
  • cientificos

Cada miembro de la tripulación tendrá acceso solo a determinadas carpetas según su grupo.
Además, el comandante de la estación deberá poder reorganizar la tripulación, cambiar usuarios de grupo y ajustar propietarios y permisos de archivos.

Tu misión será convertirte en el administrador del sistema de la estación.


1. Objetivos de la práctica

Al finalizar esta práctica, el alumno será capaz de:

  • crear usuarios en Ubuntu,
  • crear grupos de usuarios,
  • añadir usuarios a grupos,
  • cambiar un usuario de grupo,
  • comprobar a qué grupos pertenece un usuario,
  • crear carpetas para distintos equipos,
  • asignar propietario y grupo a carpetas y archivos,
  • modificar permisos con chmod,
  • utilizar chown para cambiar propietario y grupo,
  • verificar que los permisos funcionan correctamente.

2. Qué vas a aprender

En Linux, cada archivo y carpeta tiene asociado:

  • un propietario,
  • un grupo,
  • unos permisos.

Los permisos se pueden definir para:

  • u → usuario propietario,
  • g → grupo,
  • o → otros usuarios.

Y los permisos básicos son:

  • r → lectura,
  • w → escritura,
  • x → ejecución o acceso.

3. Preparación inicial

Antes de empezar, abre una terminal y asegúrate de trabajar con un usuario con permisos de administración.

Puedes comprobarlo con:

whoami

Y probar que tienes permisos de sudo con:

sudo -v

4. Crear los grupos de la estación

Vamos a crear los tres grupos principales de la tripulación.

sudo groupadd pilotos
sudo groupadd ingenieros
sudo groupadd cientificos

Comprobar que los grupos existen

getent group pilotos
getent group ingenieros
getent group cientificos

Esto mostrará información del grupo si se ha creado correctamente.


5. Crear los usuarios de la tripulación

Ahora vamos a crear varios usuarios.

Equipo de pilotos

sudo useradd -m -s /bin/bash luke
sudo useradd -m -s /bin/bash leia

Equipo de ingenieros

sudo useradd -m -s /bin/bash data
sudo useradd -m -s /bin/bash scotty

Equipo de científicos

sudo useradd -m -s /bin/bash ripley
sudo useradd -m -s /bin/bash spock

Explicación

  • useradd crea el usuario.
  • -m crea su carpeta personal en /home.
  • -s /bin/bash asigna Bash como shell.

6. Asignar contraseña a los usuarios

Para que estos usuarios puedan iniciar sesión, asígnales una contraseña.

sudo passwd luke
sudo passwd leia
sudo passwd data
sudo passwd scotty
sudo passwd ripley
sudo passwd spock

Puedes usar una contraseña sencilla solo para la práctica, por ejemplo:

Clave123*

7. Añadir usuarios a sus grupos

Ahora asignamos cada usuario a su equipo.

sudo usermod -aG pilotos luke
sudo usermod -aG pilotos leia

sudo usermod -aG ingenieros data
sudo usermod -aG ingenieros scotty

sudo usermod -aG cientificos ripley
sudo usermod -aG cientificos spock

Explicación importante

  • usermod modifica un usuario.
  • -aG añade el usuario a uno o varios grupos sin borrar los grupos anteriores.

8. Comprobar a qué grupos pertenece cada usuario

Usa alguno de estos comandos:

groups luke
groups leia
groups data
groups scotty
groups ripley
groups spock

O también:

id luke
id data
id spock

Esto permite ver:

  • el UID del usuario,
  • el GID principal,
  • los grupos a los que pertenece.

9. Crear la estructura de carpetas de la estación

Vamos a crear una zona común de trabajo para la estación.

sudo mkdir -p /srv/andromeda/pilotos
sudo mkdir -p /srv/andromeda/ingenieros
sudo mkdir -p /srv/andromeda/cientificos
sudo mkdir -p /srv/andromeda/comun

Verificar la estructura creada

ls -l /srv
ls -l /srv/andromeda

10. Asignar propietario y grupo a las carpetas

Ahora vamos a asociar cada carpeta con su grupo correspondiente.

sudo chown root:pilotos /srv/andromeda/pilotos
sudo chown root:ingenieros /srv/andromeda/ingenieros
sudo chown root:cientificos /srv/andromeda/cientificos
sudo chown root:root /srv/andromeda/comun

Explicación

Con chown puedes cambiar:

  • el propietario,
  • el grupo,
  • o ambos.

En este caso:

  • el propietario será root,
  • el grupo será el del equipo correspondiente.

La sintaxis es:

sudo chown propietario:grupo ruta

NOTA: El Comando chgrp

El comando chgrp se utiliza en Linux para cambiar el grupo asociado a un archivo o carpeta.

Mientras que chown puede cambiar el propietario y también el grupo, chgrp está pensado específicamente para modificar solo el grupo.

chgrp grupo archivo_o_carpeta

sudo chgrp pilotos /srv/andromeda/ruta_estelar.txt

Con este comando, el archivo ruta_estelar.txt pasará a pertenecer al grupo pilotos.


¿Para qué sirve?

chgrp es útil cuando:

  • queremos que varios usuarios de un mismo grupo puedan acceder a un archivo,
  • no necesitamos cambiar el propietario,
  • queremos reorganizar permisos por grupos de trabajo.

En una práctica como la de la estación orbital, puede servir para decidir qué equipo debe compartir un documento sin cambiar quién es su dueño.


Diferencia entre chown y chgrp

  • chown cambia el propietario y, si se quiere, también el grupo.
  • chgrp cambia solo el grupo.


Por ejemplo:

sudo chown luke:pilotos archivo.txt

cambia propietario y grupo.


En cambio:

sudo chgrp pilotos archivo.txt

solo cambia el grupo, manteniendo el mismo propietario.

11. Asignar permisos a las carpetas

Queremos que cada grupo pueda entrar en su carpeta, leer y escribir en ella, pero que otros no puedan acceder.

sudo chmod 770 /srv/andromeda/pilotos
sudo chmod 770 /srv/andromeda/ingenieros
sudo chmod 770 /srv/andromeda/cientificos
sudo chmod 777 /srv/andromeda/comun

Explicación de los permisos

770

  • propietario: rwx
  • grupo: rwx
  • otros: ---

777

  • propietario: rwx
  • grupo: rwx
  • otros: rwx

La carpeta comun será accesible para todos, mientras que las otras estarán restringidas.


12. Comprobar los permisos

ls -ld /srv/andromeda/pilotos
ls -ld /srv/andromeda/ingenieros
ls -ld /srv/andromeda/cientificos
ls -ld /srv/andromeda/comun

Fíjate en algo como esto:

drwxrwx--- 2 root pilotos ...

Eso significa:

  • d → es una carpeta,
  • rwx → permisos del propietario,
  • rwx → permisos del grupo,
  • --- → permisos del resto.

13. Probar acceso con distintos usuarios

Ahora toca comprobar si realmente funciona.

Entrar como un usuario concreto

Puedes cambiar de usuario con:

su - luke

O, si prefieres, ejecutar comandos como otro usuario:

sudo -u luke ls /srv/andromeda/pilotos
sudo -u luke ls /srv/andromeda/ingenieros

Qué debería ocurrir

  • luke sí debería poder entrar en /srv/andromeda/pilotos
  • luke no debería poder entrar en /srv/andromeda/ingenieros

Prueba varios casos:

sudo -u luke ls /srv/andromeda/pilotos
sudo -u luke ls /srv/andromeda/ingenieros
sudo -u data ls /srv/andromeda/ingenieros
sudo -u ripley ls /srv/andromeda/cientificos
sudo -u spock ls /srv/andromeda/pilotos
¿Que hace? sudo -u luke ls
Ejecuta el comando ls como si lo estuviera lanzando el usuario luke. 
-u luke Le dice a sudo que el comando no se ejecute como tu usuario actual, sino como el usuario luke.

14. Crear archivos dentro de las carpetas

Vamos a crear documentos de misión dentro de cada zona.

sudo touch /srv/andromeda/pilotos/ruta_estelar.txt
sudo touch /srv/andromeda/ingenieros/reactor.txt
sudo touch /srv/andromeda/cientificos/informe_biologico.txt
sudo touch /srv/andromeda/comun/avisos_generales.txt

Añadimos contenido:



echo "Ruta secreta al sector Omega" | sudo tee /srv/andromeda/pilotos/ruta_estelar.txt

echo "Estado del reactor principal" | sudo tee /srv/andromeda/ingenieros/reactor.txt

echo "Análisis de muestras alienígenas" | sudo tee /srv/andromeda/cientificos/informe_biologico.txt

echo "Reunión general a las 18:00" | sudo tee /srv/andromeda/comun/avisos_generales.txt
¿Que hace tee?

sirve para escribir un texto dentro de un archivo con permisos de administrador.
El comando tee recoge lo que le llega por la entrada estándar y lo:

  • muestra por pantalla,
  • y además lo guarda en un archivo.

Como va precedido de sudo, tee se ejecuta con permisos de administrador, por lo que puede escribir en una ruta protegida.

Saber más

15. Cambiar propietario de un archivo con chown

Ahora vamos a usar chown de forma más clara sobre archivos.

Por ejemplo, el archivo del reactor lo va a gestionar el ingeniero data.

sudo chown data:ingenieros /srv/andromeda/ingenieros/reactor.txt

Y el informe biológico será gestionado por spock.

sudo chown spock:cientificos /srv/andromeda/cientificos/informe_biologico.txt

Verificar el cambio

ls -l /srv/andromeda/ingenieros/reactor.txt
ls -l /srv/andromeda/cientificos/informe_biologico.txt

16. Cambiar solo el grupo de un archivo

También puedes cambiar únicamente el grupo.

Por ejemplo:

sudo chown :pilotos /srv/andromeda/comun/avisos_generales.txt

Eso cambia solo el grupo, manteniendo el propietario actual.

Compruébalo:

ls -l /srv/andromeda/comun/avisos_generales.txt

17. Dar permisos concretos a los archivos

Vamos a ajustar permisos para que:

  • el propietario pueda leer y escribir,
  • el grupo pueda leer,
  • otros no puedan acceder.
sudo chmod 640 /srv/andromeda/ingenieros/reactor.txt
sudo chmod 640 /srv/andromeda/cientificos/informe_biologico.txt
sudo chmod 664 /srv/andromeda/comun/avisos_generales.txt

Interpretación

640

  • propietario: lectura y escritura
  • grupo: lectura
  • otros: sin permisos

664

  • propietario: lectura y escritura
  • grupo: lectura y escritura
  • otros: lectura

18. Cambiar un usuario de grupo

Ahora viene una situación de la historia.

La comandante decide que leia deja el equipo de pilotos y pasa al equipo de ingenieros.

Primero la añadimos al nuevo grupo:

sudo usermod -aG ingenieros leia

Comprobamos sus grupos:

groups leia

Ahora leia pertenece a dos grupos: pilotos e ingenieros.

Quitarla del grupo de pilotos

Para hacerlo de forma clara en Ubuntu:

sudo gpasswd -d leia pilotos

Volvemos a comprobar:

groups leia

Ahora debería quedar solo en ingenieros además de su grupo principal.


19. Crear un nuevo usuario y asignarlo a un grupo

La estación recibe a un nuevo tripulante: neo.

sudo useradd -m -s /bin/bash neo
sudo passwd neo
sudo usermod -aG cientificos neo

Comprobar:

groups neo

20. Probar qué puede hacer cada usuario

Haz pruebas reales con comandos como estos:

sudo -u data cat /srv/andromeda/ingenieros/reactor.txt
sudo -u luke cat /srv/andromeda/ingenieros/reactor.txt
sudo -u spock cat /srv/andromeda/cientificos/informe_biologico.txt
sudo -u leia touch /srv/andromeda/ingenieros/prueba_leia.txt
sudo -u neo touch /srv/andromeda/cientificos/muestra_01.txt

Qué observar

  • Un usuario del grupo correcto debería poder trabajar dentro de su carpeta.
  • Un usuario de otro grupo debería recibir un error de permisos.
  • Los archivos deben respetar los permisos establecidos.

21. Ver propietarios y permisos de toda la estación

Para revisar toda la estructura:

ls -lR /srv/andromeda

Esto te mostrará:

  • carpetas,
  • archivos,
  • propietarios,
  • grupos,
  • permisos.

22. Recuerda

Diferencia entre propietario y grupo

  • El propietario es normalmente el usuario dueño del archivo.
  • El grupo permite que varios usuarios compartan acceso a archivos y carpetas.

Diferencia entre chown y chmod

  • chown cambia el propietario o grupo.
  • chmod cambia los permisos.

Comandos clave

Crear grupo

sudo groupadd nombre_grupo

Crear usuario

sudo useradd -m -s /bin/bash nombre_usuario

Asignar contraseña

sudo passwd nombre_usuario

Añadir usuario a grupo

sudo usermod -aG grupo usuario

Ver grupos de un usuario

groups usuario

Quitar usuario de un grupo

sudo gpasswd -d usuario grupo

Cambiar propietario y grupo

sudo chown propietario:grupo archivo_o_carpeta

Cambiar permisos

sudo chmod permisos archivo_o_carpeta

23. Actividad

Ahora que ya sabes manejar usuarios y permisos, realiza estas tareas:

Tarea 1

Crea un nuevo grupo llamado:

seguridad

Tarea 2

Crea dos usuarios nuevos:

  • trinity
  • morpheo

Tarea 3

Añade ambos al grupo seguridad.

Tarea 4

Crea la carpeta:

/srv/andromeda/seguridad

Tarea 5

Haz que:

  • el propietario sea root,
  • el grupo sea seguridad,
  • los permisos sean 770.

Tarea 6

Crea dentro un archivo llamado:

protocolo_defensa.txt

Tarea 7

Haz que el archivo pertenezca a trinity:seguridad.

Tarea 8

Pon permisos 640 al archivo.

Tarea 9

Comprueba que:

  • trinity puede leerlo,
  • morpheo puede leerlo,
  • luke no puede acceder.

25. Planteate las siguientes preguntas.

  1. ¿Qué diferencia hay entre un usuario y un grupo?
  2. ¿Qué hace el comando chown?
  3. ¿Qué hace el comando chmod?
  4. ¿Qué significa el permiso 770?
  5. ¿Qué significa el permiso 640?
  6. ¿Cómo se comprueba a qué grupos pertenece un usuario?
  7. ¿Qué comando se usa para eliminar a un usuario de un grupo?
  8. ¿Por qué es útil trabajar con grupos en lugar de dar permisos usuario por usuario?

La estación orbital Andrómeda ya está organizada.
Cada tripulante pertenece a su equipo, cada carpeta está protegida y los documentos sensibles solo son accesibles por el personal autorizado.
Has completado con éxito tu primera misión como administrador de sistemas espaciales.


Tabla de comandos y opciones principales

ComandoOpción / sintaxisExplicación
groupaddgroupadd nombre_grupoCrea un grupo nuevo en el sistema.
useradduseradd nombre_usuarioCrea un usuario.
useradd-mCrea automáticamente la carpeta personal del usuario en /home.
useradd-s /bin/bashAsigna la shell Bash al usuario.
passwdpasswd nombre_usuarioEstablece o cambia la contraseña de un usuario.
usermodusermod usuarioModifica la configuración de un usuario existente.
usermod-aG grupo usuarioAñade el usuario a un grupo secundario sin quitarlo de los demás.
groupsgroups usuarioMuestra los grupos a los que pertenece un usuario.
idid usuarioMuestra UID, GID y grupos del usuario.
mkdirmkdir carpetaCrea una carpeta.
mkdir-pCrea la ruta completa aunque haya varios niveles de carpetas.
touchtouch archivoCrea un archivo vacío si no existe.
lslsLista archivos y carpetas.
ls-lMuestra la lista en formato largo, con permisos, propietario, grupo, tamaño, etc.
ls-dMuestra información de la carpeta en sí, no de su contenido.
ls-RLista el contenido de forma recursiva, incluyendo subcarpetas.
chownchown propietario archivoCambia el propietario de un archivo o carpeta.
chownchown propietario:grupo archivoCambia propietario y grupo a la vez.
chownchown :grupo archivoCambia solo el grupo del archivo o carpeta.
chown-RAplica el cambio de propietario/grupo de forma recursiva.
chmodchmod permisos archivoCambia los permisos de un archivo o carpeta.
chmod770Propietario y grupo con todos los permisos; otros sin acceso.
chmod750Propietario con todos los permisos; grupo puede leer y entrar; otros sin acceso.
chmod640Propietario puede leer y escribir; grupo solo leer; otros sin acceso.
chmod664Propietario y grupo pueden leer y escribir; otros solo leer.
chmod777Todos pueden leer, escribir y ejecutar/entrar.
chmod-RCambia permisos de forma recursiva.
gpasswdgpasswd -d usuario grupoElimina un usuario de un grupo.
susu - usuarioCambia a otro usuario cargando su entorno.
sudosudo comandoEjecuta un comando con privilegios de administrador.
sudosudo -u usuario comandoEjecuta un comando como otro usuario.
getentgetent group nombre_grupoConsulta información de un grupo en la base de datos del sistema.
whoamiwhoamiMuestra el usuario actual.
teetee archivoEscribe en un archivo a partir de la entrada estándar. Muy útil junto con echo.
catcat archivoMuestra el contenido de un archivo.

Tabla permisos numéricos

ValorSignificado
7rwx = lectura, escritura y ejecución
6rw- = lectura y escritura
5r-x = lectura y ejecución
4r-- = solo lectura
3-wx = escritura y ejecución
2-w- = solo escritura
1--x = solo ejecución
0--- = sin permisos

Cómo leer un permiso como 770

PosiciónValorSignificado
Propietario7rwx
Grupo7rwx
Otros0---

Ejemplos rápidos

ObjetivoComando
Crear gruposudo groupadd pilotos
Crear usuario con home y bashsudo useradd -m -s /bin/bash luke
Añadir usuario a gruposudo usermod -aG pilotos luke
Ver grupos de un usuariogroups luke
Cambiar propietario y gruposudo chown data:ingenieros archivo.txt
Cambiar solo gruposudo chown :cientificos archivo.txt
Dar permisos al propietario y gruposudo chmod 770 carpeta
Quitar a un usuario de un gruposudo gpasswd -d leia pilotos