Linux #02.08 Usuarios y Grupos en Linux

Gestión de Usuarios
Ficheros de Configuración de Usuarios y Grupos
Comandos Útiles para la Gestión de Usuarios
Añadiendo Usuarios
Añadiendo Grupo
Vencimiento de Contraseña
Eliminando Usuarios
Poniendo Atributos al Usuario
Configuración de Grupos y Usuarios con la Herramienta Gráfica de Red Hat Mandrake 9

Gestión de usuarios

Lo usuarios de los sistemas GNU/Linux tienen asociada una cuenta con todos sus datos, además del espacio en disco para poder desarrollar sus archivos y directorios.

Hay diferentes tipos de cuentas asociadas a usuarios:

  • La del administrador, el usuario root es el que posee más permisos en el sistema. Este solo debería ser utilizado para las tareas administrativas, ya que este puede causar daños o errores en el sistema. Así que se recomienda no utilizar dicha cuenta como un usuario normal.
  • Cuentas de usuarios: cuentas para cualquier usuario de la maquina, con permisos restringidos al uso de los ficheros de su cuenta, además de utilizar los dispositivos que se le haya habilitado.
  • Cuentas especiales de los servicios: lp, news, wheel, www-data,… cuentas que no son usadas por servicios internos del sistema. Algunos de los servicios también son usados bajo el nombre de root.

Un usuario se crea mediante la especificación de un nombre (o identificador de usuario), una palabra de paso (password) y un directorio personal asociado (la cuenta).

Ficheros de Configuración de Usuarios y Grupos

La información de los usuarios del sistema está incluida en los siguientes archivos:

/etc/passwd: Información sobre el usuario.

/etc/shadow: Información de contraseñas de usuarios.

/etc/group: Información de grupos.

/etc/gshadow: Información de contraseñas de grupo.

Ejemplo de unas Líneas del /Etc/Passwd:

juan:x:1000:1000:Juan García,,,:/home/juan:/bin/bash

root:x:0:0:root:/root:/bin/bash

Nota: si aparecen”:” seguidos, el campo está vacío.

  • juan: identificador de usuario en el sistema.
  • x: palabra de paso del usuario codificada, si hay una “x” es que se encuentra en el fichero /etc/shadow.
  • 1000: código del usuario, lo usa el sistema como código de identidad del usuario.
  • 1000: código del grupo principal al que pertenece, la información del grupo en /etc/group.
  • Juan García: comentario, suele ponerse el nombre completo del usuario.
  • /home/juan: directorio personal asociado a su cuenta.
  • /bin/bash: shell interactivo que utilizará el usuario al interactuar con el sistema, en modo texto, o por shell gráfico. En este caso, el shell Bash de GNU, que es el utilizado por defecto.

Para evitar que cualquier usuario del sistema pueda acceder al fichero de contraseñas, existe un fichero donde se encuentra la información de estas, que es sólo accesible al usuario root y en forma de sólo lectura. El fichero es /etc/shadow, el contenido del cual podría ser algo parecido a lo siguiente:

juan:a1gNcs82ICst8CjVJS7ZFCVnu0N2pBcn/:12208:0:99999:7:::

donde se encuentra el identificador del usuario junto con la palabra de paso encriptada. Además, aparecen (como campos separados por “:”):

  • Días desde 1 de enero de 1970 en que la palabra de paso se cambió por última vez.
  • Días que faltan para que se cambie (0 no hay que cambiarla).
  • Días después en que hay que cambiarla (o sea, plazo de cambio).
  • Días en que el usuario será avisado antes de que le expire.
  • Días una vez expirado cuando se le deshabilitará la cuenta.
  • Días desde 1 enero 1970 en que la cuenta está deshabilitada.
  • Y un campo reservado.

En /etc/group está la información de los grupos de usuarios: jose:x:1000:

Donde tenemos: nombre-grupo:contraseña grupo:identificador-del grupo:lista-usuarios

La lista de usuarios del grupo puede estar o no, ya que esa información la tenemos en /etc/passwd.

Los grupos también pueden poseer una contraseña, también existe un fichero de tipo shadow: /etc/gshadow.

Otros ficheros interesantes son los del directorio /etc/skel, donde se hallan los ficheros que se incluyen en cada cuenta de usuario al crearla.

Ejemplos: (ficheros de configuración)

Fichero /Etc/Passwd

root::0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/sh

daemon:x:2:2:daemon:/sbin:/bin/sh

adm:x:3:4:adm:/var/adm:/bin/sh

lp:x:4:7:lp:/var/spool/lpd:/bin/sh

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/bin/sh

news:x:9:13:news:/var/spool/news:/bin/sh

uucp:x:10:14:uucp:/var/spool/uucp:/bin/sh

operator:x:11:0:operator:/var:/bin/sh

games:x:12:100:games:/usr/games:/bin/sh

nobody:x:65534:65534:Nobody:/:/bin/sh

rpm:x:13:101:system user for rpm:/var/lib/rpm:/bin/false

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

rpc:x:70:70:system user for portmap:/:/bin/false

xfs:x:71:71:system user for xorg-x11:/etc/X11/fs:/bin/false

postfix:x:72:72:system user for postfix:/var/spool/postfix:/bin/false

messagebus:x:73:73:system user for dbus:/:/sbin/nologin

apache:x:74:74:system user for apache2:/var/www:/bin/sh

rpcuser:x:75:75:system user for nfs-utils:/var/lib/nfs:/bin/false

sshd:x:76:76:system user for openssh:/var/empty:/bin/true

ftp:x:77:77:system user for proftpd:/var/ftp:/bin/false

postgres:x:78:78:system user for postgresql:/var/lib/pgsql:/bin/bash

inma:x:501:501:Inma:/home/inma:/bin/bash

invitado:x:502:502:Invitado:/home/invitado:/bin/bash

Fichero /Etc/Shadow

root::12810:0:99999:7:::

bin:*:12810:0:99999:7:::

daemon:*:12810:0:99999:7:::

adm:*:12810:0:99999:7:::

lp:*:12810:0:99999:7:::

sync:*:12810:0:99999:7:::

shutdown:*:12810:0:99999:7:::

halt:*:12810:0:99999:7:::

mail:*:12810:0:99999:7:::

news:*:12810:0:99999:7:::

uucp:*:12810:0:99999:7:::

operator:*:12810:0:99999:7:::

games:*:12810:0:99999:7:::

nobody:*:12810:0:99999:7:::

rpm:!!:12810:0:99999:7:::

vcsa:!!:12810:0:99999:7:::

rpc:!!:12810:0:99999:7:::

xfs:!!:12810:0:99999:7:::

postfix:!!:12810:0:99999:7:::

messagebus:!!:12810:0:99999:7:::

apache:!!:12810:0:99999:7:::

rpcuser:!!:12810:0:99999:7:::

sshd:!!:12810:0:99999:7:::

ftp:!!:12810:0:99999:7:::

postgres:!!:12810:0:99999:7:::

inma:$1$hzS96Uy3$Y.IL.IuJ2hV9OX9yotorO.:12810:0:99999:7:::

invitado:$1$bIP.KWXT$w2SOOfwhXJ0OYaIYu28YY1:12810:0:99999:7:::

Comandos Útiles para la Gestión de Usuarios

useradd: añadir un usuario al sistema.

  • userdel: borrar un usuario del sistema.
  • usermod: modificar un usuario del sistema.
  • groupadd, groupdel, groupmod lo mismo para grupos.
  • newusers, chpasswd: permiten crear varias cuentas desde la información introducida en un fichero (newusers) o bien cambiar las contraseñas a un gran número de usuarios (chpasswd)
  • chsh: cambiar el shell de login del usuario.
  • chfn: cambiar la información del usuario, la presente en el comentario del fichero /etc/passwd.
  • passwd: cambia la contraseña de un usuario.
  • su: una especie de cambio de identidad. Lo utilizan tanto usuarios, como el root para cambiar el usuario actual.

NOTA: Para más detalle de cada uno de estos comandos, consulte el man.

Añadiendo Usuarios

Para añadir un usuario al sistema:

  • Comando useradd para crear una cuenta de usuario bloqueada:

useradd

  • Desbloquee la cuenta ejecutando el comando passwd para asignar una contraseña y configurar el vencimiento:

passwd

Opciones del comando useradd. (Ver fotografía)

EXPLICACIÓN DEL PROCESO

¿Qué ocurre al escribir useradd juan?

  1. Se crea una línea para juan en /etc/passwd. La línea tiene:
    • Comienza con el nombre del usuario, juan.
    • Hay una x para el campo de contraseña indicando que es sistema está usando contraseñas ocultas.

    • Se crea un UID en o sobre 500.
    • Se crea un GID en o por encima de 500.
    • La información para el GECOS óptimo se deja en blanco.
    • El directorio principal se configura a /home/juan/.
    • El intérprete de comandos predeterminado se configura a /bin/bash.
  1. Se crea una nueva línea para juan en /etc/shadow. La línea tiene:
    • Comienza con el nombre del usuario, juan.
    • Aparecen dos símbolos de exclamación (!!) en el campo de la contraseña, lo cual bloquea la cuenta.
    • Se configura la contraseña para que no caduque nunca.
  1. Se crea una nueva línea para un grupo llamado juan en /etc/group.La línea creada en /etc/group tiene:
    • Comienza con el nombre del grupo, juan.
    • Aparece una x en el campo de contraseña indicando que el sistema está usando contraseñas de grupo oculta.
    • El GID coincide con el listado para el usuario juan en /etc/passwd.
  1. Es creada una nueva línea para un grupo llamado juan en /etc/gshadow. La línea tiene:
    • Comienza con el nombre del grupo, juan.
    • Aparece un símbolo de exclamación (!) en el campo de contraseña del archivo /etc/gshadow, lo cual bloquea el grupo.
    • Todos los otros campos quedan en blanco.
  1. Se crea un directorio para el usuario juan en el directorio /home/.
  1. Los archivos dentro del directorio /etc/skel/ (lo cual contiene configuraciones predeterminadas del usuario) son copiadas en el nuevo directorio /home/juan/

Añadiendo grupos

Comando groupadd:

groupadd

Opciones del comando groupadd (Ver fotografía)

Ejemplos: (ficheros de configuración)

Fichero /Etc/Group

root:x:0:

bin:x:1:

daemon:x:2:messagebus

sys:x:3:

adm:x:4:

tty:x:5:

disk:x:6:

lp:x:7:

mem:x:8:

kmem:x:9:

wheel:x:10:

mail:x:12:

news:x:13:

uucp:x:14:

man:x:15:

floppy:x:19:

games:x:20:

cdrom:x:22:

utmp:x:24:

usb:x:43:

cdwriter:x:80:

audio:x:81:

video:x:82:

users:x:100:

nogroup:x:65534:

rpm:x:101:

xgrp:x:102:xfs

ntools:x:103:

ctools:x:104:

vcsa:x:69:

rpc:x:70:

xfs:x:71:

postfix:x:72:

postdrop:x:105:postfix

messagebus:x:73:

apache:x:74:

rpcuser:x:75:

sshd:x:76:

machines:x:421:

slocate:x:422:

ftp:x:77:

postgres:x:78:

inma:x:501:

invitado:x:502:

Fichero /Etc/Gshadow

root:::

bin:::

daemon:::messagebus

sys:::

adm:::

tty:::

disk:::

lp:::

mem:::

kmem:::

wheel:::

mail:::

news:::

uucp:::

man:::

floppy:::

games:::

cdrom:::

utmp:::

usb:::

cdwriter:::

audio:::

video:::

users:::

nogroup:::

rpm:!::

xgrp:!::xfs

ntools:!::

ctools:!::

vcsa:!::

rpc:!::

xfs:!::

postfix:!::

postdrop:!::postfix

messagebus:!::

apache:!::

rpcuser:!::

sshd:!::

machines:!::

slocate:!::

ftp:!::

postgres:!::

Vencimiento de Contraseña

