Usuario Linux

Usuarios Linux

Cada usuario Linux se identifica ante el sistema con un nombre de usuario ya que es un sistema multiusuario

A este nombre el sistema asocia un número identificativo (UID), una contraseña, su nombre completo, un directorio de arranque (el home de usuario) y una shell de conexión (existen diferentes programas de shell, y se elige entre uno u otro según las características del usuario o el tipo de shell que prefiramos)

Todos estos datos los guarda el sistema en los ficheros /etc/passwd y /etc/shadow. El fichero /etc/shadow contiene la contraseña cifrada y datos sobre la misma (como el tiempo de validez, los días con que hay que avisar antes de que expire, cada cuanto tiempo hay que obligar a su cambio, etc). La creación de este fichero vino por una cuestión de seguridad ya que el fichero passwd debe ser accesible a todos los usuarios

Estructura

La estructura del fichero passwd es la siguiente:

usuario No se admiten números al comienzo de un nombre de usuario
x Una “x” indica que el password está almacenado en /etc/shadow, en el caso de ser una “!” es que el usuario está bloqueado. “!!” indica que no tiene password
uid Cada usuario tiene asignado un número identificador (uid) entre 0 (root) y 65535. Se reservan algunos para usuarios especiales, como root (que siempre es el cero) y para usuarios de servicios del sistema. En sistemas Red hat y derivados entre 1 y 499. En sistemas Debian y derivados entre 1 y 999
gid Cada usuario tiene asignado un número identificador de grupo principal (gid), es decir, siempre pertenece al menos a un grupo, pero puede pertenecer a más de un grupo
nombre completo Esta opción está pensada para que el usuario escriba su nombre completo, aunque también puede usarse para escribir una descripción de qué hace ese usuario o cual es su utilidad, en el caso de ser un servicio del sistema
directorio home Es la carpeta de inicio que el usuario usará por defecto al iniciar su sesión
comando shell Los usuarios asociados a un servicio del sistema o los usuarios con permisos limitados no deben tener un comando de shell, es decir, capacidad de iniciar sesión en modo consola, normalmente este campo se rellena como /usr/bin/nologin o /bin/false

Algunos de los usuarios más comunes pueden encontrarse en la siguiente tabla:

Usuario UID GID Directorio de inicio Terminal
root 0 0 /root /bin/bash
bin 1 1 /bin /sbin/nologin
daemon 2 2 /sbin /sbin/nologin
adm 3 4 /var/adm /sbin/nologin
lp 4 7 /var/spool/lpd /sbin/nologin
sync 5 0 /sbin /bin/sync
shutdown 6 0 /sbin /sbin/shutdown
halt 7 0 /sbin /sbin/halt
mail 8 12 /var/spool/mail /sbin/nologin
news 9 13 /var/spool/news
uucp 10 14 /var/spool/uucp /sbin/nologin
operator 11 0 /root /sbin/nologin
games 12 100 /usr/games /sbin/nologin
gopher 13 30 /usr/lib/gopher-data /sbin/nologin
ftp 14 50 /var/ftp /sbin/nologin
nobody 99 99 / /sbin/nologin
vcsa 69 69 /dev /sbin/nologin
rpm 37 37 /var/lib/rpm /bin/bash
wnn 49 49 /var/lib/wnn /bin/bash
ntp 38 38 /etc/ntp /sbin/nologin
nscd 28 28 / /bin/false
apache 48 48 /var/www /bin/false
mysql 27 27 /var/mysql /bin/bash
mailnull 47 47 /var/spool/mqueue /sbin/nologin
smmsp 51 51 /var/spool/mqueue /sbin/nologin
rpc 32 32 / /sbin/nologin
xfs 43 43 /etc/X11/fs /sbin/nologin
gdm 42 42 /var/gdm /sbin/nologin
rpcuser 29 29 /var/libs/nfs /sbin/nologin
nsfnobody 65534 65534 /var/libs/nfs /sbin/nologin
ident 98 98 / /sbin/nologin
radvd 75 75 / /sbin/nologin
sshd 74 74 /var/empty/sshd /sbin/login
postgres 26 26 /var/lib/pgsql /bin/bash
squid 23 23 /var/spool/quid /dev/null
named 25 25 /var/named /bin/false
pcap 77 77 /var/arpwatch /sbin/bash
amanda 33 6 /var/lib/amanda /bin/bash
mailman 41 41 /var/mailman /bin/false
netdump 34 34 /var/crash /bin/bash
ldap 55 55 /var/lib/ldap /bin/false
postfix 89 89 /var/spool/postfix /bin/true
privoxy 100 101 /etc/privoxy
Pvm 24 24 /usr/share/pvm3 /bin/bash

Añadir

El comando para añadir usuarios es useradd

En el ejemplo hemos creado al usuario patxi que pertenece al grupo users y ftp, tiene como shell /bin/shell, asignamos la clave password y su carpeta home será /home/patxi

Este comando admite los siguientes parámetros:

-d Directorio home del usuario
-s Shell del usuario
-p Password
-g Grupo primario al que asignamos el usuario
-G Grupos a los que también pertenece el usuario
-m Forzamos la creación del directorio en su home

