Contenidos
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 |
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 |
12 | ||
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