Administración de usuarios y grupos en Linux

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
#

¿Te ha gustado? ¡Compártelo!

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

Deja un comentario

Tal vez también te gustaría leer...

Corrompiendo un filesystem ext4 a propósito

He tenido la necesidad de corromper un filesystem ext4 en un RedHat 6 a propósito para realizar un test de chequeo de filesystem. En mi caso, el filesystem era el /dev/sdb. Para corromperlo, he utilizado el siguiente comando: Toshiba Canvio Basics – Disco duro externo, 2.5… 42,21 EUR Comprar en Amazon Toshiba Canvio Basics –

Leer más »

GlusterFS – Filesystems con Alta Disponibilidad en Linux

Alguna vez os he hablado de ServiceGuard para montar entornos de alta disponibilidad robustos, que monten filesystems y levanten servicios, pero este es un software de pago que no quería utilizar para montar un único filesystem con alta disponibilidad. En su lugar, he elegido GlusterFS, que es opensource y con soporte de RedHat. Tabla de

Leer más »

Tutorial de Ansible

Recientemente me he estado mirando el funcionamiento de Ansible para automatizar tareas de manera masiva en servidores Linux remotos mediante esta aplicación. Hasta ahora utilizo otra pero como Ansible está cada vez más extendida y considero que vale la pena mirárselo. Más aún si RedHat está apostando por esta herramienta como estándar de automatización. Su

Leer más »

RHEL y Oracle RAC – Paquetes Dropped

En un entorno de dos servidores Linux RedHat 6.9 con un cluster de Oracle RAC, hemos detectado muchos paquetes dropped en las tarjetas de red (dropped: 311815750): El equipo de Oracle ejecuta un análisis del sistema (OSWatcher) donde se indica que debemos aumentar el valor de MTU de todos los nodos del cluster, y así

Leer más »

lun4194304 has a LUN larger than allowed by the host adapter

En un RedHat 7.6 he pedido una LUN para ampliar un filesystem. Esta es una tarea rutinaria de cualquier técnico de sistemas Linux, si embargo, hoy me he encontrado con que la LUN estaba asignada al servidor pero no la veía. En el log del sistema operativo (/var/log/messages) aparecía el siguiente mensaje: Es decir, que

Leer más »

Conexiones seguras con SSH

SSH es un protocolo de comunicaciones que proporciona seguridad criptográfica cuando nos conectamos a un servidor para iniciar una sesión o transfereir archivos por SFTP o SCP. Los comandos SSH, SFTP y SCP utilizan el mismo puerto de comunicaciones, que es el 22. Toshiba Canvio Basics – Disco duro externo, 2.5… 42,21 EUR Comprar en

Leer más »