En el fichero /etc/default/useradd se guardan parámetros por defecto para el comando useradd y en el directorio /etc/skel están los ficheros y directorios que por defecto se pondrán en el home del usuario al crearlo

Modificar

El comando para modificar usuarios es usermod

En el ejemplo hemos modificado al usuario patxi que pertenecía al grupo users y ftp, ahora su grupo principal es server, aunque sigue perteneciendo a los grupos users y ftp

Este comando admite los siguientes parámetros:

-d Modificar directorio home del usuario
-s Modificar shell del usuario
-p Modificar Password
-g Modificar grupo primario al que asignamos el usuario
-G Modificar grupos a los que también pertenece el usuario

Borrar

El comando para borrar usuarios es userdel

En el ejemplo borrado al usuario patxi y adicionalmente le hemos forzado a borrar el contenido de su home al usar el parámetro -r, si no lo hubiéramos usado, seguiría existiendo

Cambiar la clave

El comando para cambiar la clave de un usuario es passwd. Hay que tener en cuenta que hay que tener permisos suficientes para poder realizar el cambio, ya sea porque quien ejecuta el comando es el propio usuario o el superusuario root

Si lo que queremos es cambiar la clave del usuario root y tenemos permisos suficientes, puede hacerse dejando el parámetro usuario vacío

shadow

La estructura del fichero shadow es la siguiente:

usuario Nombre del usuario
contraseña encriptada La contraseña con un cifrado seguro
1 Días transcurridos desde 1-1-1970 donde el password fue cambiado por última vez
2 El mínimo número de días entre cambios de contraseña
3 Días máximos de validez de la cuenta
4 Días que avisa antes de caducar la contraseña
5 Días después de que un password caduque para deshabilitar la cuenta
6 Fecha de caducidad. días desde 1-1-1970, donde la cuenta es deshabilatada y el usuario no podrá iniciar sesión

Grupos Linux

Los usuarios se agrupan en grupos. Los grupos también se identifican por un nombre y el sistema les asocia un número identificativo (GID). Todo usuario tiene un grupo principal, pero puede pertenecer a varios grupos, con lo cual hereda sus privilegios. Los grupos permiten dar derechos y restringir opciones de forma global a múltiples usuarios

La relación de los grupos se guarda en el fichero /etc/group. Existe también el fichero /etc/gshadow para contraseñas cifradas de grupo, aunque no es muy utilizado

Estructura

La estructura del fichero group es la siguiente:

grupo El nombre del grupo (es recomendable que no tenga más de 8 caracteres)
x Una “x” indica que el password está almacenado en /etc/gshadow
gid Cada grupo tiene asignado un número identificador (gid) entre 0 (root) y 65535 (los gid 0 a 499 están reservados por el sistema), por lo que empezarán a numerar a partir del 500
lista miembros Lista de los miembros del grupo, separados por comas (sin espacios)

Algunos de los grupos más comunes pueden encontrarse en la siguiente tabla:

Grupo GID Miembros
root 0 root
bin 1 root, bin, daemon
daemon 2 root, bin, daemon
sys 3 root, bin, adm
adm 4 root, adm, daemon
tty 5
disk 6 root
lp 7
mem 8
kmem 9
wheel 10 root
mail 12 mail
news 13 news
uucp 14 uucp
man 15
games 20
gopher 30
dip 40
ftp 50
lock 54
nobody 99
users 100
slocate 21
floppy 19
vcsa 69
rpm 37 rpm
utmp 22
wnn 49
ntp 38
nscd 28
apache 48
mysql 27
mailnull 47
smmsp 51
rpc 32
xfs 43
gdm 42
rpcuser 29
nfsnobody 65534
ident 98
radvd 75
sshd 74
postgres 26
squid 23
named 25
pcap 77
wine 66
Mailman 41
netdump 34
ldap 55
postdrop 90
postfix 89
privoxy 101
pvm 24

Añadir

El comando para añadir grupos es groupadd

En el ejemplo hemos creado el grupo server con un gid 500, en caso de no poner nada usaría el mayor de 500 no usado por otro grupo. Se pude usar el parámetro -g para fijar el gid de forma manual

Si queremos añadir usuarios existentes al grupo recién creado usaremos el comando gpasswd

En el ejemplo hemos añadido el usuario patxi con el parámetro -a al grupo server

Modificar

El comando para modificar grupos es groupmod

En el ejemplo hemos modificado el gid a 501 del grupo server

Este comando admite los siguientes parámetros:

-g Modificar gid del grupo
-n Modificar nombre del grupo

Este comando únicamente realiza cambios en el archivo /etc/group, por lo tanto el resto de
modificaciones implicadas en el cambio del gid de un grupo, se han de hacer manualmente en los archivos /etc/passwd y /etc/gshadow

Borrar

El comando para borrar un grupo es groupdel

En el ejemplo borrado el grupo server

No se puede eliminar un grupo que sea grupo inicial de algún usuario, sin eliminar primero el usuario

El comando no recorre el sistema de ficheros en busca de archivos propiedad del grupo. Si
deseamos eliminarlos, hemos manualmente o con comandos de borrado de archivos

Si queremos eliminar usuarios existentes al grupo recién creado usaremos el comando gpasswd

En el ejemplo hemos eliminado el usuario patxi con el parámetro -d del grupo server. Pero no se borrará el directorio de home del grupo