Comandos esenciales para la gestión de usuarios, permisos y procesos en Linux

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,72 KB

Bloque 1: Usuarios, permisos y configuraciones iniciales

Ejercicio 1A

Muestra los intérpretes de comandos (shells) válidos que existen en el sistema ejecutando el comando echo $SHELL.

Ejercicio 1B

Muestra la máscara de permisos por defecto (umask). Esta máscara afecta a los permisos que se asignan automáticamente a los archivos y directorios cuando se crean. Ejemplo: umask 0002.

Ejercicio 1C

tty2: Identifica una terminal asociada a un login shell (sesión iniciada autenticándote por consola).

pts/0: Identifica una terminal asociada a un no-login shell (sesión que no requiere autenticarse).

Ejercicio 1D

Se copian desde el directorio /etc/skel. Es una plantilla que define configuraciones de aspecto del escritorio, permisos por defecto y variables de entorno. El fichero .profile se utiliza durante el inicio de sesión para establecer variables de entorno (por ejemplo PATH) y configuraciones para toda la sesión.

Ejercicio 1E

La información se encuentra en /etc/passwd. Cuando una cuenta no puede iniciar sesión en el sistema se suele indicar mediante un shell de cierre o una marca que impide el acceso.

Ejercicio 1F

En el fichero /etc/shadow:

  • El carácter * indica que la cuenta está deshabilitada o es de sistema.
  • El carácter ! indica ausencia de contraseña o que la cuenta está bloqueada.

Ejercicio 1G

Un usuario debe pertenecer obligatoriamente a un grupo principal y puede pertenecer a más de un grupo (grupos secundarios). Los grupos pueden contener varios usuarios, pero nunca podrán contener a otros grupos.

Ejercicio 1H

Ejemplo de comandos para crear y ajustar permisos de un directorio compartido:

sudo mkdir /ccvv
sudo chown jefe_rrhh:rrhh /ccvv
sudo chmod 1777 /ccvv

Explicación: el modo 1777 establece permisos amplios con el sticky bit activado para evitar que usuarios borren ficheros ajenos.

Ejercicio 1I

Ejemplo que activa el bit SUID:

sudo chmod u+s /usr/lib/cbox

Implica que el bit SUID está activado; esto significa que cuando cualquier usuario ejecute este archivo, el proceso se ejecutará con los privilegios del propietario del archivo y no con los del usuario que lo lanza.

Ejercicio 1J

Ejemplo de creación de grupo, usuarios y directorios con permisos específicos:

sudo groupadd desarrollo
sudo useradd -m -g desarrollo jd_dev
sudo useradd -m -g desarrollo jd_dev1
sudo useradd -m -g desarrollo jd_dev2
sudo mkdir -p /desarrollo/dev
sudo mkdir -p /desarrollo/mkt
sudo chown jd_dev:desarrollo /desarrollo/dev
sudo chmod 770 /desarrollo/dev
sudo chown jd_dev:desarrollo /desarrollo/mkt
sudo chmod 775 /desarrollo/mkt

Bloque 2: Gestión de procesos y tareas

Ejercicio 2A

Herramientas de monitorización: el gestor de tareas lxtask y el monitor de sistema. Estados de procesos:

  • Zombie (z): proceso finalizado cuya entrada no se ha eliminado de la tabla de procesos.
  • Stopped (t): proceso detenido que no está ejecutándose en CPU.

Ejercicio 2B

Dentro del comando top, para ordenar por uso de memoria se usa la tecla M.

Ejercicio 2C

Para averiguar el PID de un proceso llamado app_1 y cambiar su prioridad:

ps -C app_1
sudo renice -n 19 PID

Ejercicio 2D

El shell permite capturar señales con trap. Las señales SIGKILL y SIGSTOP deben atenderse por el kernel: no se pueden atrapar ni ignorar.

Ejemplo de captura de señal SIGINT:

trap 'echo proceso $$ ignora la señal SIGINT' SIGINT

Ejercicio 2E

La variable especial $? almacena el valor de retorno de un proceso tras su ejecución. Permite saber si el proceso finalizó correctamente (generalmente 0) o si hubo algún error (distinto de 0).

Ejemplo: al ejecutar grep usuario_falso /etc/passwd, como no lo encuentra, al hacer echo $? devolverá 1.

Ejercicio 2F

Comando para listar trabajos en segundo plano: jobs.

  • El signo + identifica el trabajo actual que se llevaría a primer plano con fg.
  • El signo - identifica el trabajo anterior.

Ejercicio 2G

Estados y características: procesos en sleeping, procesos con baja prioridad, procesos líderes de sesión y procesos multihilo; estos términos se usan para describir distintos comportamientos y atributos de los procesos.

Ejercicio 2H

Crear un archivo de servicio para systemd que inicie pegasus durante el boot. Systemd es el sistema de inicialización moderno en Linux y permite gestionar servicios (arranque, parada, reinicio y dependencias).

Bloque 3: Privilegios, sudo y configuración de archivos sudoers

Ejercicio 3A

Comparativa de comandos de elevación de privilegios:

  • su: permite usar el intérprete de comandos de otro usuario sin cerrar sesión (puede cambiar a root o a otro usuario).
  • sudo: permite a usuarios autorizados ejecutar programas con los privilegios de seguridad de otro usuario de manera temporal (normalmente root).
  • sudo su: ejecuta el comando su con privilegios elevados (comúnmente usado para obtener una sesión root).

Ejercicio 3B

Editar el fichero sudoers de forma segura con:

sudo visudo

Ejemplo de alias y reglas en sudoers:

User_Alias ADMINISTRADORES = admin1, admin2
Host_Alias SERVIDORES = host1, host2
Cmnd_Alias GESTION_SERVICIOS = /usr/bin/systemctl
ADMINISTRADORES SERVIDORES = (root) GESTION_SERVICIOS

Notas finales

  • Conservar buenas prácticas de seguridad al asignar permisos (especialmente SUID y permisos de escritura en directorios compartidos).
  • Comprobar siempre los ficheros /etc/passwd y /etc/shadow al gestionar cuentas, y usar visudo para evitar errores en sudoers.
  • Usar systemd para gestionar servicios y garantizar el arranque automático cuando sea necesario.

Entradas relacionadas: