Cómo cambiar los datos del usuario con chfn y usermod en Linux

Una ventana de terminal de Linux en una computadora portátil estilo Ubuntu.
Fatmawati Achmad Zaenuri / Shutterstock

Hay más en una cuenta de usuario que un nombre de usuario. Aprenda a configurar y cambiar todos los metadatos asociados con una cuenta de usuario de Linux desde la línea de comandos.

¿Lo que hay en un nombre?

Si usa una computadora Linux o similar a Unix, tendrá una cuenta de usuario. El nombre dado a la cuenta es su nombre de cuenta de usuario. Este es el nombre que usa para iniciar sesión. También es (por defecto) el nombre de su grupo de inicio de sesión y el nombre de su directorio de inicio. Todos usan el mismo identificador.

Existe otro conjunto de información que se puede almacenar para cada cuenta de usuario. Los datos del mundo real, como el nombre completo de la persona, su número de oficina y su número de teléfono del trabajo, por ejemplo, se pueden definir y adjuntar a ellos. De hecho, se pueden etiquetar fragmentos de información completamente arbitrarios en las cuentas de los usuarios.

En términos prácticos, esto será más útil para los administradores de sistemas que se ocupan de los equipos que tienen muchas cuentas de usuario configuradas. Pero incluso para la computadora Linux de un solo usuario, siempre es interesante saber qué sucede debajo del capó.

El campo GECOS

En un momento, los pioneros de Unix no tenían impresora propia. Tuvieron que enviar sus trabajos de impresión a un mainframe de General Electric que ejecutaba el Sistema Operativo Integral de General Electric (GECOS). Para lograr eso, los usuarios de los sistemas Unix necesitaban almacenar y usar las credenciales de una cuenta en el sistema GECOS.

El campo GECOS se creó para almacenar esas credenciales. Ese mismo requisito de nicho ha pasado a la historia hace mucho tiempo, y el campo GECOS se ha reutilizado para almacenar otros datos relacionados con el propietario de la cuenta de usuario. Puede que tenga un nuevo trabajo, pero conserva su antiguo nombre. Todavía se llama campo GECOS.

El campo se almacena en el /etc/passwdarchivo, junto con otra información sobre la cuenta de usuario:

  • El nombre de usuario de la cuenta.
  • El ID de usuario.
  • El ID de grupo.
  • La ruta al directorio de inicio de la cuenta de usuario.
  • El shell que se inicia cuando el usuario inicia sesión.

Aquí es donde el comando de dedo y el comando de meñique recuperan la información que muestran.

Relacionado:  Cómo ver el espacio libre en disco y el uso del disco desde la terminal de Linux

El comando chfn

El chfn(cambiar la información del dedo) le permite configurar y modificar la información almacenada dentro del campo GECOS . La información se almacena como una lista separada por comas dentro del campo.

El chfncomando ya estaba presente en Ubuntu 18.04.1 y Manjaro 18.1.0. Tenía que estar instalado en Fedora 31. Use este comando para instalarlo:

sudo dnf instalar util-linux-user

sudo dnf instala util-linux-user en una ventana de terminal

Veamos qué fingerpuede averiguar sobre el propietario de la cuenta de usuario «dave». Para obtener la máxima información, usaremos la -lopción (formato largo):

dedo dave -l

finger dave -l en una ventana de terminal

Esto es lo que pudo encontrar:

Salida de finger dave -l en una ventana de terminal

Recupera el nombre de usuario de la cuenta, el directorio de inicio y el shell predeterminado. Todos estos están relacionados con la cuenta de usuario . No se refieren a la persona real que usa esa cuenta. Podemos usar el  chfn comando para almacenar información sobre la persona real.

chfn dave

chfn dave en una ventana de terminal

El uso chfnde esta forma inicia un proceso breve e interactivo. Se le solicita que ingrese un valor de datos para cada pieza de información que el campo GECOS puede contener. El valor actual de cada valor de datos se muestra entre corchetes []. Si desea mantener los datos actuales, puede presionar la tecla “Enter” y se mantendrá el valor entre corchetes.

