Users and groups (Español)

Los usuarios y grupos 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/toscos por defecto. Para obtener opciones más avanzadas, véase Listas de control de acceso, Capabilities y PAM (Español)#Configuración guiada.

Esta traducción de Users and groups fue revisada el 2021-02-14. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Descripción

Un usuario es cualquiera que use una computadora. En este caso, estamos describiendo los nombres que representan a esos usuarios. Puede ser Mary o Bill, y pueden usar los nombres Dragonlady o Pirate en lugar de su nombre real. Lo único que importa es que la computadora tenga un nombre para cada cuenta que cree, y es este nombre por el que una persona obtiene acceso para usar la computadora. Algunos servicios del sistema también se ejecutan utilizando cuentas de usuario restringidas o privilegiadas.

La administración de los usuarios se realiza con fines de seguridad al limitar el acceso de ciertas maneras específicas. El superusuario (root) tiene acceso completo al sistema operativo y su configuración; está destinado solo para uso administrativo. Los usuarios sin privilegios pueden usar los programas su y sudo para la escalada de privilegios controlada.

Cualquier persona puede tener más de una cuenta, siempre que utilicen un nombre diferente para cada una de ellas. Además, hay algunos nombres reservados que no se pueden usar, como «root».

Los usuarios pueden agruparse en un «grupo» y, del mismo modo, pueden añadirse a un grupo existente para utilizar el acceso privilegiado que dicho grupo concede.

Nota: El usuario inexperto debe utilizar estas herramientas con cuidado y evitar modificar cualquier otra cuenta de usuario existente, que no sea la suya propia.

Permisos y propiedad

De En Unix todo es un archivo:

El sistema operativo UNIX cristaliza un par de ideas y conceptos unificadores que dieron forma a su diseño, interfaz de usuario, cultura y evolución. Uno de los más importantes probablemente sea el mantra: "todo es un archivo", considerado ampliamente como uno de los puntos definitorios de UNIX.
Este principio de diseño fundamental consiste en proporcionar un paradigma unificado para acceder a una amplia gama de recursos de entrada/salida: documentos, directorios, discos duros, CD-ROM, módems, teclados, impresoras, monitores, terminales e incluso algunas comunicaciones entre procesos y redes. El truco es proporcionar una abstracción común para todos estos recursos, cada uno de los cuales los padres de UNIX llamaron «archivo». Como cada «archivo» está expuesto a través de la misma API, se puede utilizar el mismo conjunto de órdenes básicas para leer/escribir en un disco, teclado, documento o dispositivo de red.

De Extendiendo la abstracción de archivo de UNIX para fines generales de administración de redes:

