13.6. Modificación de cuentas
Anterior | Capítulo 13. Usuarios y administración básica de cuentas | Siguiente

## 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`. [7] 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, Networking avanzado.

### 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í.

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

Anterior | Subir | Siguiente
13.5. Cuentas de usuario | Inicio | 13.7. Limitar a los usuarios

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>.