Algoritmos y Estructuras de Datos Compiladores e Intérpretes Herramientas Lenguaje de programación
!Prog C/C++
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Redes y Computación Distribuida Sistemas Operativos

Usuarios

[date: 30-09-2023] [last modification: 14-01-2025]
[words: 1073] [reading time: 6min] [size: 14729 bytes]

Cómo crear/modificar/eliminar usuarios en Linux. Grupos de usuarios. Uso básico de los comandos passwd, useradd, groupadd, su, sudo y otros. Los archivos /etc/passwd, /etc/shadow, /etc/groups y /etc/gshadow.

Usuarios

Todo usuario de un sistema Unix debe tener una cuenta para poder acceder.

Cuenta de usuario

Se trata de una colección de características lógicas que especifican quién es el usuario y lo que puede hacer dentro del sistema.

Se incluye:

  • Nombre de usuario (login name o username) e identificador numérico UID.
  • La contraseña (passwd).
  • Grupo o grupos a los que pertenece, con un identificador numérico del grupo por defecto (GID).
  • Directorio en /home
  • Login shell
  • Colección de ficheros de inicio

Entre las cuentas asociadas a los usuarios se pueden encontrar diferentes tipos:

Superusuario

El superusuario es un usuario especial que tiene todos los permisos y actúa a modo de administrador del sistema. Su nombre de login es root (aunque se puede cambiar).

Se puede cambiar la contraseña de cualquier usuario (como root o ese mismo usuario usando el comando passwd.

Archivos de información sobre los usuarios

Archivos de información sobre los usuarios
/etc/passwd

Mantiene la información principal de cada cuenta:

  • Nombre de usuario
  • UID
  • GID
  • Login shell
  • /home
  • Contraseña si no está encriptada
/etc/shadowFichero sin permiso de lectura que guarda las contraseñas encriptadas.
/etc/groupInformación sobre los grupos definidos, similar a /etc/passwd.
/etc/gshadowContraseñas para los grupos.
/etc/skelContiene los ficheros iniciales de nuevos usuarios, a modo de plantilla.

/etc/passwd

Este archivo contiene la lista de todos los usuarios. Este es su formato:

username : password : UID : GID : GECOS : homedir : shell

Si aparecen :: seguidos, el campo está vacío.

Nota

Para filtrar se pueden usar los comandos cut y awk:

cat /etc/passwd | cut -d: -f1
cat /etc/passwd | awk -F: '{print $1}'

/etc/shadow

Fichero de acceso restringido que almacena contraseñas encriptadas.

pepe:$1$.QKDPc5E$SWlkjRWexrXYgc98F.:12825:0:90:5:30:13096:

/etc/group

Similar a /etc/passwd: almacena información sobre los grupos de usuarios.

groupname : password : GID : user1,user2...

La contraseña es una x si se almacena en /etc/gshadow (mismo formato que /etc/shadow). No suele usarse.

Algunos grupos:

Comandos

Mostrar información sobre usuarios y grupos
whoEste comando permite saber quien está conectado.
Alternativamente puedes usar users, aunque da menos información.
groups [username]

Este comando permite saber en qué grupos se encuentra un usuario.

Creación de usuarios y grupos
useradd opts usuario
(Bajo nivel)

Añade un nuevo usuario al sistema.

  • -m: crear directorio home y copiar /etc/skel
  • -c geckos
  • -g grupo_principal
  • -G grupo2,grupo3...
  • -s /bin/bash
  • -p clave: cifrada con mkpasswd
  • -e YYYY-MM-DD: fecha de expiración de la cuenta
userdelBorra un usuario
usermodModifica los parámetros de un usuario
groupadd, groupdel, groupmod
(Bajo nivel)
Creación, eliminación y modificación de grupos a bajo nivel.
mkpasswdCifra una contraseña.
adduser, deluser
addgroup, delgroup
(Alto nivel)
Creación de usuarios y grupos a alto nivel en función de la configuración especificada en /etc/adduser.conf. Frontend para useradd, usermod y userdel; groupadd, groupmod y groupdel.
newusers, chpasswd

Creación y edición de usuarios simultáneamente.

Gestión de usuarios y grupos
vipwPermite editar /etc/passwd y /etc/groups de forma segura. Si se le pasa la opción -s se usa para /etc/shadow y /etc/gshadow.
passwdPermite fijar o cambiar la contraseña de un usuario.
chage [username]
Change Age
Permite cambiar la información de expiración de la contraseña. Ver información con chage -l.
gpasswdGestión de grupos (clave y miembros) por root.
newgrp

El propio usuario (no root) puede cambiar de grupo con newgrp:

  • Si el usuario es miembro, no se le preguntará la contraseña.
  • Si el usuario no es miembro y el grupo tiene contraseña, se le preguntará.
  • Si el usuario no es miembro y el grupo no tiene contraseña, se denegará el cambio.
Permisos
chmodCambia los permisos de un archivo.
chownCambia el dueño de un archivo
chgrp

Cambia el grupo dueño de un archivo

Otros
su [-] usernameCambia de usuario. Si no se especifica, pasa a root.
sudo [-u usuario] cmd
Super-User Do

Ejecuta un comando como otro usuario.

  • Un usuario del grupo sudo (también llamado wheel) puede ejecutar cualquier comando
  • En caso contrario, los permisos se definen en /etc/sudoers. Se puede editar con visudo, que solo guarda si el formato es adecuado.

Creación de una cuenta

Los pasos para hacerlo manualmente son:

  1. Añadir una nueva línea a /etc/passwd con la información adecuada.
    Para evitar la corrupción del archivos, se usa vipw. Solo guarda el archivo si el formato es correcto.
  2. Editar el archivo /etc/shadow.
    • La contraseña debe escribirse cifrada. Usar passwd.
    • Para evitar la corrupción, usar vipw -s.
  3. (Opcional) Editar /etc/groups para añadir el nuevo grupo del usuario o asignarle grupos.
  4. (Opcional) Editar /etc/gshadow para también poner los miembros. Para no usar contraseña, escribir * o !.
  5. Crear el directorio del usuario: mkdir /home/usuario
  6. Copiar los archivos de /etc/skel: cp /etc/skel/* /home/usuario
  7. Usar chown, chgrp y chmod para fijar el propietario, grupo y permisos adecuados.
  8. Fijar la contraseña con passwd usuario. El usuario la cambiará tan pronto como pueda, esto puede forzase con passwd -e.

Alternativamente se puede usar useradd.

useradd \
    -m \               # Crea /home/aitor y copia /etc/skel
    -c "Aitor Tilla" \ # Comentario / GECOS
    -s /bin/bash \     # Shell
    -g staff \         # Grupo principal
    -G sudo,http \     # Otros grupos
    -e 2002-11-01 \    # Fecha de expiración de la cuenta
    aitor              # Username
Anterior: Instalación de Software Volver a Linux Siguiente: Admininistración de Sistemas