Capítulo 1: Introducción a Usuarios, Autenticación y Permisos en Linux
Objetivo
Este laboratorio está diseñado para que los estudiantes entiendan los conceptos
fundamentales de usuarios, autenticación y permisos en sistemas operativos Linux
mediante comandos básicos en la terminal Bash. Al finalizar este capítulo, los
estudiantes podrán:
1. Identificar el usuario actual.
2. Cambiar entre usuarios, incluyendo el usuario administrador (root).
3. Cambiar la contraseña de un usuario.
4. Comprender el rol de sudo en Linux.
5. Entender y modificar los permisos de archivos y directorios.
Parte 1: Conociendo el usuario actual
En Linux, todos los procesos y recursos están vinculados a un usuario. Para empezar,
identificaremos el usuario que está ejecutando la terminal.
Ejercicio 1: Identificar el usuario actual
1. Abre la terminal.
2. Escribe el siguiente comando:
$ whoami
Salida esperada:
$ usuario_actual
Este comando muestra el nombre del usuario que inició sesión y está ejecutando
la terminal.
3. Obtén más información del usuario actual con:
$ id
Salida esperada:
uid=1000(usuario_actual) gid=1000(grupo)
groups=1000(grupo),27(sudo)
o uid: Identificador del usuario.
o gid: Identificador del grupo principal del usuario.
o groups: Grupos adicionales a los que pertenece el usuario.
Explicación
En Linux:
• Cada usuario tiene un identificador único (uid).
• Los grupos son conjuntos de usuarios que comparten permisos para archivos y
procesos.
Parte 2: Cambiar de usuario
En Linux, el sistema puede tener múltiples usuarios. Uno de ellos, llamado root, es el
administrador con control total.
Ejercicio 2: Cambiar a otro usuario (root)
1. Intenta cambiar al usuario administrador usando:
$ su
2. Si se solicita, ingresa la contraseña del usuario root.
3. Verifica el cambio de usuario escribiendo:
$ whoami
Salida esperada:
root
Esto confirma que ahora estás operando como el usuario root.
4. Vuelve al usuario anterior escribiendo:
$ exit
Este comando cierra la sesión del usuario actual y regresa al usuario original.
Uso del comando sudo
En Linux, el comando sudo permite a un usuario ejecutar tareas administrativas (como
root) temporalmente sin cambiar completamente al usuario root.
1. Prueba usar sudo con un comando básico:
$ sudo whoami
2. Ingresa la contraseña de tu usuario (no la de root) si se solicita. Salida
esperada:
root
Esto demuestra que sudo ejecutó el comando como si fueras root.
Nota sobre seguridad
El acceso a sudo está restringido a usuarios autorizados que pertenezcan al grupo sudo.
Puedes verificar si un usuario pertenece al grupo sudo con el comando:
groups
Parte 3: Cambiar la contraseña de un usuario
Cada usuario tiene una contraseña asociada que garantiza su autenticación en el sistema.
Ejercicio 3: Cambiar tu propia contraseña
1. Cambia tu contraseña escribiendo:
$ passwd
2. La terminal solicitará tu contraseña actual. Ingresa la contraseña.
3. Luego, se te pedirá que ingreses y confirmes una nueva contraseña.
Salida esperada:
Changing password for usuario_actual.
Current password:
New password:
Retype new password:
passwd: password updated successfully
Ejercicio 4: Cambiar la contraseña de otro usuario (como root)
1. Cambia al usuario root:
$ su
2. Cambia la contraseña de otro usuario (por ejemplo, usuario2):
$ passwd usuario2
3. Sigue el mismo procedimiento para establecer una nueva contraseña.
Parte 4: Explorando permisos en Linux
Cada archivo o directorio tiene tres tipos de permisos (lectura, escritura y ejecución)
aplicados a tres categorías: propietario, grupo y otros.
Ejercicio 5: Listar permisos de archivos
1. Navega a tu directorio personal:
$ cd ~
2. Lista los archivos y sus permisos con:
$ ls -l
Salida esperada:
-rw-r--r-- 1 usuario grupo tamaño fecha [Link]
drwxr-xr-x 2 usuario grupo 4096 fecha carpeta
o Primer carácter: Tipo (- archivo, d directorio).
o Permisos: Tres bloques:
Propietario: rw- (lectura y escritura).
Grupo: r-- (solo lectura).
Otros: r-- (solo lectura).
Ejercicio 6: Cambiar permisos de un archivo
1. Crea un archivo:
$ touch [Link]
2. Cambia sus permisos para que solo el propietario pueda leer y escribir:
$ chmod 600 [Link]
3. Verifica los permisos:
$ ls -l [Link]
Salida esperada:
-rw------- 1 usuario grupo tamaño fecha [Link]
Ejercicio 7: Modificar permisos de directorios
1. Crea un directorio:
$ mkdir mi_carpeta
2. Cambia los permisos para que todos los usuarios puedan leer, escribir y entrar en
él:
$ chmod 777 mi_carpeta
3. Verifica los permisos:
$ ls -ld mi_carpeta
Salida esperada:
drwxrwxrwx 2 usuario grupo 4096 fecha mi_carpeta
Resumen del capítulo
En este capítulo, aprendiste a:
1. Identificar el usuario actual y cambiar de usuario.
2. Cambiar contraseñas utilizando passwd.
3. Usar sudo para ejecutar comandos administrativos.
4. Ver y modificar permisos de archivos y directorios usando ls y chmod.
Tareas adicionales
1. Cambia los permisos de un archivo para que solo el grupo pueda leerlo.
2. Investiga qué ocurre si quitas los permisos de ejecución de un directorio:
$ chmod -x mi_carpeta
Capítulo 2: Navegación por el Sistema de Archivos y Gestión de Carpetas
y Archivos
Objetivo
Este capítulo te enseñará cómo navegar por el sistema de archivos de Linux y realizar
operaciones básicas de gestión de carpetas y archivos. Al finalizar este capítulo, serás
capaz de:
1. Comprender la estructura del sistema de archivos en Linux.
2. Navegar entre directorios utilizando comandos básicos.
3. Crear, mover, copiar y eliminar archivos y carpetas.
4. Utilizar comandos útiles para explorar y gestionar el contenido de los
directorios.
Parte 1: Estructura del sistema de archivos
El sistema de archivos en Linux tiene una estructura jerárquica similar a un árbol. El
directorio raíz (root) es / y contiene subdirectorios importantes:
• /home: Directorios personales de los usuarios.
• /etc: Archivos de configuración del sistema.
• /var: Archivos variables (logs, colas de impresión, etc.).
• /tmp: Archivos temporales.
• /usr: Aplicaciones y archivos de usuario.
Para ver la estructura de directorios:
$ ls /
Parte 2: Navegación por el sistema de archivos
En Linux, puedes moverte entre directorios usando el comando cd.
Ejercicio 1: Moverse entre directorios
1. Mueve al directorio raíz:
$ cd /
Verifica dónde estás:
$ pwd
Salida esperada:
2. Navega al directorio personal:
$ cd /home/tu_usuario
Alternativamente, puedes usar el atajo:
$ cd ~
3. Retrocede un nivel en la jerarquía:
$ cd ..
4. Vuelve al directorio anterior:
$ cd -
Parte 3: Explorando el contenido de los directorios
El comando ls muestra el contenido de un directorio.
Ejercicio 2: Listar archivos y directorios
1. Lista los elementos en el directorio actual:
$ ls
2. Lista el contenido con detalles adicionales (permisos, tamaño, fecha):
$ ls -l
3. Muestra los archivos ocultos (los que empiezan con .):
$ ls -a
4. Combina opciones para un listado detallado incluyendo archivos ocultos:
$ ls -la
Comandos útiles para explorar:
• tree: Muestra una estructura visual en forma de árbol. Si no está instalado, usa:
$ sudo apt install tree
Luego ejecuta:
$ tree
Parte 4: Gestión de carpetas
Crear, mover, copiar y eliminar carpetas son operaciones fundamentales.
Ejercicio 3: Crear directorios
1. Crea un directorio llamado pruebas en tu carpeta personal:
$ mkdir ~/pruebas
2. Verifica su creación:
$ ls ~
3. Crea un directorio con subdirectorios utilizando -p:
$ mkdir -p ~/pruebas/subdirectorio1/subdirectorio2
Ejercicio 4: Mover y renombrar directorios
El comando mv se usa tanto para mover como para renombrar.
1. Renombra pruebas a proyectos:
$ mv ~/pruebas ~/proyectos
2. Mueve el directorio proyectos al directorio raíz (requiere permisos):
$ sudo mv ~/proyectos /
Ejercicio 5: Eliminar directorios
1. Elimina un directorio vacío:
$ rmdir ~/proyectos
2. Elimina un directorio con contenido utilizando rm -r:
$ rm -r ~/proyectos
Precaución: Usa el comando rm con cuidado, ya que elimina archivos
permanentemente.
Parte 5: Gestión de archivos
Los comandos para gestionar archivos son similares a los de carpetas.
Ejercicio 6: Crear archivos
1. Crea un archivo vacío llamado [Link]:
$ touch [Link]
2. Verifica su creación:
$ ls
3. Crea un archivo con contenido usando el redireccionamiento:
$ echo "Hola, este es un archivo de prueba." > [Link]
Ejercicio 7: Copiar archivos
1. Copia el archivo [Link] al directorio ~/Documentos:
$ cp [Link] ~/Documentos
2. Verifica que se haya copiado correctamente:
$ ls ~/Documentos
Ejercicio 8: Mover archivos
1. Mueve el archivo [Link] al directorio ~/Documentos:
$ mv [Link] ~/Documentos
2. Renombra el archivo [Link]:
$ mv [Link] [Link]
Ejercicio 9: Eliminar archivos
1. Elimina un archivo:
$ rm [Link]
2. Intenta eliminar un archivo protegido contra escritura:
$ rm [Link]
Si no tienes permisos, usa:
$ sudo rm [Link]
Parte 6: Comandos adicionales útiles
1. Ver contenido de un archivo:
$ cat [Link]
2. Mostrar primeras líneas de un archivo:
$ head [Link]
3. Mostrar últimas líneas de un archivo:
$ tail [Link]
4. Buscar un archivo por nombre:
$ find ~/ -name [Link]
Resumen del capítulo
En este capítulo, aprendiste a:
1. Navegar por el sistema de archivos utilizando cd, ls y pwd.
2. Crear, mover, copiar y eliminar carpetas y archivos.
3. Usar comandos útiles para explorar y gestionar archivos.
Tareas para practicar
1. Crea una estructura de carpetas con al menos tres niveles de profundidad.
2. Crea varios archivos dentro de estas carpetas y practica copiarlos, moverlos y
eliminarlos.
3. Busca todos los archivos con la extensión .txt en tu directorio personal usando
find.
Capítulo 3: Trabajar con Procesos y Administrar Recursos en Linux
Objetivo
Este capítulo te enseñará cómo trabajar con procesos y administrar los recursos del
sistema en Linux. Al finalizar este capítulo, serás capaz de:
1. Comprender qué son los procesos y su ciclo de vida.
2. Identificar los procesos que se están ejecutando en el sistema.
3. Supervisar el uso de recursos del sistema utilizando herramientas como top y
htop.
4. Gestionar procesos: detener, reiniciar o cambiar su prioridad.
Parte 1: Conceptos básicos sobre procesos
Un proceso en Linux es una instancia en ejecución de un programa. Los procesos tienen
un ciclo de vida que incluye:
• Creación: Un proceso padre crea un nuevo proceso.
• Ejecución: El proceso se ejecuta hasta completarse o ser detenido.
• Terminación: El proceso finaliza y libera sus recursos.
Propiedades principales de un proceso
Cada proceso en Linux tiene atributos clave:
• PID (Process ID): Identificador único del proceso.
• PPID (Parent Process ID): Identificador del proceso padre.
• Estado: Indica si el proceso está activo, en espera o detenido.
• Prioridad: Determina el acceso del proceso a la CPU.
Parte 2: Listar procesos
El comando ps se usa para listar procesos en ejecución.
Ejercicio 1: Mostrar procesos básicos
1. Escribe el siguiente comando para listar los procesos asociados a tu sesión:
$ ps
Salida esperada:
PID TTY TIME CMD
1234 pts/0 00:00:00 bash
1235 pts/0 00:00:00 ps
o PID: Identificador del proceso.
o TTY: Terminal asociada al proceso.
o TIME: Tiempo de CPU consumido.
o CMD: Comando que inició el proceso.
2. Para listar todos los procesos en el sistema, usa:
$ ps aux
Salida parcial esperada:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
COMMAND
root 1 0.0 0.1 169600 12100 ? Ss 09:00 0:01
systemd
usuario 1234 0.1 0.2 48500 17000 pts/0 Ss 09:10 0:00
bash
o USER: Usuario que ejecuta el proceso.
o %CPU y %MEM: Uso de CPU y memoria.
o STAT: Estado del proceso (R corriendo, S en espera, Z zombi).
Ejercicio 2: Buscar procesos específicos
1. Busca un proceso por su nombre (por ejemplo, bash):
$ ps aux | grep bash
Parte 3: Supervisar recursos del sistema
El comando top proporciona una vista dinámica de los procesos y recursos del sistema.
Ejercicio 3: Usar el comando top
1. Escribe el siguiente comando para abrir top:
$ top
Salida inicial esperada:
top - 09:15:45 up 10 min, 1 user, load average: 0.01, 0.04,
0.05
Tasks: 90 total, 1 running, 89 sleeping, 0 stopped, 0
zombie
%Cpu(s): 0.5 us, 0.2 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi,
0.0 si, 0.0 st
MiB Mem : 3932.0 total, 1300.0 free, 1400.0 used, 1232.0
buff/cache
MiB Swap: 2048.0 total, 2000.0 free, 48.0 used. 2500.0
avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM
TIME+ COMMAND
1 root 20 0 169600 12100 9500 S 0.0 0.1
0:01.00 systemd
123 usuario 20 0 48500 17000 5000 S 0.1 0.2
0:00.10 bash
o Load average: Carga promedio del sistema en 1, 5 y 15 minutos.
o Tasks: Número de procesos en ejecución, durmiendo, detenidos y
zombis.
o %CPU y %MEM: Uso de CPU y memoria.
o PR: Prioridad del proceso.
o NI: Valor de nice del proceso (relación con la prioridad).
o S: Estado del proceso (R corriendo, S durmiendo).
2. Sal de top presionando q.
Comando adicional: htop
htop es una alternativa visual a top. Para instalarlo:
$ sudo apt install htop
Ejecuta:
$ htop
Usa las teclas de flecha para navegar y F9 para matar un proceso.
Parte 4: Gestionar procesos
Puedes interactuar con los procesos usando comandos como kill, nice y renice.
Ejercicio 4: Detener un proceso
1. Encuentra el PID del proceso que deseas detener (usa ps aux o top).
2. Detén el proceso con:
$ kill PID
Por ejemplo, para detener un proceso con PID 1234:
$ kill 1234
3. Si el proceso no responde, usa SIGKILL:
$ kill -9 PID
Ejercicio 5: Cambiar la prioridad de un proceso
1. Ejecuta un comando con baja prioridad usando nice:
$ nice -n 10 sleep 100
Explicación:
o -n 10: Asigna una prioridad baja al proceso.
o sleep 100: Simula un proceso que espera durante 100 segundos.
2. Cambia la prioridad de un proceso existente con renice:
$ renice -n -5 -p PID
Nota: Solo el administrador o el propietario del proceso pueden cambiar
prioridades.
Parte 5: Supervisión avanzada con herramientas adicionales
Además de top y htop, existen herramientas especializadas para monitorear recursos:
Comando free
Muestra el estado de la memoria RAM y el swap:
$ free -h
Salida esperada:
total used free shared buff/cache
available
Mem: 3.8Gi 1.4Gi 1.0Gi 0.1Gi 1.4Gi
2.1Gi
Swap: 2.0Gi 0.0Gi 2.0Gi
Comando df
Muestra el uso del disco:
$ df -h
Salida esperada:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 10G 40G 20% /
Comando uptime
Muestra cuánto tiempo ha estado encendido el sistema:
$ uptime
Resumen del capítulo
En este capítulo, aprendiste a:
1. Identificar y listar procesos usando ps, top y htop.
2. Supervisar el uso de recursos como CPU y memoria.
3. Gestionar procesos: detenerlos, cambiar prioridades y reiniciarlos.
4. Utilizar herramientas para monitorear recursos del sistema como free, df y
uptime.
Tareas para practicar
1. Usa top para identificar los procesos que consumen más CPU y memoria.
2. Ejecuta un programa con alta prioridad usando nice.
3. Crea un proceso en segundo plano que consuma tiempo de CPU (por ejemplo,
un cálculo) y practique detenerlo con kill.
Capítulo 4: Trabajar con Usuarios y Automatizar Tareas en Linux
Objetivo
Este capítulo te enseñará a gestionar usuarios y automatizar tareas utilizando scripts
básicos en Bash. Al finalizar este capítulo, serás capaz de:
1. Crear y gestionar usuarios en el sistema.
2. Administrar permisos y grupos de usuarios.
3. Crear scripts Bash básicos para realizar tareas automatizadas.
4. Programar la ejecución de scripts y comandos con el planificador cron.
Parte 1: Gestión de usuarios
Linux permite crear y administrar usuarios mediante comandos como useradd, passwd
y usermod.
Ejercicio 1: Crear un nuevo usuario
1. Crea un nuevo usuario llamado estudiante:
$ sudo useradd -m estudiante
Explicación:
o -m:
Crea un directorio personal en /home/estudiante.
2. Asigna una contraseña al usuario:
$ sudo passwd estudiante
3. Verifica la creación del usuario listándolo en el archivo /etc/passwd:
$ cat /etc/passwd | grep estudiante
Ejercicio 2: Modificar un usuario
1. Cambia el nombre del usuario estudiante a alumno:
$ sudo usermod -l alumno estudiante
2. Cambia el directorio personal de alumno:
$ sudo usermod -d /home/alumno -m alumno
Ejercicio 3: Eliminar un usuario
Elimina el usuario alumno y su directorio personal:
$ sudo userdel -r alumno
Parte 2: Administración de permisos y grupos
Grupos en Linux
Los grupos son colecciones de usuarios que comparten permisos sobre recursos
específicos. Cada usuario puede pertenecer a varios grupos.
Ejercicio 4: Crear y gestionar grupos
1. Crea un grupo llamado estudiantes:
$ sudo groupadd estudiantes
2. Añade un usuario al grupo:
$ sudo usermod -aG estudiantes estudiante
3. Verifica los grupos del usuario:
$ groups estudiante
4. Cambia el grupo principal de un usuario:
$ sudo usermod -g estudiantes estudiante
Parte 3: Introducción a los scripts Bash
Un script Bash es un archivo que contiene una secuencia de comandos para ejecutar
tareas automáticamente.
Ejercicio 5: Crear y ejecutar un script
1. Crea un archivo llamado [Link]:
$ nano [Link]
2. Escribe el siguiente contenido en el archivo:
#!/bin/bash
echo "Hola, bienvenido al sistema Linux"
date
Explicación:
o #!/bin/bash: Indica que el script se ejecutará en Bash.
o echo: Muestra un mensaje en la terminal.
o date: Muestra la fecha y hora actuales.
3. Guarda y cierra el archivo. Luego, hazlo ejecutable:
$ chmod +x [Link]
4. Ejecuta el script:
$./[Link]
Parte 4: Automatizar tareas con cron
cron es un planificador que permite ejecutar comandos o scripts en horarios específicos.
Ejercicio 6: Crear un trabajo cron
1. Abre el editor de trabajos cron:
$ crontab -e
2. Añade la siguiente línea al archivo para ejecutar [Link] cada minuto:
* * * * * /ruta/completa/[Link]
3. Guarda y cierra el archivo.
4. Verifica los trabajos cron:
crontab -l
5. Para detener el trabajo cron, elimina o comenta la línea en crontab -e.
Formato de cron
El formato de las tareas cron tiene cinco campos:
Minuto (0-59) Hora (0-23) Día del mes (1-31) Mes (1-12) Día de la
semana (0-7)
Por ejemplo:
• 0 12 * * *: Ejecuta a las 12:00 todos los días.
• 0 8 * * 1: Ejecuta a las 8:00 todos los lunes.
Parte 5: Buenas prácticas para escribir scripts
1. Usa comentarios: Documenta el propósito de tu script.
2. # Este script genera un informe del sistema
3. Verifica errores: Usa if para manejar errores.
4. if [ $? -eq 0 ]; then
5. echo "El comando se ejecutó correctamente"
6. else
7. echo "Hubo un error"
8. fi
9. Usa variables: Define valores reutilizables.
10. NOMBRE="estudiante"
11. echo "Hola, $NOMBRE"
12. Recoge entradas del usuario:
13. read -p "Introduce tu nombre: " NOMBRE
14. echo "Hola, $NOMBRE"
Resumen del capítulo
En este capítulo, aprendiste a:
1. Crear, modificar y eliminar usuarios y grupos en Linux.
2. Gestionar permisos y añadir usuarios a grupos.
3. Crear scripts básicos en Bash para automatizar tareas.
4. Programar scripts y comandos con cron.
Tareas para practicar
1. Crea un script Bash que genere un informe con:
o El nombre del usuario actual.
o La fecha y hora actuales.
o El uso de disco (df -h).
o Los procesos que consumen más CPU (ps aux --sort=-%cpu | head
-n 5).
2. Programa el script anterior para ejecutarse diariamente a las 8:00 usando cron.