Cambiar el nombre, UID o GID de un usuario en Linux

En ocasiones puede ser necesario modificar el nombre de un usuario en Linux o su UID (user identifier) y GID (group identifier). Esto sería útil por ejemplo, cuando tenemos un usuario creado en dos sistemas distintos que comparten un Filesystem, para poder visualizar y generar los permisos del filesystem compartido, tener el mismo GID y UID en ambas máquinas es clave. De otro modo veríamos así los directorios y archivos:

Sistema 1:

drwxr-xr-x. 2 foo foo  2 jul 25 16:59 prueba

Sistema 2:

drwxr-xr-x. 2 1001 1001  2 jul 25 16:59 prueba

Para realizar modificaciones de usuario utilizamos el comando usermod . En el caso anterior nos interesaría que en el sistema 2 el UID del usuario fuera 1001:

Sistema 1:

foo:x:1001:1001:foo,,,:/home/foo:/bin/bash

Sistema 2:

foo:x:501:501:foo,,,:/home/foo:/bin/bash

Para modificar el UID, utilizamos «usermod» con el parámetro -u seguido del UID a asignar:

# usermod -u 1001 foo

Vemos que se ha modificado el UID, pero también nos interesa cambiar el GID:

foo:x:1001:501:foo,,,:/home/foo:/bin/bash

Para ello utilizamos el comando «groupmod» con el parámetro -g seguido del GID a asignar:

# groupmod -g 1001 foo

Vemos que se ha modificado el GID:

foo:x:1001:1001:foo,,,:/home/foo:/bin/bash

Cambiar o renombrar el nombre de usuario es sencillo:

# usermod -l nombre_nuevo nombre_viejo
# usermod -l bar foo
# grep bar /etc/passwd
bar:x:1001:1001:foo,,,:/home/foo:/bin/bash

2 comentarios en “Cambiar el nombre, UID o GID de un usuario en Linux

  1. Te falta, tras el cambio, en la máquina donde has realizado el cambio hacer un chown de todos los ficheros locales, el $HOME, etc.

    • Los directorios y archivos de la /home creo que se cambian automáticamente:

      root@Xubuntu:~# ls -lu /home/
      total 76
      drwxr-xr-x  2 foo  foo   4096 Oct 24 17:25 foo
      root@Xubuntu:~# ls -ln /home/
      total 76
      drwxr-xr-x  2 1001 1001  4096 Oct 24 17:25 foo
      root@Xubuntu:~# usermod -u 11111 foo
      root@Xubuntu:~# ls -ln /home/
      total 76
      drwxr-xr-x  2 11111 1001  4096 Oct 24 17:25 foo
      

      En todo caso, podríamos usar find para encontrar y cambiar todos los ficheros:

      find /tmp -uid 501 -exec ...
      find /tmp -gid 501 -exec ...
      

      Gracias y saludos
      Saludos

Comments are closed.