Para configurar el vencimiento de la contraseña para un usuario desde el intérprete de comandos, usaremos el comando chage, seguido de una opción de la tabla, seguido por el ‘nombredeusuario’ del usuario.

Importante: La contraseña oculta debe estar activada para poder usar el comando chage. (Ver fotografía)

Para obligar al usuario a configurar su contraseña la primera vez que se conecte en la consola, siga los pasos siguientes.

  1. Bloquear la contraseña del usuario — Si el usuario no existe, use el comando useradd para crear la cuenta del usuario.

    Si la contraseña ya está activa, bloquéela con el comando:

    usermod -L nombredeusuario

  2. Obligar el vencimiento inmediato de la contraseña — Escriba el comando siguiente:

    chage -d 0 nombredeusuario

  3. Este comando coloca el valor para la fecha en que la contraseña fue cambiada la última vez (Enero 1, 1970).
  4. Desbloquear la cuenta — Hay dos formas. El administrador puede asignar una contraseña inicial o puede asignar una contraseña nula.
  5. Para asignar una contraseña inicial:
    • Arranque el intérprete de línea de comandos python con el comando python. Se mostrará lo siguiente:

Python 2.2.2 (#1, Dec 10 2002, 09:57:09)

[GCC 3.2.1 20021207 (Red Hat Linux 8.0 3.2.1-2)] on linux2

Type «help», «copyright», «credits» or «license» for more information.

>>>

    • En la línea de comandos, escriba lo siguiente (sustituyendo contraseña con la contraseña a encriptar y salt con una combinación de exactamente 2 caracteres en mayúsculas o minúsculas, números, y el carácter punto (.) o la barra (/)):

import crypt; print

crypt.crypt(«password»,»salt»)

    • La salida es la contraseña encriptada similar a 12CsGd8FRcMSM.
    • Presione [Ctrl]-[D] para salir del intérprete Python.
    • Corte o pegue la salida exacta de la contraseña encriptada, sin dejar espacios en blanco al principio o final, en el siguiente comando:

usermod -p «contraseña-encriptada»

nombredeusuario

  1. Se puede asignar una contraseña nula con el comando:usermod -p «» username
  2. En cualquier caso, luego de la conexión inicial, se le pedirá al usuario una nueva contraseña.

Eliminando usuarios

Borrar usuarios puede hacerse con los comandos userdel o deluser dependiendo de qué software fuera instalado en el sistema. Y se hace de la misma forma que añadir.

Por ejemplo: cambiando la línea de /etc/passwd correspondiente a kiwi a kiwi:*Xv8Q981g71oKK:102:100: Laura Poole: /home/kiwi: /bin/bash evitará que kiwi se conecte.

También podemos usar el comando: userdel

Poniendo Atributos al Usuario

Después de que haya creado un usuario, puede necesitar cambiar algún atributo de dicho usuario, como puede ser el directorio inicial o la clave.

La forma más simple de hacer esto es cambiar los valores directamente en /etc/passwd. Para poner clave a un usuario, utilice el comando passwd.

Por ejemplo: # passwd larry cambiará la clave de larry.

Sólo root puede cambiar la clave de otro usuario de ésta forma.

Los usuarios pueden cambiar su propia clave con passwd también.

Configuración de Grupos y Usuarios con la Herramienta Gráfica de Red Hat Mandrake 9

CONFIGURACIÓN DE GRUPOS Y DE USUARIOS

El Administrador de usuarios le permite visualizar, modificar, añadir y borrar los usuarios y grupos locales. Para usar el Administrador de usuarios, debe estar ejecutando el sistema X Window y tener privilegios de root y tener el paquete RPM redhat-config-users instalado. Para iniciar el Administrador de usuarios desde el escritorio, Botón del menú principal (en el Panel) => Configuración del sistema => Gestor de usuarios o escriba el comando redhat-config-users en el intérprete del shell. (Ver fotografía)

Para visualizar una lista de usuarios la pestaña Usuarios. Para visualizar lista de todos los grupos pestaña Grupos.

Si necesita encontrar un usuario o grupo específico, teclee las primeras letras del nombre en el campo Buscar filtro.

Para clasificar usuarios y grupos, haga clic en el nombre de la columna. Usuarios y grupos serán clasificados por el valor de la columna.

Red Hat Linux reserva los IDs de usuario por debajo de 500 para los usuarios del sistema. Por defecto, el Administrador de usuarios no visualiza los usuarios del sistema. Para visualizar todos los usuarios, incluyendo los usuarios del sistema, Preferencias => Sistema de filtrado de usuarios y grupos desde el menú desplegadle.

AÑADIR UN NUEVO USUARIO

Para añadir un nuevo usuario, haga clic en el botón Añadir usuario. Escriba el nombre de usuario y el nombre completo para el nuevo usuario en los campos apropiados. Teclee la contraseña de usuario en los campos Contraseña y Confirmar contraseña.

Seleccione una shell de registro. El directorio principal por defecto es /home/nombredeusuario. Puede cambiar el directorio principal que se ha creado para el usuario o puede escoger no crear el directorio principal anulando la selección Crear directorio de conexión.

Red Hat Linux utiliza un esquema grupo de usuario privado (UPG). El esquema UPG no añade ni cambia nada en el modo estándar de UNIX de gestionar grupos. Siempre que cree un nuevo usuario, por defecto, se crea un grupo único con el mismo nombre que el del usuario

Para especificar el ID del usuario, seleccione Especificar el ID del usuario manualmente. Si la opción no ha sido seleccionada, se asignará al nuevo usuario el próximo ID del usuario disponible que empiece con el número 500. Red Hat Linux se reserva los IDs de usuario por debajo de 500 para los usuarios de sistemas. Pulse OK para crear el usuario. Ver imagen

MODIFICAR LAS PROPIEDADES DEL USUARIO

Para ver las propiedades de un usuario ya existente, haga clic en la pestaña Usuarios, seleccione el usuario de la lista de usuarios y haga clic en Propiedades desde el menú de botones (o escoja Fichero => Propiedades desde el menú desplegadle). Aparecerá una ventana parecida a la Figura 3. Ver imagen

La ventana Propiedades de los usuarios está dividida en dos páginas:

  • Datos de Usuario — Información básica del usuario configurada cuando ha añadido el usuario.
  • Información de la cuenta
  • Información de la contraseña — Esta pestaña muestra la fecha en que el usuario cambió la contraseña por última vez.
  • Grupos — Seleccione los grupos de los que desea que el usuario sea miembro.

AÑADIR UN NUEVO GRUPO

Pulse el botón Añadir Grupo. Aparecerá una ventana parecida a la Figura 4 nombre del grupo nuevo que desea crear. Para especificar un ID de grupo para el nuevo grupo seleccione Especificar el ID de grupo manualmente y seleccione el GID. Red Hat Linux reserva los IDs de grupo menores de 500 para los grupos de sistemas. Ver imagen

Pulse OK para crear el grupo. Aparecerá un grupo nuevo en la lista.

MODIFICAR LAS PROPIEDADES DEL GRUPO

Para ver las propiedades de un grupo ya existente, seleccione el grupo desde la lista de grupos y pulse Propiedades desde el menú (o seleccione Archivo => Propiedades desde el menú desplegadle). 

Resumen

Los usuarios de un sistema GNU/Linux disponen normalmente de una cuenta asociada con sus datos, junto con el espacio en disco para que puedan desarrollar sus archivos y directorios. Este espacio está asignado al usuario, y sólo puede ser usado por éste (a no ser que los permisos especifiquen cosas diferentes).

  • Existen tres tipos de cuentas: las del administrador, las del usuario y cuentas especiales de los servicios.
  • Los ficheros de configuración de grupos y usuarios son: /etc/passwd, /etc/shadow, /etc/group y /etc/gshadow. El único que tiene permisos para modificar estos ficheros es el usuario root.
  • Los comandos que utilizamos para la gestión de usuarios son: useradd, userdel, usermod, groupadd, groupdel, groupmod, newusers, chpasswd, chsh, chfn, passwd, su.