¿Cómo puedo cambiar el nombre de un usuario de Unix?

89

Tengo un nombre de usuario hedgehogy quiero que se nombre squirrel, pero no quiero cambiar su ID de usuario numérico.
¿Cómo puedo lograr esto?

Szymon Jeż
fuente
2
Probablemente porque renombrar a un usuario no es exactamente una tarea con la que una SA profesional tendría dificultades. (Para los votos negativos de la pregunta.)
HopelessN00b
2
@Jeznet voté en contra porque no solo es una tarea increíblemente simple que podría resolverse escribiendo su título en google, sino que también respondió su propia pregunta tan pronto como la hizo. Parecía una pérdida de tiempo.
boburob
10
@boburob "también respondiste tu propia pregunta tan pronto como la hiciste. Parecía una pérdida de tiempo", consulta: blog.stackoverflow.com/2011/07/…
Szymon Jeż
10
@boburob ¿Viste esa casilla de verificación que dice Answer your own question – share your knowledge, Q&A-stylecuando haces una pregunta? Está ahí por una razón, y no estaría allí si no quisieran que se usara. (Idealmente en mejores preguntas, pero independientemente, votar mal a alguien por responder su propia pregunta es una mala forma).
HopelessN00b
1
Sí, también he respondido mi propia pregunta antes, pero para mí, hacer una pregunta y pegar el resultado de Google en el mismo minuto es una pérdida de tiempo
Boburob

Respuestas:

133

En Linux, el usermodcomando cambia los nombres de usuario. Modifica los archivos de la cuenta del sistema para reflejar los cambios que se especifican en la línea de comando.

Para cambiar solo el nombre de usuario:

usermod --login new_username old_username

Para cambiar el nombre de usuario y el nombre del directorio de inicio:

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

También es posible que desee cambiar el nombre del grupo asociado con el usuario:

groupmod --new-name new_username old_username
Szymon Jeż
fuente
12
Puede usar usermod para hacer todo el asunto usermod -l nombre-usuario-nuevo -m -d / new / home / dir nombre-usuario-antiguo
user9517
55
También tenga en cuenta que el grupo tampoco cambia. Si necesita cambiar el nombre del old-user-namegrupo también, use # groupmod -n new-user-name old-user-name.
alxs
1
Para los sistemas que usan autofs, también debe actualizar /etc/auto.home. Me encontré con esto.
Steven C. Howell el
2
Es posible que deba ejecutar visudo nuevamente para poner el nuevo nombre de usuario en la lista de sudoers, si corresponde
Nagev
2
También deberá cambiar el nombre del archivo crontab ubicado en /var/spool/cron/crontabs/(si tiene algún trabajo instalado)
Daniel F
12

NOTA: ¡no intente esto si su directorio está encriptado! Si este es su caso, es posible que desee verificar primero: https://askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

La forma directa de hacerlo es:

  1. Cree una nueva cuenta temporal con derechos de sudo:

    sudo adduser temp
    sudo adduser temp sudo
    
  2. Cierre sesión en su cuenta actual y vuelva a iniciar sesión con la cuenta temporal.

  3. Cambie el nombre de su nombre de usuario y directorio:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. Cambie el nombre del grupo predeterminado de su nombre de usuario:

    sudo groupmod -n new-username old-username
    
  5. Cierre la sesión de la cuenta temporal y vuelva a iniciar sesión en su cuenta con new-username.

  6. Eliminar cuenta temporal:

    sudo userdel -r temp
    

De lo contrario, simplemente (1) crea un nuevo usuario y (2) rsyncla carpeta de inicio del usuario anterior a la nueva y luego (3) chown.

mimoralea
fuente
En CentOS también necesitaba 'passwd temp' y 'usermod -aG wheel temp'.
Brian Z
4

En general, puede cambiar el nombre de un usuario cambiando su nombre de usuario en los archivos /etc/passwd(y /etc/shadow, si corresponde). En la mayoría de los sistemas Unix, el vipwcomando se utiliza para editar estos archivos (y en muchos sistemas incluye algunas medidas de seguridad para garantizar que no estropee demasiado las cosas).
Ver las páginas del manual para passwd(5), shadow(5)y vipw(8)para más información.

Tenga en cuenta que el método anterior no cambia el nombre de otras cosas que pueden llevar el nombre de usuario original (los directorios principales son el ejemplo principal, los grupos personales por usuario (en sistemas que los usan) son otros). Es posible que también desee limpiarlos para mantener la coherencia, cambiando los campos apropiados en el archivo passwd y renombrando los directorios.


Varios sistemas operativos proporcionan una forma específica del sistema para cambiar el nombre de los usuarios. Por ejemplo, muchos sistemas Linux incluyen el usermod(8)comando, y en AIX puede cambiar los nombres de cuenta usando SMIT (o smittyen un terminal) .
Estos comandos a menudo manejarán los elementos de limpieza, como cambiar el nombre de los directorios principales, si así lo solicita.

voretaq7
fuente