Una abstracción fundamental, muy potente y consistente, proporcionada en UNIX y los sistemas operativos compatibles es la abstracción de archivos. Muchos servicios del sistema operativo e interfaces de dispositivos se implementan para proporcionar una metáfora de archivo o sistema de archivos a las aplicaciones. Esto permite nuevos usos y aumenta en gran medida el poder de las aplicaciones existentes — herramientas simples diseñadas para usos específicos pueden, con las abstracciones de archivos de UNIX, utilizarse de maneras novedosas. Una herramienta simple, como cat, diseñada para leer uno o más archivos y enviar los contenidos a la salida estándar, se puede utilizar para leer desde dispositivos E/S (entrada/salida) a través de archivos de dispositivos especiales, que generalmente se encuentran en el directorio /dev. En muchos sistemas, la grabación y reproducción de audio se puede hacer simplemente con las órdenes, «{» y «{», respectivamente.

Cada archivo en un sistema GNU/Linux es propiedad de un usuario y un grupo. Además, hay tres tipos de permisos de acceso: lectura, escritura y ejecución. Los permisos de acceso pueden aplicarse de forma diferente al usuario propietario del archivo, al grupo propietario y a otros (aquellos que no tienen la propiedad). Uno puede determinar los propietarios y permisos de un archivo al ver el formato de listado extenso de la orden ls:

$ ls -l /boot/
total 13740
drwxr-xr-x 2 root root    4096 Jan 12 00:33 grub
-rw-r--r-- 1 root root 8570335 Jan 12 00:33 initramfs-linux-fallback.img
-rw-r--r-- 1 root root 1821573 Jan 12 00:31 initramfs-linux.img
-rw-r--r-- 1 root root 1457315 Jan  8 08:19 System.map26
-rw-r--r-- 1 root root 2209920 Jan  8 08:19 vmlinuz-linux

La primera columna muestra los permisos del archivo (por ejemplo, el archivo tiene los permisos ). La tercera y cuarta columnas muestran los propietarios de usuario y grupo del archivo, respectivamente. En el presente ejemplo, todos los archivos son propiedad del usuario root y del grupo root.

$ ls -l /media/
total 16
drwxrwx--- 1 root vboxsf 16384 Jan 29 11:02 sf_Shared

En este ejemplo, la carpeta es propiedad del usuario root y del grupo vboxsf. También es posible determinar los propietarios y los permisos de un archivo con la orden stat:

El usuario propietario:

El grupo propietario:

Los permisos de acceso:

Los permisos de acceso se muestran en tres grupos de caracteres, representando los permisos del usuario propietario, del grupo propietario, y de los otros, respectivamente. Por ejemplo, los caracteres indican que el usuario propietario del archivo tiene permisos de lectura y escritura, pero no de ejecución (), mientras que los usuarios que pertenecen al grupo propietario y los demás usuarios solo tienen permiso de lectura ( y ). Mientras tanto, los caracteres drwxrwx--- indican que el usuario propietario del archivo y todos los usuarios que pertenecen al grupo propietario tienen permisos de lectura, escritura y ejecución ( y ), mientras que los demás usuarios no pueden acceder (). El primer carácter representa el tipo de archivo.

Puede listar los archivos que pertenecen a un usuario o a un grupo con la herramienta find:

# find / -group nombredegrupo
# find / -group númerodegrupo
# find / -user usuario

El usuario y el grupo propietarios de un archivo pueden ser cambiados con la orden chown (change owner). Los permisos de acceso a un archivo se pueden cambiar con la orden chmod (change mode).

Véase , chmod(1), y Linux file permissions para obtener información adicional.

Shadow

Las herramientas de gestión de usuarios, grupos y contraseñas en Arch Linux provienen del paquete , que es una dependencia del meta paquete .

Lista de archivos

ArchivoPropósito
Información reservada de las cuentas de usuario
Información de las cuentas de usuario
Contiene información reservada de los grupos de usuarios
Define los grupos a los que pertenecen los usuarios

Administración de usuarios

Para listar los usuarios que actualmente están conectados en el sistema, se puede usar la orden who. Para listar todas las cuentas de usuario existentes, incluidas sus propiedades almacenadas en la base de datos del usuario, ejecute passwd -Sa como superusuario. Véase para la descripción del formato de salida.

Para añadir un nuevo usuario, utilice el comando useradd:

# useradd -m -G grupos_adicionales -s intérprete_de_línea_de_órdenes nombre_de_usuario
/
crea el directorio del usuario como /home/usuario. Dentro de este directorio, un usuario que no es superusuario puede escribir archivos, eliminarlos, instalar programas, etc.
/
introduce una lista de grupos suplementarios de los que el usuario también es miembro. Cada grupo está separado del siguiente mediante una coma, sin espacios intermedios. Por defecto el usuario pertenece solo al grupo inicial.
/
define la ruta y el nombre de archivo del intérprete de línea de órdenes de inicio de sesión predeterminado del usuario. Una vez que se completa el arranque, el intérprete de línea de órdenes de inicio de sesión predeterminado es el que se especifica aquí. Asegúrese de que el intérprete de línea de órdenes elegido esté instalado si es distinto a Bash.
Nota: La contraseña del usuario recién creado debe definirse después, utilizando passwd como se muestra en #Ejemplo para añadir un usuario.

Si un grupo de inicio de sesión se especifica por nombre o número, debe referirse a un grupo ya existente. Si no se especifica, el comportamiento de useradd dependerá de la variable contenida en . El comportamiento predeterminado () es crear un grupo con el mismo nombre del usuario.

Cuando el intérprete de línea de órdenes de inicio de sesión no es funcional, por ejemplo, cuando la cuenta de usuario se crea para un servicio específico, se puede especificar en lugar de un intérprete de línea de órdenes normal para rechazar amablemente el inicio de sesión (véase nologin(8)).

Consulte para ver otras opciones.

Ejemplo para añadir un usuario

Para añadir un nuevo usuario llamado , creando su directorio de inicio y usando todos los valores predeterminados en términos de grupos, nombres de carpetas, intérpretes de órdenes utilizados y otros parámetros:

# useradd -m archie

Aunque no es necesario proteger al usuario recién creado con una contraseña, se recomienda encarecidamente hacerlo:

# passwd archie

La orden useradd anterior también creará automáticamente un grupo llamado y lo convierte en el grupo predeterminado para el usuario . Hacer que cada usuario tenga su propio grupo (con el nombre de grupo igual al nombre del usuario) es la forma de añadir usuarios preferida.

También puede hacer que el grupo predeterminado sea distinto usando la opción , pero tenga en cuenta que en sistemas multiusuario, no se recomienda utilizar un único grupo predeterminado (por ejemplo, users) para cada usuario. La razón es que, por lo general, el método para facilitar el acceso de escritura compartido para grupos específicos de usuarios establece el valor de usuario umask en , lo que significa que el grupo predeterminado siempre tendrá acceso de escritura a cualquier archivo que cree. Véase también User Private Groups. Si un usuario debe ser miembro de un grupo específico, especifique ese grupo como un grupo suplementario al crear el usuario.

En el escenario recomendado, donde el grupo predeterminado tiene el mismo nombre que el usuario, todos los archivos se pueden escribir de forma predeterminada solo por el usuario que los creó. Para permitir el acceso de escritura a un grupo específico, los archivos/carpetas compartidos se pueden escribir de forma predeterminada por todos en este grupo y, el grupo propietario, se puede fijar automáticamente al grupo dueño del directorio personal estableciendo el bit setgid en este directorio:

# chmod g+s nuestro_directorio_compartido

De lo contrario, se utiliza el grupo predeterminado del creador del archivo (generalmente el mismo que el nombre de usuario).

Si se requiere un cambio de GID temporalmente, también puede usar la orden newgrp para cambiar el GID predeterminado del usuario a otro GID en tiempo de ejecución. Por ejemplo, después de ejecutar los archivos creados por el usuario se asociarán con el GID de , sin necesidad de volver a iniciar sesión. Para volver al GID predeterminado, ejecute newgrp sin un nombre de grupo.

Ejemplo para añadir un usuario del sistema

Los usuarios del sistema se pueden usar para ejecutar procesos/demonios bajo un usuario diferente, protegiendo (por ejemplo, con chown) en archivos y/o directorios y más ejemplos de fortalecimiento informático.

Con la orden siguiente se crea un usuario del sistema sin acceso al intérprete de línea de órdenes y sin un directorio personal (opcionalmente se añade el parámetro -U para crear un grupo con el mismo nombre que el usuario, y se añade el usuario a este grupo):

# useradd -r -s /usr/bin/nologin usuario

Si el usuario del sistema requiere un ID de usuario y grupo específico, indíquelos con las opciones / y / al crear el usuario:

# useradd -r -u 850 -g 850 -s /usr/bin/nologin usuario

Cambio del nombre de inicio de sesión de un usuario o el directorio personal

Para cambiar el directorio de inicio de un usuario:

# usermod -d /mi/nuevo/directorio/personal -m usuario

La opción también crea automáticamente el nuevo directorio y mueve el contenido allí.

Para cambiar el nombre de inicio de sesión de un usuario:

# usermod -l nombrenuevo nombreantiguo
Advertencia: Asegúrese de no haber iniciado sesión como el usuario cuyo nombre va a cambiar. Abra un nuevo tty (p.ej. Ctrl+Alt+F6) e inicie sesión como superusuario o como otro usuario y eleve a superusuario. usermod debería evitar que haga esto por error.

Cambiar un nombre de usuario es seguro y fácil cuando se hace correctamente, simplemente use la orden usermod. Si el usuario está asociado a un grupo con el mismo nombre, puede cambiarle el nombre con la orden groupmod.

Alternativamente, el archivo puede modificarse directamente, véase #Base de datos del usuario para una introducción a su formato.

Tenga también en cuenta las siguientes notas:

  • Si está utilizando sudo, asegúrese de actualizar para reflejar el nuevo nombre de usuario (a través de la orden visudo como superusuario).
  • Los crontabs personales debe ajustarse al cambiar el nombre del archivo del usuario en del antiguo al nuevo nombre, y luego abrir para cambiar las rutas relevantes y ajustar los permisos del archivo en consecuencia.
  • Los archivos/carpetas personales de Wine contenidos en , y posiblemente otros necesiten ser renombrados/modificados manualmente.
  • Es posible que sea necesario volver a instalar ciertos complementos de Thunderbird, como Enigmail.
  • Cualquier cosa en su sistema (atajos de escritorio, scripts del intérprete de línea de órdenes, etc.) que use una ruta de acceso absoluta a su directorio personal (es decir, ) deberá modificarse para reflejar su nuevo nombre. Para evitar estos problemas en los scripts del intérprete de línea de órdenes, use las variables o $HOME para definir el directorios personal.
  • Además, no olvide modificar en consecuencia los archivos de configuración en que dependan de su ruta absoluta (p.ej. Samba, CUPS, etc.). Una buena forma de aprender qué archivos necesita actualizar implica usar la orden grep de esta manera:

Otros ejemplos de administración de usuarios

Para introducir información del usuario como comentarios en GECOS (por ejemplo, el nombre de usuario completo), escriba:

# chfn usuario

(De esta forma chfn se ejecuta en modo interactivo).

Alternativamente, el comentario de GECOS se puede establecer de forma más liberal con:

# usermod -c "Comentario" usuario

Para marcar la contraseña de un usuario como caducada y solicitarles que creen una nueva la primera vez que inician sesión, escriba:

# chage -d 0 usuario

Las cuentas de usuario se pueden eliminar con la orden userdel:

# userdel -r usuario

La opción -r especifica que el directorio de inicio y la cola de mensajes del usuario también deben eliminarse.

Para cambiar el intérprete de línea de órdenes de inicio de sesión del usuario:

# usermod -s /bin/bash usuario

Base de datos del usuario

La información del usuario local se almacena en el archivo de texto sin formato : cada una de sus líneas representa una cuenta de usuario y tiene siete campos delimitados por dos puntos.

cuenta:contraseña:UID:GID:GECOS:directorio:intérprete_de_línea_de_órdenes

Donde:

  • es el nombre de usuario. Este campo no puede estar vacío. Se aplican las reglas de nomenclatura estándar de *NIX.
  • es la contraseña del usuario
  • es la identificación numérica del usuario. En Arch, el primer nombre de inicio de sesión (después del superusuario) para un llamado usuario normal, a diferencia de los servicios, es UID 1000 de forma predeterminada; las entradas subsecuentes de UID para los usuarios deberían ser mayores a 1000.
  • es la identificación numérica del grupo principal para el usuario. Los valores numéricos para los GID se enumeran en /etc/group.
  • GECOS es un campo opcional utilizado con fines informativos; generalmente contiene el nombre de usuario completo, pero también puede ser utilizado por servicios como finger y se puede administrar con la orden chfn. Este campo es opcional y puede dejarse en blanco.
  • es utilizado por la orden de inicio de sesión para establecer la variable de entorno $HOME. Varios servicios con sus propios usuarios usan , pero los usuarios normales generalmente establecen una carpeta bajo .
  • es la ruta al intérprete de línea de órdenes predeterminado del usuario. Este campo es opcional y su valor predeterminado es .

Ejemplo:

jack:x:1001:1003:Jack Smith,algún comentario va aquí,,:/home/jack:/bin/bash

Desglosado, esto significa: usuario jack, cuya contraseña está en , cuyo UID es 1001 y cuyo grupo principal es 1003. Jack Smith es su nombre completo y existe un comentario asociado a su cuenta; su directorio personal es y está usando Bash.

La orden pwck se puede usar para verificar la integridad de la base de datos del usuario. Puede ordenar la lista de usuarios por GID al mismo tiempo, lo que puede ser útil para comparar:

# pwck -s

Comprobaciones automáticas de integridad

En lugar de ejecutar manualmente, el servicio systemd , que es parte y está activado por la instalación del paquete , ejecutará a diario la comprobación tanto a los grupos como a los usuarios.

Si se encuentran discrepancias, el grupo se puede editar con la orden vigr y los usuarios con . Esto proporciona un margen adicional de protección ya que estas órdenes bloquean las bases de datos para su edición. Tenga en cuenta que el editor de texto predeterminado es vi, pero se usará un editor alternativo si se establece la variable de entorno , entonces se utilizará ese editor en su lugar.

Administración de grupos

es el archivo que define los grupos en el sistema (véase  para más detalles). También está su compañero  que rara vez se utiliza. Sus detalles están en .

La orden groups muestra la pertenencia al grupo:

$ groups usuario

Si se omite , se muestran los grupos a los que pertenece el usuario actual.

La orden id proporciona detalles adicionales, tales como el UID del usuario y los GID asociados:

$ id usuario

Para listar todos los grupos en el sistema:

$ cat /etc/group

Cree un nuevo grupo con la orden groupadd:

# groupadd grupo

Añada un usuario a un grupo con la orden gpasswd (véase FS#58262 sobre los errores):

# gpasswd -a usuario grupo

Alternativamente, añada un usuario a grupos adicionales con usermod (reemplace por una lista separada por comas):

# usermod -aG grupos_adicionales usuario

Modifique un grupo existente con la orden groupmod, p.ej. para cambiar el nombre del grupo grupo_antiguo a : grupo_nuevo}}):

