Comandos y permisos en Linux: shells, umask, usuarios, procesos y servicios
Ejercicios prácticos de administración en Linux
Ejercicio A
Al ejecutar cat /etc/shells se muestran todos los intérpretes de comandos (shells) disponibles en el sistema. Este archivo contiene una lista de todas las shells instaladas.
PASOS:
- Ejecutar:
echo $SHELL - Resultado: ruta completa del shell actual (ej.:
/bin/bash) - También:
echo $0
Ejercicio B
Al ejecutar umask sin argumentos aparece un número de 4 dígitos (ej.: 0022) que representa la máscara de permisos por defecto.
Afecta a:
- Permisos de archivos nuevos creados
- Permisos de directorios nuevos creados
Ejemplos de uso:
umask 0077— archivos nuevos más restrictivos (solo propietario)umask 0022
Ejercicio C
- tty2: Terminal física / consola de texto. Accesos mediante Ctrl+Alt+F1, F2, etc. Se considera login shell.
- pts0: Pseudo-terminal esclava. Terminales abiertas desde el entorno gráfico. Se considera no-login shell (hereda el entorno de la sesión gráfica).
Ejercicio D
Origen: Directorio /etc/skel.
Característica: Son ficheros ocultos que comienzan con punto (.).
Ejemplo: .profile
Ejercicio E
Ubicación: Carpeta /usr/sbin/.
Significado: Es un intérprete de comandos especial que impide el acceso al terminal a un usuario. Cuando se asigna como shell, el usuario NO puede iniciar sesión interactiva.
Uso típico: Se asigna a cuentas del sistema (usuarios de servicio / demonios) para evitar que puedan hacer login.
Ejercicio F
Fichero: /etc/shadow
- ! = Cuenta deshabilitada o sin contraseña válida
- * = Cuenta deshabilitada
- Cadena larga = Contraseña cifrada irreversiblemente (SHA, MD5, bcrypt, etc.)
Algoritmos: Los primeros caracteres de la cadena indican el método: por ejemplo, $6 = SHA-512, $2 = bcrypt (existen variantes como $2a, $2b, $2y).
Ejercicio G
Un usuario puede pertenecer a:
- 1 grupo principal (obligatorio)
- Múltiples grupos secundarios (sin límite)
Un grupo puede contener:
- Múltiples usuarios
- NUNCA otros grupos (solo usuarios)
Ejercicio H
Permisos necesarios: 1733 (notación octal)
Explicación:
- 1 = Sticky bit (evita eliminación de archivos ajenos)
- 7 = Propietario (jeferrhh):
rwx - 3 = Grupo (rrhh):
-wx - 3 = Otros:
-wx
Comandos:
sudo chown jeferrhh:rrhh /ccvvsudo chmod 1733 /ccvv
Alternativa simbólica: sudo chmod u=rwx,g=wx,o=wx,+t /ccvv
Verificación: drwx-wxrwxt.
Ejercicio I
Análisis de permisos:
-rws r-x r-x
- «-» = archivo regular
- rws = propietario (root): lectura, escritura y setuid (s)
- r-x = grupo: lectura y ejecución
- r-x = otros: lectura y ejecución
Notación octal: 4755 (donde 4 indica setuid)
Comandos ejecutados: sudo chmod 4755 /usr/lib/cbox
Permite ejecutar cbox con permisos de root.
Ejercicio J
Paso 1: Crear grupo desarrollo
sudo groupadd desarrollo
Paso 2: Crear usuarios
sudo adduser jddevsudo adduser dev1sudo adduser dev2
Paso 3: Añadir usuarios al grupo desarrollo
sudo usermod -a -G desarrollo jddevsudo usermod -a -G desarrollo dev1sudo usermod -a -G desarrollo dev2
Paso 4: Crear directorios
sudo mkdir -p /desarrollo/devsudo mkdir -p /desarrollo/mkt
Paso 5: Configurar /desarrollo/dev
- Propietario:
jddev - Grupo:
desarrollo - Permisos:
770(rwxrwx---) sudo chown jddev:desarrollo /desarrollo/devsudo chmod 770 /desarrollo/dev
Paso 6: Configurar /desarrollo/mkt
- Propietario:
jddev - Grupo:
desarrollo - Permisos:
775(rwxrwxr-x) para que otros puedan leer sudo chown jddev:desarrollo /desarrollo/mktsudo chmod 775 /desarrollo/mkt
2RA2 Ejercicio A
Herramientas gráficas:
- lxtask (Gestor de tareas):
sudo apt install lxtask– Analiza programas en ejecución (similar al Administrador de tareas de Windows). - GNOME System Monitor (Monitor del sistema):
sudo snap install gnome-system-monitor– Monitoriza procesos y permite acciones sobre ellos.
Estados NO deseables: D (Uninterruptible Sleep – letargo no interrumpible) y Z (Zombie).
Ejercicio B
OPCIÓN 1: Con top
OPCIÓN 2: Directamente con top -o MEM
OPCIÓN 3: Con ps: ps aux --sort=-%mem
OPCIÓN 4: Con la tecla Shift en top (ordenar).
Ejercicio C
Objetivo: Reducir prioridad de app1
- Paso 1: Obtener el PID de
app1:pidof app1ops aux | grep app1 - Paso 2: Asignar prioridad mínima (nice = 19):
sudo renice -n 19 1234(ejemplo) - Paso 3: Verificar:
ps -l -p 1234
Ejercicio D
Uso: el comando trap captura señales en scripts bash y ejecuta acciones específicas en respuesta.
Limitaciones:
SIGKILL(señal 9) NO se puede atraparSIGSTOP(señal 19) NO se puede atrapar- Solo funcionan con señales capturables
Ejercicio E
¿Qué es &? Operador que envía un proceso a ejecución en segundo plano (background).
Objetivo:
- El shell sigue aceptando nuevos comandos mientras el proceso se ejecuta.
- Proceso padre y proceso hijo se ejecutan concurrentemente.
- El shell NO espera a que termine el proceso hijo.
Ejercicio F
Comando ejecutado: jobs
Letra que identifica el estado de los procesos (campo STAT):
- Comandos 1, 2, 3 (Ejecutando):
R(Running) - Comando 4 (Detenido):
T(Stopped)
Ejercicio G
Del proceso rkkit-daemon podemos decir: es un proceso demonio / servicio que:
- Se ejecuta en segundo plano
- No tiene interfaz de usuario (aparece ? en
ps aux) - No utiliza entradas/salidas estándar
- Se comunica mediante archivos de registro (logs)
- Generalmente ejecutado por el sistema o
root - Es un proceso no interactivo
- Proporciona funcionalidad de soporte al sistema
Ejercicio H
¿Qué harías? Crear un archivo de servicio para systemd que inicie pegasus durante el arranque (boot).
¿Por qué?
systemdes el sistema de inicialización moderno en Linux.- Permite gestionar servicios de forma centralizada.
- Garantiza ejecución automática al arrancar.
- Control sencillo (start, stop, restart, status).
PASOS:
- Paso 1: Crear archivo de servicio: crear
/etc/systemd/system/pegasus.service - Paso 2: Recargar configuración:
sudo systemctl daemon-reload - Paso 3: Habilitar para boot:
sudo systemctl enable pegasus - Paso 4: Verificar:
sudo systemctl status pegasus
3RA2 Ejercicio A
Comando su (switch user / substitute user): uso para cambiar a otro usuario o a root sin cerrar la sesión actual.
Comando sudo (super user do): uso para ejecutar un comando específico con permisos de root.
Comando sudo su: ejecutar su con permisos de root (obtener un shell de root).
Ejercicio B
Comando para administrar servicios: systemctl
Editar /etc/sudoers: editar con sudo visudo y agregar al final (ejemplo de alias y regla):
# Alias de usuarios User_Alias ADMINS = admin1, admin2 # Alias de hosts Host_Alias SERVERS = host1, host2 # Alias de comandos para administrar servicios Cmnd_Alias SRVMGMT = /bin/systemctl # Regla: Los usuarios ADMINS pueden ejecutar SRVMGMT en SERVERS ADMINS SERVERS = (root) SRVMGMT
