it-swarm-es.tech

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

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 aún se muestra en la esquina superior derecha (en la fast-user-switch-applet). ¿Hay un comando para cambiar el nombre de una cuenta de usuario de Unix?

Pensé 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?

48
Yann Dìnendal

Tratar

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

La opción --move-home Mueve el contenido del antiguo directorio de inicio al nuevo dado por la opción --home Que se crea si aún no existe.

Si desea que el grupo de usuarios primario coincida con 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
52
gvkv

Si bien es posible cambiar el nombre de un usuario, y usermod hará 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 en /etc/passwd y 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/$USER o /var/spool/mail/$USER.
  • El crontab, típicamente /var/spool/cron/crontabs/$USER
  • En at jobs (/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 (aunque no es necesario que el directorio de inicio del usuario alice sea /home/alice, teniendo que ser /home/bob sería confuso), tendrás que ocuparte 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.

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 dos últimos comandos crean un enlace simbólico a partir del nombre del antiguo directorio de inicio (/ inicio/ANTIGUO) al nombre del nuevo (/ inicio/NUEVO).

4
Soul Singin

todo lo anterior son métodos elegantes, pero ¿por qué no 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

1
AdrianP