Administración de usuarios y grupos en Linux

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

El usuario administrador de todos los sistemas UNIX se llama «root» y tiene uid 0. Este es un estándar globalizado en cualquier tipo de UNIX (RedHat, Aix, Solaris, HP-UX…).

[root]# id
uid=0(root) gid=0(root) groups=0(root)
[root]#

Por lo tanto, es muy importante que no iniciemos sesión con el usuario root, salvo cuando sea necesario para la administración del sistema y custodiemos su contraseña de manera segura.

Permisos de lectura, escritura y ejecución

Si le echamos un vistazo a cualquier archivo en cualquier UNIX, veremos que todos ellos tienen permisos de lectura, escritura y ejecución a nivel de usuario, grupo y resto de usuarios.

# ls -l script.sh
-rwxr-x— 1 usuario1 grusuarios 7 nov 3 16:10 script.sh
#

En el ejemplo anterior, observamos que el fichero «script.sh» tiene los siguientes permisos:

  • Lectura, escritura y ejecución (rwx) para el propietario del archivo.
  • Lectura y ejecución (r-x) para el grupo al que pertenece el archivo.
  • Ningún permiso (—) para el resto de usuarios del sistema.
  • El usuario propietario del archivo se llama «usuario1» y el grupo «grusuarios».

Es muy importante que demos los permisos correspondientes a todos los archivos del sistema para que solamente puede leer, escribir o ejecutar aquellos usuarios que han de hacerlo. Si no extremamos las precauciones de permisos, seremos sensibles a ataques de hackers.

Si el viésemos una «d» al principio de los permisos, nos estaríamos refiriendo a los permisos de un directorio y no de un archivo.

Solamente el usuario root puede crear, modificar y eliminar usuarios y grupos de sistema.

Crear un grupo de usuarios

Para ellos, utilizaremos el comando groupadd.

groupadd -g 601 grusuario
#

Tras añadir el grupo, veremos que se ha creado una entrada nueva en el fichero /etc/group.

# grep usuario1 /etc/group 
grusuario:x:601: 
#

Crear un usuario nuevo

Es muy parecido a la creación de grupos, sólo que utilizaremos el comando useradd para añadir usuarios al sistema Linux:

# useradd -c "Mi primer usuario" -d /home/usuario1 -g 601 -u 601 usuario1

Podemos observar, que hemos añadido un comentario al usuario que hemos creado (-c), indicado cuál es el directorio home del usuario, (-d) el grupo al que pertenece (-g), el uid del usuario (-u) y, por úlitmo, el nombre del usuario.

Con -G (mayúscula) podemos añadir el usuario a grupos secundarios, ya que un usuario de Linux puede pertenecer a más de un grupo de sistema.

Una vez creado el usuario, veremos que se ha añadido una entrada nueva en el fichero /etc/passwd:

# cat /etc/passwd |grep usuario1 
usuario1:x:601:601:Mi primer usuario:/home/usuario1:/bin/bash
#

Eliminar un usuario en Linux

Para ello, utilizaremos el comando userdel o, sudo userdel si no hemos entrado con root y tenemos privilegios para ejecutar el comando con sudo.

# userdel -r usuario1

Eliminar un grupo

Ejecutaremos el comando groupdel Nombre_del_grupo.

Modificar la contraseña de un usuario

Si somos root y queremos modificar la contraseña de un usuario, ejecutaremos el comando passwd Usuario.  Si no somos los administradores del sistema, ejecutaremos el comando passwd sin ningún otro parámetro. Lo que hará será modificar la contraseña de nuestro usuario.

# passwd 
Cambiando la contraseña del usuario usuario1. 
Cambiando la contraseña de usuario1. 
(actual) contraseña de UNIX: 
Nueva UNIX contraseña: 
Vuelva a escribir la nueva UNIX contraseña: 
passwd: todos los tokens de autenticación se actualizaron exitosamente.
#

Averiguar el UID y el GID de los usuarios y grupos

Anteriormente, hemos visto que en los ficheros /etc/passwd y /etc/group están definidos los usuarios y grupos, así como sus correspondientes UIDs y GIDs. Sin embargo, a mi gusta mucho utilizar el comando id.

# id hpddpers
uid=8402895(hpddpers) gid=45005(uxsup3) groups=45005(uxsup3)
#

Cambiar de un usuario a otro

Si conocemos la contraseña del usuario al que nos queremos cambiar y no somos root, utilizaremos el comando «su – usuario». Con el símbolo menos cargamos las variables de entorno del usuario como si iniciásemos una sesión nueva con el mismo.

Ejemplo:

[[email protected] ~]$ id 
uid=601(usuario1) gid=601(usuario1) grupos=601(grusuario) [[email protected] ~]$ su David Contraseña: 
[[email protected] usuario1]$ id 
uid=500(David) gid=500(David) grupos=6(disk),500(David) 
[[email protected] usuario1]$

Chequear la sintaxis de los ficheros de configuración de usuarios y grupos

No deberíamos modificar manualmente los ficheros de configuración de usuarios y grupos. Siempre lo deberíamos hacer con los comandos usermod y groupmod, respectivamente.

