13.6. Modificación de cuentas

Existe una variedad de comandos disponible en el entorno Unix para modificar cuentas de usuario. Los comandos más comunes se hallan resumidos a continuación, seguidos de ejemplos más detallados de su uso.

Comando Resumen
adduser La aplicación de línea de comandos recomendada para añadir nuevos usuarios.
rmuser La aplicación de línea de comandos recomendada para eliminar usuarios.
chpass Una herramienta flexible para modificar la base de datos de usuarios.
passwd Una herramienta de línea de comandos simple para cambiar contraseñas de usuario.
pw Una herramienta potente y flexible para modificar cualquier aspecto de las cuentas de usuario.

13.6.1. adduser

adduser es un programa simple para añadir usuarios. Crea entradas en los archivos de sistema passwd y group. También crea un directorio home para el nuevo usuario, copia allí ficheros de configuración por defecto (“dotfiles”) de /usr/share/skel, y opcionalmente puede enviar al usuario un mensaje de bienvenida.

Para crear el fichero inicial de configuración usa adduser -s -config_create. [1] A continuación configuramos valores por defecto para adduser y creamos nuestra primera cuenta de usuario, dado que utilizar root para uso normal del sistema es pernicioso y peligroso.

Ejemplo 13-1. Configuración de adduser

# adduser -v
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
Your default shell is: zsh -> /usr/local/bin/zsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: 
Send message from file: /etc/adduser.message no 
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y

Write your changes to /etc/adduser.conf? (y/n) [n]: y

Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh zsh [zsh]: 
Enter home directory (full path) [/home/jru]: 
Uid [1001]: 
Enter login class: default []: 
Login group jru [jru]: 
Login group is ``jru''. Invite jru into other groups: guest no 
[no]: wheel
Enter password []: 
Enter password again []: 

Name:     jru
Password: ****
Fullname: J. Random User
Uid:      1001
Gid:      1001 (jru)
Class:    
Groups:   jru wheel
HOME:     /home/jru
Shell:    /usr/local/bin/zsh
OK? (y/n) [y]: y
Added user ``jru''
Copy files from /usr/share/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
#

En resumen, cambiamos la shell por defecto a zsh (una shell alternativa incluida en la colección de ports), y deshabilitamos el envío de un mensaje de bienvenida a nuevos usuarios. Luego grabamos la configuración, creamos una cuenta para jru, y nos aseguramos de que jru esté en el grupo wheel (de modo que puede asumir el papel de root vía el comando su).

Nota: La contraseña que escribes no se muestra, tampoco se muestran asteriscos. Asegúrate de no entrar dos veces una contraseña equivocada.

Nota: Usa adduser sin argumentos en adelante, no necesitarás cambiar las opciones por defecto. Si el programa te pide modificarlas sal y prueba con la opción -s.

13.6.2. rmuser

Puedes usar rmuser para eliminar completamente del sistema a un usuario. rmuser efectúa los siguientes pasos:

  1. Elimina la entrada del usuario en crontab(1) (si tiene alguna).

  2. Elimina las tareas at(1) pertenecientes al usuario.

  3. Mata todos los procesos pertenecientes al usuario.

  4. Elimina al usuario del fichero local de contraseñas del sistema.

  5. Borra el directorio home del usuario (si le pertenece).

  6. Elimina los archivos de correo entrante del usuario de /var/mail.

  7. Borra todos los ficheros del usuario de áreas en las que se guardan archivos temporales como /tmp.

  8. Finalmente, elimina el nombre de usuario de todos aquellos grupos a los que pertenece en /etc/group.

    Nota: Si un grupo queda vacío y el nombre del grupo coincide con el del usuario, el grupo es eliminado; esto complementa la creación de grupos por usuario de adduser(8).



rmuser no puede ser usado para eliminar cuentas de superusuario, dado que algo así es casi siempre señal de masiva destrucción.

Por defecto existe un modo interactivo que intenta asegurar que uno sabe lo que hace.

Ejemplo 13-2. Eliminación interactiva de cuenta con rmuser

# rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
#

13.6.3. chpass

chpass cambia información de los usuarios en base de datos como contraseñas, shells y datos personales.

Los administradores del sistema, como el superusuario, son los únicos que pueden modificar la información y contraseñas de otros usuarios con chpass.

Cuando no le pasamos más opciones, salvo un nombre de usuario opcional, chpass muestra un editor con información de usuario. Cuando se sale del editor la base de datos de usuarios se actualiza con la nueva información.

Ejemplo 13-3. chpass interactivo ejecutado por el superusuario

#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1000
Gid [# or name]: 1000
Change [month day year]:

Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

Un usuario normal puede modificar un pequeño subconjunto de esta información, y sólo para sí mismo.

Ejemplo 13-4. chpass interactivo ejecutado por un usuario normal

#Changing user database information for jru.
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

Nota: chfn y chsh son enlaces a chpass, como también lo son ypchpass, ypchfn, e ypchsh. El soporte para NIS es automático, por lo que no es necesario especificar el yp antes del comando. Si esto te resulta algo confuso no te preocupes, NIS será tratado en el Capítulo 29.

13.6.4. passwd

passwd es el comando que se usa normalmente para cambiar tu propia contraseña como usuario o, como superusuario, la de otros usuarios.

Nota: Los usuarios han de introducir su contraseña original antes de cambiarla para prevenir que gente no autorizada pueda hacerlo cuando no se encuentren en la consola.

Ejemplo 13-5. Cambio de tu contraseña

% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done

Ejemplo 13-6. Cambio de la contraseña de otro usuario como superusuario

# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: done

Nota: Como ocurre con chpass, yppasswd es un enlace a passwd, de manera que NIS funciona con ambos comandos.

13.6.5. pw

pw(8) es una utilidad de línea de comandos para crear, eliminar, modificar, y mostrar usuarios y grupos. Hace de interfaz a los archivos del sistema de usuarios y grupos. pw tiene un conjunto de opciones de línea de comandos bastante potente que lo hacen adecuado para su uso en scripts de shell, aunque los nuevos usuarios puede que lo encuentren algo más complicado que el resto de comandos que presentamos aquí.

Notas

[1]

La -s hace que adduser sea silencioso por defecto. Más tarde usamos -v cuando queremos cambiar valores por defecto.

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.