¿Es posible cambiar el nombre de una cuenta de usuario de Unix?

48

Instalé Ubuntu en una computadora que ahora es utilizada por otra persona. Cambié el nombre de la cuenta con su nombre, pero solo cambia el nombre completo, no el nombre de usuario, que todavía se muestra en la esquina superior derecha (en el fast-user-switch-applet). ¿Hay un comando para cambiar el nombre de una cuenta de usuario de Unix?

He pensado en crear una nueva cuenta de usuario con el nuevo nombre y luego copiar todo en el hogar "antiguo" al hogar de la nueva cuenta. ¿Sería suficiente? ¿Pero luego creo que los archivos tendrían el propietario de los permisos de la cuenta anterior? ¿Entonces debería hacer chown -R newuser ~?

¿Hay una manera más simple / recomendada de hacer esto?

Yann Dìnendal
fuente

Respuestas:

52

Tratar

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

La --move-homeopción mueve el contenido del antiguo directorio de inicio al nuevo dado por la --homeopción que se crea si aún no existe.

Si desea que el grupo de usuarios primario coincida con el new-login-name, agregue --gid <new-login-name>al comando anterior, pero el grupo debe ser preexistente.

Vea la página del manual para más información:

man usermod
gvkv
fuente
¡Gracias! No sabía sobre este comando. :) Sin embargo, esa es la única cuenta en esta computadora y el hombre dice esto: «Debe asegurarse de que el usuario nombrado no esté ejecutando ningún proceso cuando se ejecuta este comando si la ID de usuario numérica de los usuarios, el nombre de usuario o el Se está cambiando el directorio de inicio de los usuarios. usermod verifica esto en Linux, pero solo verifica si el usuario ha iniciado sesión de acuerdo con utmp en otras arquitecturas. »¿Sugeriría usar un CD en vivo para hacer esto o crear una cuenta temporal que eliminaré una vez que esté hecho?
Yann Dìnendal
2
Como está usando Ubuntu y no puede iniciar sesión como root, crearía otra cuenta llamada, digamos, admin que usa solo para este tipo de tarea. Una cuenta temporal funcionará igual de bien, pero también podría conservarla, ya que podría estar haciendo cosas similares en el futuro.
gvkv
3
Tenga en cuenta que usermod --homedebe contener la ruta completa, por ejemplo /home/user.name, de lo contrario, el nuevo directorio de inicio se creará dentro del directorio de trabajo actual.
feeela
¡Eso no cambiará al grupo!
Hannes Schneidermayer
22

Si bien es posible cambiar el nombre de un usuario y usermodhará parte del trabajo , es muy probable que esto cause problemas. Aquí hay una lista de lugares donde puede aparecer el nombre de usuario; No pretendo que esta lista sea exhaustiva.

  • La entrada del usuario /etc/passwdy los archivos relacionados (por ejemplo /etc/shadow, /etc/master.passwd).
  • Agrupar entradas en /etc/group(y /etc/gshadow).
  • Posiblemente entradas en /etc/sudoers.
  • El buzón del sistema, típicamente /var/mail/$USERo /var/spool/mail/$USER.
  • El crontab, típicamente /var/spool/cron/crontabs/$USER
  • En attrabajos ( /var/spool/cron/atjobs/*)

Es probable que el directorio de inicio aparezca en más lugares. Muchas aplicaciones escriben rutas absolutas en varios archivos de puntos. Si decide cambiar el nombre del directorio de inicio también (si bien no es necesario que alicesea ​​el directorio de inicio del usuario /home/alice, /home/bobsería confuso), tendrá que ocuparse de eso. Un reemplazo global funcionará para la mayoría de las aplicaciones, pero no prometo nada. Si es posible, mantenga el antiguo nombre del directorio de inicio como un enlace simbólico al directorio renombrado.

Gilles 'SO- deja de ser malvado'
fuente
4

Aquí hay un resumen de los comandos que utilicé en un sistema Debian:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

Los últimos dos comandos crean un enlace simbólico desde el nombre del antiguo directorio de inicio ( / home / OLD ) hasta el nombre del nuevo ( / home / NEW ).

Alma cantando
fuente
¿Para qué sirve groupadd?
Yann Dìnendal
2
En lugar de groupadd, supongo que sería preferible groupmod -n NEW OLDevitar cambiar el gid. Al menos en Ubuntu, un grupo con el mismo nombre que el usuario está configurado de forma predeterminada, por lo que uno también desearía cambiar ese nombre.
jamadagni
1

Todo lo anterior son métodos elegantes, pero ¿por qué no solo crear un nuevo usuario, copiar todo el contenido de su casa desde el primero, y eso es todo? por supuesto, si se trata de una cuenta de servicio (aplicación), tal vez no sea la mejor práctica

AdrianP
fuente
3
Parece que esto podría colocarse mejor como un comentario en lugar de una publicación de respuesta completa que no agrega casi nada excepto mencionar una solución que ya se mencionó en el OP. Debería considerar agregar información sobre por qué cree que esta solución es mejor o incluso aceptable.
HalosGhost