El proceso interactivo de chfn en una ventana de terminal

La información que ingresamos fue:

  • Número de habitación : 512
  • Teléfono del trabajo : 555-4567
  • Teléfono de casa : 555-5432

Sesión de chfn completada en una ventana de terminal

Comprobemos que finger recoge esa nueva información:

dedo dave -l

finger dave -l en una ventana de terminal

Sí lo hace. Pero es posible que haya notado que no solicitó cambiar el nombre completo. Solo hará eso si usa sudo. Pero no tenemos que volver a pasar por toda la chfnsesión, solo porque nos olvidamos de usar sudo. Podemos cambiar cualquiera de los valores de los datos individualmente.

Cambiar los valores de los datos individuales

Podemos establecer el nombre completo para el propietario de la cuenta de usuario usando la -fopción (nombre completo), junto con sudo.

sudo chfn -f "Dave McKay" dave

sudo chfn -f "Dave McKay" dave en una ventana de terminal

Y si comprobamos una vez más con finger:

Salida del dedo en una ventana de terminal

Podemos ver que se ha agregado el nombre completo.

Hay otras opciones para cambiar el número de habitación, el número de teléfono de la casa y el número de teléfono del trabajo. Para cambiar el número de habitación (oficina), utilice la -ropción (número de habitación):

sudo chfn -r 633 dave

sudo chfn -r 633 dave en una ventana de terminal

Tenga en cuenta que en algunas distribuciones, puede utilizar la -oopción (número de habitación de la oficina) en lugar de la -ropción. Más sobre esto en breve. Por ahora, para ver las opciones para su versión de chfn, use:

hombre chfn

Para cambiar el número de teléfono de la oficina, use la -wopción (teléfono del trabajo):

sudo chfn -w 555-1122 dave

sudo chfn -w 555-1122 dave en una ventana de terminal

Y finalmente, para cambiar el número de teléfono de la casa, use la -hopción (número de teléfono de la casa):

sudo chfn -h 555-6576 dave

sudo chfn -h 555-6576 dave en una ventana de terminal

Usemos de finger nuevo para ver si se han aceptado todos esos cambios:

dedo dave -l

finger dave -l en una ventana de terminal

Éxito. Todos esos comandos han funcionado y los valores de los datos se han actualizado.

Relacionado:  ¿Linux acabó con el Unix comercial?

Uso de chfn en otras cuentas de usuario

Tanto para cambiar nuestra propia información, ¿qué hay de cambiar la información de GECOS para otros usuarios? Eso es igual de fácil. Debe usar sudocuando lo haga, pero esa es la única diferencia. Veamos qué datos están configurados para la cuenta de usuario mary:

dedo maría -l

finger mary -l en una ventana de terminal

La información predeterminada habitual se establece para esta cuenta de usuario. Agreguemos a la información:

sudo chfn mary

sudo chfn mary en una ventana de terminal

Realizaremos la misma sesión que hicimos antes, y se nos solicitará un valor de datos para cada pieza de información que se pueda almacenar. Y debido a que usamos sudo, se nos pide el valor de los datos del nombre completo.

Sesión completada para sudo chfn mary en una ventana de terminal

Espera un momento, ¿qué es ese último elemento, llamado «Otro»?

no es compatible con todas las versiones de chfn, y solo lo ve si lo usa sudo, por lo que no lo vimos antes cuando (deliberadamente) no lo usamos sudocon:

chfn dave

El valor de datos «Otro» puede contener cualquier cosa que desee. No tiene ningún uso prescrito o esperado.

Las versiones chfnque admiten el campo «Otro» también proporcionan la -oopción (otro) para cambiar este valor directamente. Es debido al conflicto entre -o«número de oficina» y -o«otro» que algunos sistemas utilizan -rpara «número de habitación».

