El sistema Unix es un sistema operativo multiusuario. Linux está basado en el sistema Unix. Para que múltiples usuarios puedan hacer uso del sistema de una forma segura y ordenada, es necesario que el sistema disponga de mecanismos de administración y seguridad para proteger los datos de cada usuario, así como para proteger y asegurar el correcto funcionamiento del sistema.

Cuentas de usuario

Para poder utilizar el sistema operativo Unix es necesario disponer de una cuenta de usuario que se compone de nombre de usuario (login) y de contraseña (password). Las cuentas de usuario son creadas por el administrador que en Unix es un usuario especial llamado root (ver más abajo). Los usuarios deberán pertenecer al menos a un grupo de usuarios ya que obligatoriamente deben tener asignado un grupo principal o grupo primario. 

Cuando un usuario entra en un sistema Unix, debe identificarse indicando su nombre de usuario (en inglés login) y su contraseña (en inglés password). Si se equivoca al introducir su nombre o su contraseña, el sistema le denegará el acceso y no podrá entrar.

Inicio de sesión en Linux

Una vez se haya identificado de forma satisfactoria, el usuario podrá utilizar el sistema y ejecutar todas las aplicaciones que le sean permitidas, así como leer, modificar o borrar aquellos archivos sobre los cuales tenga permiso.

Las cuentas de usuario no solo ofrecen al usuario un nombre y una contraseña, también le proporciona una ruta para almacenar sus documentos y su perfil, generalmente dentro de la carpeta /home/nombre-usuario y comunmente denominada carpeta home del usuario, y un intérprete de comandos (shell) que le permitirá ejecutar aplicaciones.

Cuando el usuario ejecuta una aplicación, el sistema carga la aplicación en memoria y la ejecuta. En el argot informático a las aplicaciones que se están ejecutando en un momento determinado se les denomina procesos. Los procesos en ejecución pertenecen a algún usuario. El sistema asigna a los procesos el usuario que los ejecuta. Ejemplo, si el usuario "pepe" ejecuta la aplicación "konqueror", en la lista de procesos del sistema aparecerá un nuevo proceso llamado "konqueror" cuyo propietario es "pepe". Obligatoriamente, todos los procesos del sistema pertenecen a algún usuario. Ejecutando el comando 'ps aux' podemos ver todos los procesos en ejecución. Si ejecutamos el comando 'top' lo veremos a tiempo real.


Mostrando procesos con top. La segunda columna indica el propietario

Cuando se crea un nuevo archivo, el propietario del archivo será el usuario que lo ha creado y el grupo del archivo será el grupo principal de dicho usuario. Ejemplo, si "pepe" cuyo grupo principal es "profes" crea un nuevo archivo llamado examen.txt, el propietario de examen.txt será "pepe" y el grupo propietario será "profes", o lo que es lo mismo, el archivo pertenecerá al usuario pepe y al grupo profes. Obligatoriamente, todos los archivos del sistema pertenecen a algún usuario y a algún grupo.


El archivo examen.txt pertenece al usuario pepe y al grupo profes

La cuenta de usuario le permite acceder al sistema tanto de forma presencial (sentado delante del ordenador) como de forma remota accediendo desde otro equipo por la red. Los permisos que tiene el usuario cuando utiliza el sistema presencialmente son los mismos que tiene cuando lo hace remotamente. Lo habitual es utilizar el sistema de forma remota ya que al ser Unix un sistema multiusuario, la única forma de que varios usuarios lo utilicen de forma simultánea es remotamente.

El sistema Unix codifica los usuarios con un número diferente a cada uno que es el identificador de usuario (uid = User IDentifier). Internamente el sistema trabaja con el uid, no con el nombre del usuario. Normalmente a los usuarios que creemos se les asignan uids desde 1000 en adelante. Los números uid menores que 100 se reservan para usuarios especiales del sistema.

En Unix, por defecto, la información de los usuarios de un sistema se guarda en el archivo /etc/passwd. Es un archivo de texto que puede visualizarse con cualquier editor. Cada linea del archivo /etc/passwd almacena los parámetros de un usuario. Solo puede modificarlo el administrador (root). A continuación mostramos el archivo passwd:


Volcado del archivo /etc/passwd


Las contraseñas de cada usuario se guardan encriptadas con un sistema de codificación irreversible, en el archivo /etc/shadow que también es un archivo de texto.


Volcado del archivo /etc/shadow

Grupos de usuarios

Para poder administrar los permisos de los usuarios de una forma más flexible, el sistema Unix permite la organización de usuarios en grupos y establecer permisos a los grupos. Ejemplo, si en un centro educativo el grupo "profesores" tiene acceso a ciertas carpetas, cuando demos de alta un profesor nuevo, tan solo tendremos que añadirle al grupo "profesores" para que pueda acceder a todas esas carpetas. Es lo que se denomina administración de permisos por grupos.

Todos los usuarios pertenecen al menos a un grupo que es el grupo principal del usuario, también llamado grupo primario del usuario, pero pueden pertenecer a más grupos. En caso de que pertenezcan a más grupos, éstos serán grupos secundarios.

Todo usuario debe pertenecer a un grupo principal obligatoriamente

Los grupos pueden contener varios usuarios. Los grupos de usuarios solo pueden contener usuarios, nunca podrán contener a otros grupos.

El sistema Unix codifica los grupos de usuarios con un número diferente a cada uno que es el identificador de grupo (gid = Group IDentifier). Internamente el sistema trabaja con el gid, no con el nombre del grupo. Normalmente a los grupos que creemos se les asignan gids desde 1000 en adelante. Los números gid menores que 100 se reservan para grupos especiales del sistema.

En Unix por defecto, la información de los grupos de un sistema se guarda en el archivo /etc/group. Es un archivo de texto que puede visualizarse con cualquier editor. Cada línea del archivo /etc/group almacena los parámetros del grupo y los usuarios que contiene. Solo puede modificarlo el administrador (root). Las contraseñas de los grupos se guardan encriptadas con un sistema de codificación irreversible, en el archivo /etc/gshadow que también es un archivo de texto.


Usuario root

El usuario root, a veces llamado superusuario, es el usuario administrador del sistema. Está identificado con el número de usuario cero (uid=0) y tiene permisos sobre todo el sistema sin ningún tipo de restricción. El usuario root puede acceder a cualquier archivo, ejecutar, instalar y desinstalar cualquier aplicación, modificar los archivos de configuración del sistema y administrar usuarios. Si dispones de la contraseña de root tendrás control total sobre todo el sistema. 
Pregunta Verdadero-Falso
¿Se pueden descifrar las contraseñas almacenadas en el archivo /etc/shadow?
Verdadero Falso