# groupmod -n grupo_nuevo grupo_antiguo

Puede eliminar un grupo existente:

# groupdel grupo

Puede eliminar un usuario de un grupo:

# gpasswd -d usuario grupo

La orden grpck se puede utilizar para comprobar la integridad de los archivos de grupo del sistema.

Listado de grupos

Esta sección explica el propósito de los grupos esenciales del paquete . Hay muchos otros grupos, que se crearán con el GID correcto cuando se instale el paquete correspondiente. Véase la página principal del software para más detalles.

Grupos de usuarios

A menudo, los usuarios que no son superusuarios de la computadora deben añadirse a algunos de los siguientes grupos para permitir el acceso a los periféricos y facilitar la administración del sistema:

GrupoArchivos afectadosPropósito
admGrupo de administración, comúnmente utilizado para dar acceso de lectura a registros protegidos. Tiene acceso de lectura completo a los archivos journal.
ftpAcceso a archivos servidos por servidores FTP.
games/var/gamesAcceso a algunas aplicaciones de juegos.
httpAcceso a archivos servidos por servidores HTTP.
logAcceso a archivos de registro en creados por syslog-ng.
rfkillDerecho a controlar el estado de energía de los dispositivos inalámbricos (utilizado por rfkill).
sysDerecho a administrar impresoras en CUPS.
systemd-journal/var/log/journal/*Se utiliza para proporcionar acceso de solo lectura a los registros systemd, como una alternativa a y . De lo contrario, solo se muestran los mensajes generados por el usuario.
uucp, , , /dev/ttyACM[0-9]+, Acceso a los puertos serie RS-232 y dispositivos conectados a ellos.
wheelGrupo de administración, comúnmente utilizado para dar privilegios para realizar acciones administrativas. Tiene acceso de lectura total a los archivos journal y el derecho de administrar impresoras en CUPS. Puede ser utilizado también para dar acceso a las utilidades sudo y su (ninguno lo usa por defecto.

Grupos del sistema

Los siguientes grupos se utilizan para fines del sistema, solo es necesario su asignación a los usuarios para fines específicos:

GrupoArchivos afectadosPropósito
dbusUtilizado internamente por
kmem, ,
locate/usr/bin/locate, , , Véase Locate.
lp, Acceso a dispositivos de puerto paralelo (impresoras y otros).
mail/usr/bin/mail
nobodyGrupo sin privilegios.
procUn grupo autorizado para aprender información de procesos que de lo contrario está prohibida por la opción de montaje del sistema de archivos de proc. El grupo debe establecerse explícitamente con la opción de montaje .
rootAdministración y control completo del sistema (root, admin).
smmspGrupo sendmail.
tty, /dev/vcc, ,
utmp, /var/log/btmp,

Grupos pre-systemd

Antes de que Arch migrase a systemd, los usuarios tenían que añadirse manualmente a estos grupos para poder acceder a los dispositivos correspondientes. Esta metodología está obsoleta en favor de udev marcando los dispositivos con tag y logind asignando los permisos a los usuarios dinámicamente a través de ACLs según la sesión que esté actualmente activa. Tenga en cuenta que la sesión no debe interrumpirse para que esto funcione (véase Permisos de sesión para comprobarlo).

Hay algunas excepciones notables que requieren añadir un usuario a algunos de estos grupos: por ejemplo, si desea permitir que los usuarios accedan al dispositivo incluso cuando no están conectados. Sin embargo, tenga en cuenta que añadir usuarios a los grupos puede incluso causar la rotura de alguna funcionalidad (por ejemplo, el grupo romperá el cambio rápido de usuario y permite que las aplicaciones bloqueen el mezclador por software).

GrupoArchivos afectadosPropósito
audio, , /dev/rtc0Acceso directo a hardware de sonido para todas las sesiones. Todavía es necesario hacer que ALSA y OSS funcionen en sesiones remotas, véase ALSA#User privileges. También utilizado por JACK para dar a los usuarios permisos de procesamiento en tiempo real.
diskAcceso a dispositivos de bloques no afectados por otros grupos como , , y storage.
floppyAcceso a unidades de disquete.
input, Acceso a dispositivos de entrada. Introducido en systemd 215 .
kvmAcceso a máquinas virtuales usando KVM.
optical, Acceso a dispositivos ópticos como unidades de CD y DVD.
scannerAcceso al hardware del escáner.
storage/dev/st[0-9]*[lma]*, Utilizado para obtener acceso a unidades extraíbles como discos duros USB, unidades flash, reproductores de MP3; permite al usuario montar dispositivos de almacenamiento. Now solely for direct access to tapes if no custom udev rules is involved.
video, Acceso a dispositivos de captura de vídeo, aceleración por hardware 2D/3D, framebuffer (se puede utilizar X sin pertenecer a este grupo).

Grupos no utilizados

Los siguientes grupos no tienen actualmente ninguna propósito:

GrupoArchivos afectadosPropósito
binningunoHistórico
daemon
lockUsado para el acceso de bloqueo de archivos. Requerido por ejemplo en .
mem
networkNo utilizado por defecto. Puede ser utilizado, por ejemplo para otorgar acceso a NetworkManager (véase NetworkManager#Set up PolicyKit permissions).
power
uuidd
usersEl grupo primario para usuarios cuando no se utilizan grupos privados de usuarios (generalmente no recomendado), p.ej. al crear usuarios con en o la opción -N/ de useradd.

Otras herramientas relacionadas con estas bases de datos

se puede utilizar para leer un registro en particular.
% getent group tty

Como se advirtió en #Base de datos del usuario, utilizar utilidades específicas como y chfn, es una mejor forma de cambiar las bases de datos. Sin embargo, hay momentos en que hay que editarlos directamente. Para estos casos se proporcionan y vigr. Se recomienda encarecidamente utilizar estos editores personalizados antes que un editor de texto general, ya que bloquean las bases de datos contra la modificación concurrente. También ayudan a evitar entradas no válidas y/o errores de sintaxis. Tenga en cuenta que Arch Linux prefiere la utilización de herramientas específicas, tales como chage, para modificar la base de datos en vez de utilizar y de . véase también .

gollark: <@151391317740486657> Carrier grade NAT. Basically, an extra layer of NAT in front of your router, so you don't have a public IP address.
gollark: I should really read the docs more. I was just using it to write ™ more easily on my laptop, but this is great.
gollark: Wait, you can set custom compose key stuff?!
gollark: <@151391317740486657> CGNAT is a thing.
gollark: no.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.