Los usuarios se utilizan en GNU/Linux para el control de acceso, es decir, para controlar el acceso a los archivos, directorios y periféricos del sistema. Linux ofrece mecanismos de control de acceso relativamente simples por defecto. El superusuario puede conceder permisos a usuarios creados y a grupos en los cuales se integran usuarios.
Archivos involucrados:
Archivo /etc/passwd es un archivo en formato ascii donde se guarda en cada línea la información definida de un usuario en el sistema.
La sintasix de cada línea es:
usuario:x:uid:gid:comentario:directorio-Home:shell-de-inicio
donde:
usuario: es el nombre asignado al usuario.
x: Campo en desuso, se deja por compatibilidad retro.
gid: número de grupo primario asociado al usuario.
comentario: breve comentario sobre el usuario.
directorio-home: Directorio de inicio y trabajo asignado al usuario.
shell-de-inicio: shell definida para el usuario.
El archivo /etc/shadow archivo ascii de acceso restringido donde se guardan para cada usuario las claves encriptadas así como información relacionada.
Sintasix:
usuario:password:lastchg:min:max:warn:inactive:expire:
donde:
usuario: nombre del usuario debe coincidir con el de /etc/passwd
password: contraseña del usuario encriptada.
lastchg: útima fecha de modificación en formato unix.
min: cuanto esperar para permitir cambiar la contraseña al usuario
max: cada cuanto debe el usuario cambiar de contraseña
warn: cuantos días antes se avisa al usuario que debe cambiar la contraseña.
inactive: si es 0 (cero) se bloque al no cambiar la contraseña cuando debe, si es -1 deja ingresar y cambiarla, es el valor por defecto.
expire: cuando expira la cuenta.
Archivo /etc/group archivo ascii donde se guarda la infomación relativa a los grupos del sistema.
sintaxis:
grupo:x:gid:lista-usuarios
donde:
grupo: nombre del grupo
x: contraseña del grupo
gid: número del grupo
lista-usuarios: lista de usuarios con este grupo como secundario
Administración de usuarios
Comandos:
useradd
useradd nos permite añadir usuarios al sistema
Modo de uso: useradd [opciones] USUARIO
useradd -D
useradd -D [opciones]
Opciones:
--badnames do not check for bad names
-b, --base-dir DIR_BASE directorio base para el directorio personal de la nueva cuenta
--btrfs-subvolume-home use BTRFS subvolume for home directory
-c, --comment COMENTARIO campo GECOS de la nueva cuenta
-d, --home-dir DIR_PERSONAL directorio personal de la nueva cuenta
-D, --defaults imprime o cambia la configuración predeterminada de useradd
-e, --expiredate FECHA_CADUCIDAD fecha de caducidad de la nueva cuenta
-f, --inactive INACTIVO periodo de inactividad de la contraseñade la nueva cuenta
-g, --gid GRUPO nombre o identificador del grupo primario de la nueva cuenta
-G, --groups GRUPOS lista de grupos suplementarios de la nueva cuenta
-h, --help muestra este mensaje de ayuda y termina
-k, --skel DIR_SKEL utiliza este directorio «skeleton» alternativo
-K, --key CLAVE=VALOR sobrescribe los valores predeterminados de «/etc/login.defs»
-l, --no-log-init no añade el usuario a las bases de datos delastlog y faillog
-m, --create-home crea el directorio personal del usuario
-M, --no-create-home no crea el directorio personal del usuario
-N, --no-user-group no crea un grupo con el mismo nombre que el usuario
-o, --non-unique permite crear usuarios con identificadores(UID) duplicados (no únicos)
-p, --password CONTRASEÑA contraseña cifrada de la nueva cuenta
-r, --system crea una cuenta del sistema
-R, --root CHROOT_DIR directorio en el que hacer chroot
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell CONSOLA consola de acceso de la nueva cuenta
-u, --uid UID identificador del usuario de la nueva cuenta
-U, --user-group crea un grupo con el mismo nombre que el usuario
-Z, --selinux-user USUARIO_SE utiliza el usuario indicado para el usuariode SELinux
--extrausers Use the extra users database
Valores por defecto
Modifica o muestra (si no se le pone argumentos) los valores por defecto al ingresar un nuevo usuario,en el archivo /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
Ejemplo
Creación de la cuenta de un usuario por defecto (sin opciones)
useradd ana
Como se ve el archivo /etc/passwd
ana:x:506:506::/home/ana:/bin/bash
Como se ve el archivo /etc/group
ana:x:506:
Ejemplo
Creación de la cuenta de un usuario modificando el grupo principal (el grupo tiene que estar creado)
useradd -g users ana
Archivo /etc/passwd
ana:x:507:100::/home/ana:/bin/bash
Archivo /etc/group
users:x:100:
Comando usermod
permite modificar la cuenta del usuario.
Modo de uso: usermod [opciones] USUARIO
Opciones:
-b, --badnames allow bad names
-c, --comment COMENTARIO nuevo valor del campo GECOS
-d, --home DIR_PERSONAL nuevo directorio personal del nuevo usuario
-e, --expiredate FECHA_EXPIR establece la fecha de caducidad de la cuenta a FECHA_EXPIR
-f, --inactive INACTIVO establece el tiempo de inactividad después de que caduque la cuenta a INACTIVO
-g, --gid GRUPO fuerza el uso de GRUPO para la nueva cuenta de usuario
-G, --groups GRUPOS lista de grupos suplementarios
-a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing the user from other groups
-h, --help muestra este mensaje de ayuda y termina
-l, --login NOMBRE nuevo nombre para el usuario
-L, --lock bloquea la cuenta de usuario
-m, --move-home mueve los contenidos del directorio personal al directorio nuevo (usar sólo junto con -d)
-o, --non-unique permite usar UID duplicados (no únicos)
-p, --password CONTRASEÑA usar la contraseña cifrada para la nueva cuenta
-R, --root CHROOT_DIR directorio en el que hacer chroot
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell CONSOLA nueva consola de acceso para la cuenta del usuario
-u, --uid UID fuerza el uso del UID para la nueva cuenta de usuario
-U, --unlock desbloquea la cuenta de usuario
Comando userdel
Elimina la cuenta de un usuario
Modo de uso: userdel [opciones] USUARIO
Opciones:
-f, --force forzar la eliminación de los ficheros, incluso si no pertenecen al usuario
-h, --help muestra este mensaje de ayuda y termina
-r, --remove elimina el directorio personal y el buzón de correo
-R, --root CHROOT_DIR directorio en el que hacer chroot
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
--extrausers Use the extra users database
-Z, --selinux-user remove any SELinux user mapping for the user
Comandos para administrar la contraseña
Comando passwd
Al crear un usuario la cuenta se crea lockeada, para que el usuario pueda ingresar el administrador debeasignar la contraseña. Este comando involucra el archivo /etc/shadow
Asignar contraseña al usuario
Modo de uso: passwd [opciones] [USUARIO]
Opciones:
-a, --all informa del estado de las contraseñas de todas las cuentas
-d, --delete borra la contraseña para la cuenta indicada
-e, --expire fuerza a que la contraseña de la cuenta caduque
-h, --help muestra este mensaje de ayuda y termina
-k, --keep-tokens cambia la contraseña sólo si ha caducado
-i, --inactive INACTIVO establece la contraseña inactiva después de caducar a INACTIVO
-l, --lock bloquea la contraseña de la cuenta indicada
-n, --mindays DÍAS_MIN establece el número mínimo de días antes de que se cambie la contraseña a DÍAS_MIN
-q, --quiet modo silencioso
-r, --repository REP cambia la contraseña en el repositorio REP
-R, --root CHROOT_DIR directorio en el que hacer chroot
-S, --status informa del estado de la contraseña la cuenta indicada
-u, --unlock desbloquea la contraseña de la cuenta indicada
-w, --warndays DÍAS_AVISO establece el aviso de caducidad a DÍAS_AVISO
-x, --maxdays DÍAS_MAX establece el número máximo de días antes de cambiar la contraseña a DÍAS_MAX