Usuarios y Grupos

Aunque los usuarios utilizan un nombre de usuario para identificarse fácilmente, internamente UNIX representa a cada usuario por un número: el identificador de usuario (UID). Aunque no es necesario, el UID suele ser único.

El UID suele ser un número entero de 16 bits sin signo, con valores comprendidos entre 0 y 65535. Normalmente los UIDs comprendidos entre 0 y 9 ser reservan para funciones del sistema o usuarios especiales como root, ftp, news, etc. Los UIDs de usuario suelen estar comprendidos entre 20 y 100 salvo en sistemas de gran tamaño. La relación entre los UIDs y el resto de información sobre el usuario se almacena en el fichero /etc/passwd.

Además, cada usuario en UNIX pertenece a uno o más grupos. Los grupos tienen un nombre de grupo y también un número de identificación (GID). Los grupos se usan para reunir usuarios relacionados de algún modo. Por ejemplo separando departamentos, agrupando a los alumnos de distintas titulaciones, etc. Además, los grupos permiten tratar de modo distintos a los miembros de cada uno en cuanto a sus permisos de acceso a ficheros y directorios.

El grupo asociado a cada usuario en el fichero /etc/passwd se denomina grupo primario, pero cada usuario puede pertenecer a más de un grupo. El fichero /etc/group contiene información sobre los distintos grupos y sus integrantes.

Ejemplo

root::0:root

bin::2:root,bin

daemon::5:root,daemon

mail::6:root

si:*:24:navarro,defsi,cacho,perezj

mat:*:29:alcaraz

inf:*:28:garcia,aboronat,asanchez,gumbau

Cada línea representa un grupo y los distintos campos tienen el siguiente significado:

inf:

nombre del grupo

*:

password del grupo

28:

identificador del grupo (GID)

garcia, aboronat, asanchez, gumbau:

integrantes del grupo

En realidad el fichero /etc/group no tiene porque contener los nombres de todos los integrantes de cada grupo. Cada grupo esta compuesto por los usuarios con el mismo GID en el fichero /etc/passwd.

El password del grupo no se utiliza prácticamente nunca y puede usarse cuando ciertos usuarios quieran cambiar a un grupo al que no pertenecen.

Para conocer los grupos de los que somos miembros podemos utilizar la orden groups.

La orden newgrp permite cambiar el grupo en el que se encuentra un usuario actualmente. Se modifica su GID y se mantiene su UID. El formato de la orden es el siguiente:

newgrp grupo

El cambio será posible si usuario es miembro del grupo destino o si este tiene un password fijado en el fichero /etc/group.

El Superusuario

En todos los sistemas UNIX existe un usuario especial llamado superusuario o root que es el que se encarga de las tareas de administración del sistema. Este usuario y la cuenta que utiliza es uno de los puntos más importantes en cuanto a la seguridad del sistema. Normalmente este usuario suele ser el administrador de la seguridad del sistema y dispone de toda una serie de privilegios muy superiores a los de los usuarios comunes. Para ser superusuario simplemente es necesario tener como UID el valor 0.

El acceso al password del root pone en peligro todo el sistema debido a la gran cantidad de acciones "peligrosas" que este usuario puede realizar. De ahí que suele decirse que la cuenta del root es la mayor debilidad de todo sistema UNIX, y que la mayoría de los intrusos intenten apoderarse de la misma.

Algunas de las acciones que el superusuario puede llevar a cabo son las siguientes:

- Cambiar su UID al de cualquier usuario

- Echar a todos los usuarios del sistema y rearrancarlo

- Modificar cualquier posición de memoria

- Leer, modificar o borrar cualquier fichero o directorio

- Ejecutar cualquier programa

Sin embargo el superusuario no es omnipotente y no puede por ejemplo descifrar los passwords de los usuarios o sus ficheros cifrados.

La orden su

Con esta orden podemos cambiar nuestra identificación de usuario sin salirnos de la conexión actual con la máquina. Por ejemplo, si hemos entrado en una cuenta con el nombre de usuario juan y queremos pasar a una cuenta con el nombre pedro, podemos utilizar la siguiente secuencia de ordenes:

% whoami

juan

% su pedro

passwd: xxxxxx

%whoami

pedro

Como vemos es necesario conocer el login y el password de la cuenta a la que queremos pasar.

Una vez finalizado el uso de esta nueva cuenta, la orden exit nos devuelve a la anterior:

% exit

% whoami

juan

Durante el uso de la cuenta pedro el sistema se comporta como si nos hubiésemos conectado con ella. Una vez aplizada la orden su pedro, podemos acceder a los ficheros de pedro, pero no a los de juan si no hemos dado permiso explícitamente antes de aplicar dicha orden.

El uso de la orden su es especialmente importante por parte del root. Dado el problema para la seguridad que entraña el uso adecuado de esta cuenta, es necesario restringirlo al máximo. Una forma de hacerlo es que el usuario root utilice normalmente otra cuenta propia sin tantos privilegios. Sólo cuando precise alguno de estos privilegios se pasará a la cuenta del root con la orden su, y al finalizar la tarea se debe volver a la cuenta anterior.

Adicionalmente, cuando el superusuario tenga que realizar algún tipo de modificación en la cuenta de un usuario cualquiera es conveniente que asuma la identidad de este a partir de la de root.