Cambiar los UID y GID de un usuario | Algo de Linux

jueves, 15 de octubre de 2015

Cambiar los UID y GID de un usuario

Cambiar el UID y el GID de un usuario local puede ser una tarea un poco incómoda porque no sólo tenemos que cambiar los identificadores de usuario y grupo del propio usuario; sino que además tendremos que modificar el UID y el GID de todos aquellos ficheros que pertenezcan al usuario en el sistema para que sigan perteneciéndole una vez cambiados los identificadores del usuario.

Para facilitarme el trabajo, he escrito un script muy sencillo que pregunte los datos y me permita realizar todos estos cambios de una manera automática:

changeUserUidGid:
#!/bin/bash
#
# Cambiar el UID y el GID de un usuario determinado 
# Esteban M. Navas 
# 15/10/2015

read -p "Login del usuario: " LOGIN
read -p "Grupo del usuario: " GROUP

OLDUID=`id $LOGIN | cut -f1 -d" " | cut -f1 -d"(" | cut -f2 -d"="`
OLDGID=`id $LOGIN | cut -f2 -d" " | cut -f1 -d"(" | cut -f2 -d"="`

read -p "Nuevo UID: " NEWUID
read -p "Nuevo GID: " NEWGID

usermod -u $NEWUID $LOGIN
groupmod -g $NEWGID $GROUP
find / -user $OLDUID -exec chown -h $NEWUID {} \; 2>/dev/null
find / -group $OLDGID -exec chgrp -h $NEWGID {} \; 2>/dev/null
usermod -g $NEWGID $LOGIN

echo "Proceso concluido"
Como podéis ver, el script solicita que el usuario introduzca el login y el grupo del usuario junto con los nuevos uid y gid que quiera asignar. Una vez introducidos, cambiará el identificador de usuario:
usermod -u $NEWUID $LOGIN
Modificará el identificador del grupo:
groupmod -g $NEWGID $GROUP
Cambiará el uid de todos los ficheros pertenecientes al usuario:
find / -user $OLDUID -exec chown -h $NEWUID {} \; 2>/dev/null
Modificará el gid de todos los ficheros propiedad del usuario:
find / -group $OLDGID -exec chgrp -h $NEWGID {} \; 2>/dev/null
Y por último, modificará el gid principal del usuario:
usermod -g $NEWGID $LOGIN
Dejo a continuación el enlace por si queréis descargarlo:
https://copy.com/gKmTqMkh1w3pcGIW
Publicado por primera vez en http://enavas.blogspot.com.es