Podemos ver los datos almacenados para la cuenta de usuario mary en el /etc/paswdarchivo, usando less:

menos / etc / passwd

lass / etc / passwd en una ventana de terminal

En los sistemas que lo admiten (consulte la manpágina de su versión de chfn) puede configurar el campo «otro» directamente usando la -o opción (otro):

sudo chfn -o "HTG Freelancer" dave

sudo chfn -o "HTG Freelancer" dave en una ventana de terminal

Y podemos verificar los datos de la cuenta de usuario Dave usando el lesscomando:

menos / etc / passwd

menos / etc / p <span data-mce-type =[asswd en una ventana de terminal ”width =” 646 ″ height = ”382 ″ />

Eso plantea una pregunta obvia. Si su versión de chfnno admite el campo «Otro», ¿cómo lo cambia? Podemos hacer eso con el usermodcomando.

El comando usermod

El usermodcomando le permite modificar aspectos de una cuenta de usuario a través de acciones como agregar o eliminar la cuenta de usuario de los grupos y cambiar su shell predeterminado. También se puede utilizar para manipular directamente el campo GECOS.

Relacionado:  Cómo usar at y batch en Linux para programar comandos

Echemos un vistazo más de cerca a la línea en el /etc/passwdarchivo de la cuenta de usuario mary. Usaremos grep para aislar esa línea por nosotros . Esto funcionará porque los nombres de usuario deben ser únicos. Solo puede haber una cuenta de usuario llamada mary.

grep mary / etc / passwd

grep mary / etc / passwd en una ventana de terminal

Se etc/passwdmuestran los campos del archivo. Se :utilizan dos puntos » » como separador de campo. de izquierda a derecha, los campos son:

  • El nombre de usuario de la cuenta.
  • Una «x» que indica que la contraseña de esta cuenta de usuario se mantiene cifrada en el /etc/shadowarchivo.
  • El ID de usuario de la cuenta de usuario de mary.
  • El ID de grupo de la cuenta de usuario de mary.
  • El campo GECOS.
  • La ruta al directorio de inicio de la cuenta de usuario de mary.
  • Shell que se inicia cuando el propietario de la cuenta mary inicia sesión.

Se utiliza una coma «,» como separador de los valores de datos dentro del campo GECOS. Los valores dentro del campo GECOS son, de izquierda a derecha:

  • Nombre completo.
  • Número de habitación (u oficina).
  • Número de teléfono del trabajo.
  • Numero de telefono de casa.
  • Otra información.

Tenga en cuenta que el usermod comando establece todo el campo GECOS con el nuevo valor que proporciona. Si todo lo que proporciona es el nombre completo de la persona, lo único en el campo GECOS será el nombre completo. Esto significa que debe proporcionar los valores de datos existentes que desee conservar.

He aquí un ejemplo. La usuaria Mary ha sido ascendida y se trasladará al cuarto piso. Obtendrá un nuevo número de oficina, un nuevo número de teléfono del trabajo y vamos a agregar su segundo nombre. Su valor de campo «Otro» también cambiará. Aunque el número de teléfono de su casa no va a cambiar, debemos proporcionarlo en la cadena a usermod.

Necesitamos usar la -copción (comentario) y necesitamos ejecutar el comando con sudo.

sudo usermod -c "Mary Carol Quinn, 405,5559654,555-7704, defensora de Linux" mary

sudo usermod -c "Mary Carol Quinn, 405,5559654,555-7704, Linux Advocate" mary en una ventana de terminal

Utilizando greppara informar sobre el contenido del /etc/passwdarchivo para mary, nos muestra los nuevos valores que se han agregado.

grep mary / etc / passwd

grep mary / etc / passwd en una ventana de terminal

Todo es flujo, nada permanece

Los datos inexactos no tienen valor. Cuando cambia la información sobre las personas (mudanzas de oficina, cambios de nombre, títulos de funciones), puede actualizar fácilmente sus metadatos para reflejar la posición actual.