Administración de Usuarios en Linux
Tipos de Usuarios
Usuario Root (Superusuario)
- También llamado superusuario o administrador.
- Su UID (User ID) es 0 (cero).
- Es la única cuenta de usuario con privilegios sobre todo el sistema.
- Acceso total a todos los archivos y directorios, con independencia de propietarios y permisos.
- Controla la administración de cuentas de usuarios.
- Ejecuta tareas de mantenimiento del sistema.
- Puede detener el sistema.
- Instala software en el sistema.
- Puede modificar o reconfigurar el kernel, controladores, etc.
Usuarios Especiales (Cuentas del Sistema)
- Ejemplos: bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache, etc.
- Generalmente se les asigna un UID entre 1 y 1000 (definido en
/etc/login.defs), salvo para el usuario nobody al que se le asigna el último UID posible, el 65534. - Se les llama también cuentas del sistema.
- No tienen todos los privilegios del usuario root, pero dependiendo de la cuenta, asumen distintos privilegios de root. Esto se hace para proteger al sistema de posibles formas de vulnerar la seguridad.
- No tienen contraseñas, pues son cuentas que no están diseñadas para iniciar sesiones con ellas. También se les conoce como cuentas de «no inicio de sesión» (nologin).
- Se crean (generalmente) automáticamente al momento de la instalación de Linux o de la aplicación.
Usuarios Normales
- Se usan para usuarios individuales.
- En las distribuciones actuales de Linux se les asigna generalmente un UID superior a 1000, aunque es configurable.
- Cada usuario dispone de un directorio de trabajo, ubicado generalmente en
/home. - Cada usuario puede personalizar su entorno de trabajo.
- Tienen solo privilegios completos en su directorio de trabajo o HOME.
- Recomendación de Seguridad: Es siempre mejor trabajar como un usuario normal en vez del usuario root, y cuando se requiera hacer uso de comandos solo de root, utilizar el comando
su.
Archivos de Configuración Clave para Usuarios
El archivo /etc/passwd
Este archivo contiene la información esencial de las cuentas de usuario. Sus campos están separados por dos puntos (:):
- Nombre del usuario: Identificador de inicio de sesión (login). Tiene que ser único.
- Contraseña: La ‘x’ indica la contraseña encriptada del usuario, además también indica que se está haciendo uso del archivo
/etc/shadow. Si no se hace uso de este archivo, este campo contendría el hash de la contraseña (ejemplo: ‘ghy675…’). - UID (User ID): Número de identificación del usuario. Tiene que ser único. 0 para root. Generalmente, las cuentas o usuarios especiales se numeran del 1 al 1000 y las de usuario normal de 1000 en adelante.
- GID (Group ID): Identificación del grupo principal del usuario. El que aparece es el número de grupo principal del usuario, pero puede pertenecer a otros; esto se configura en
/etc/group. 0 para root. - Comentarios: O el nombre completo del usuario.
- Directorio de trabajo (Home): Donde se sitúa al usuario después del inicio de sesión.
- Shell: La shell que va a utilizar el usuario de forma predeterminada.
El archivo /etc/shadow
Este archivo almacena las contraseñas cifradas y la información de caducidad de las cuentas:
- Nombre de la cuenta de usuario.
- Contraseña cifrada.
- Días desde el último cambio: Número de días que han pasado desde el 1 de enero de 1970 hasta que se cambió por última vez la contraseña.
- Días mínimos para cambiar: Número de días que deben transcurrir hasta que la contraseña se pueda volver a cambiar. Un 0 indica que se puede cambiar ya.
- Días máximos para cambiar: Número de días tras los cuales hay que cambiar la contraseña. (-1 significa nunca). A partir de este dato se obtiene la fecha de expiración de la contraseña. 99999 es lo máximo que se puede poner.
- Días de advertencia: Número de días antes de la expiración de la contraseña en que se le avisará al usuario al inicio de la sesión.
- Días de inhabilitación: Días después de la expiración en que la contraseña se inhabilitará, si es que no se cambia.
- Fecha de caducidad de la cuenta: Se expresa en días transcurridos desde el 1 de enero de 1970. Si el campo está en blanco, la cuenta no expira nunca.
- Reservado: Para usos en el futuro.
Otros Archivos de Configuración y Comandos
/etc/gshadow- Fichero donde se guardan las contraseñas de los grupos del sistema.
/etc/default/useradd- Contiene los valores por defecto a la hora de añadir un usuario al sistema con el comando
useradd. /etc/adduser.conf- Contiene los valores por defecto cuando se añaden usuarios con el comando
adduser. /etc/deluser.conf- Contiene los valores por defecto cuando se eliminan usuarios con el comando
deluser. /etc/login.defs- En este archivo de configuración están definidas las variables que controlan los aspectos de la creación de usuarios y de los campos de
shadowusadas por defecto. /etc/shells- El fichero de shells contiene una lista de shells válidas.
Comandos de Gestión de Usuarios
useradd: Es el comando que permite añadir nuevos usuarios al sistema desde la línea de comandos.adduser: Añade usuarios al sistema. También añade un usuario existente a un grupo que exista previamente en el sistema.
Gestión y Ciclo de Vida de Procesos
Estados Fundamentales de los Procesos
Modelo de Cinco Estados
Los cinco estados de este diagrama son los siguientes:
- Nuevo (NEW): El proceso recién fue creado y todavía no fue admitido por el sistema operativo en el grupo de procesos ejecutables. En general, los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.
- Listo (READY): El proceso está listo para ser ejecutado, solo está esperando que el planificador así lo disponga (estará en una cola de preparados).
- Ejecución (RUNNING / R): El proceso está siendo atendido por la CPU, es decir, está en ejecución.
- Bloqueado (BLOCKED): El proceso no puede ejecutar hasta que no se produzca cierto suceso, como una operación de Entrada/Salida (E/S).
- Terminado (FINISH): El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección o aritmético.
- Defunct (Zombie): Un proceso que ha sido excluido por el SO del grupo de procesos ejecutables, pero cuya entrada en la tabla de procesos aún existe, esperando que el proceso padre recoja su estado de salida.
Modelo de Tres Estados
Si todos los procesos estuvieran siempre listos para ejecutarse, entonces la disciplina de colas propuesta en el modelo de dos estados sería eficaz. La cola es una lista FIFO y el procesador opera según un turno rotatorio (round-robin). A cada proceso de la cola se le otorga una cierta cantidad de tiempo para ejecutarse y luego vuelve a la cola, a menos que se bloquee.
Sin embargo, esta implementación no es del todo adecuada, ya que algunos procesos en el estado de no ejecución están listos para ejecutarse, mientras que otros están bloqueados esperando que termine una operación de E/S. Los tres estados principales son:
- Ejecutando.
- Listos para la ejecución.
- Bloqueados por alguna razón.