No obstante, si lo hemos hecho, es conveniente revisar que la sintaxis de ambos ficheros es correcta.

# pwck 
usuario adm: el directorio /var/adm no existe usuario uucp: el directorio /var/spool/uucp no existe usuario gopher: el directorio /var/gopher no existe usuario ftp: el directorio /var/ftp no existe 
usuario avahi-autoipd: el directorio /var/lib/avahi-autoipd no existe pwck: sin cambios 
# grpck 
'David' is a member of the 'disk' group in /etc/group but not in /etc/gshadow
#

Modificar un usuario

Con el comando usermod podremos bloquear o desbloquear un usuario, cambiar su shell, su directorio home, grupos a los que pertenece, etc. Con man usermod veremos todos los detalles de lo que podemos cambiar. A continuación, expongo algunos ejemplos de uso:

Añadir más grupos a un usuario:

usermod -a -G grupo1,grupo2,grupoN usuario

Bloquear y desbloquear un usuario:

[[email protected] ~]# tail -1 /etc/shadow
prueba:$1$6J4Lozrd$aoawp2qogf1vg87UhRMDy/:12822:0:99999:7:::
[[email protected] ~]# usermod -L prueba
[[email protected] ~]# tail -1 /etc/shadow
prueba:!$1$6J4Lozrd$aoawp2qogf1vg87UhRMDy/:12822:0:99999:7:::
[[email protected] ~]# usermod -U prueba
[[email protected] ~]# tail -1 /etc/shadow
prueba:$1$6J4Lozrd$aoawp2qogf1vg87UhRMDy/:12822:0:99999:7:::
[[email protected] ~]#

El carácter “!” al en el campo de la contraseña encriptada, del fichero shadow indica que la cuenta está bloqueada.

Eliminar la expiración de contraseña:

# usermod -e brightst
# chage -l brightst
Last password change : abr 24, 2009
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
#

Eliminar la shell a un usuario:

# usermod -s nologin david

Modificar el uid de un usuario:

# usermod -u 0 david

Modificar un grupo

Es muy similar a la modificación de un usuario, sólo que el comando que utilizamos es groupmod.

Ejemplo:

# groupmod -g 200 -n sapsys sapasys
# usermod -u 111001 -g 200 paxadm
# id paxadm
uid=111001(paxadm) gid=200(sapsys) groups=200(sapsys)
#

Eliminar la expiración de contraseña de un usuario

Ejecutaremos el comando chage.

# chage -E -1 -M -1 orausertemp
# chage -l orausertemp
Last password change : Sep 14, 2017
Password expires : never
Password inactive : never
Account expires : Jan 20, 11761191
Minimum number of days between password change : 1
Maximum number of days between password change : -1
Number of days of warning before password expires : 7
#

Diferentes comandos para Desbloquear un usuario de Linux

Según el tipo de bloqueo o política infringida por un usuario que has sido bloqueado por el sistema, deberemos utilizar un comando u otro para desbloquearlo. Veamos los más comunes:

  • passwd -u usuario: Desbloquea un usuario que ha sido bloqueado previamente con el comando passwd -l usuario.
  • usermod -U usuario: Desbloquea un usuario que ha sido bloqueado previamente con el comando usermod -L usuario.
  • pam_tally2 -r -u usuario: Ha superado el número máximo de conexiones definido en las políticas de pam (/etc/pam.d/login). pam_tally2 es el módulo que se dedica a contar el número de conexiones establecidas o fallidas por un usuario de sistema operativo.
  • faillock –reset –user usuario: En las políticas de pam podemos definir otro módulo de seguridad para el bloqueo de usuarios (pam_faillock.so). Bloquea un usuario si éste ha intentado acceder al sistema de manera insatisfactoria durante un número máximo de veces en un intervalo de tiempo definido.
[[email protected] ~]# cd /etc/pam.d/
[[email protected] pam.d]# grep -i faillock *
password-auth:auth        required      pam_faillock.so preauth silent deny=6 unlock_time=3600
password-auth:auth        [default=die] pam_faillock.so authfail deny=6 unlock_time=3600
password-auth:account     required      pam_faillock.so
password-auth-vpc:auth        required      pam_faillock.so preauth silent deny=6 unlock_time=3600
password-auth-vpc:auth        [default=die] pam_faillock.so authfail deny=6 unlock_time=3600
password-auth-vpc:account     required      pam_faillock.so
system-auth:auth        required      pam_faillock.so preauth silent deny=6 unlock_time=3600
system-auth:auth        [default=die] pam_faillock.so authfail deny=6 unlock_time=3600
system-auth:account     required      pam_faillock.so
system-auth-vpc:auth        required      pam_faillock.so preauth silent deny=6 unlock_time=3600
system-auth-vpc:auth        [default=die] pam_faillock.so authfail deny=6 unlock_time=3600
system-auth-vpc:account     required      pam_faillock.so
[[email protected] pam.d]#

Te puede interesar

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

SUSCRÍBETE A PUERTO53

Recibe un email periódico con los artículos más interesantes de Puerto53.com

Antes de suscribirte lee los términos y condiciones. Gracias.

Contenido Relacionado

Artículos Recientes

Deja un comentario

About Author