Trocando o nome do usuário do sistema

Iniciado por jotaedson, 10 de Junho de 2013, 21:26

tópico anterior - próximo tópico

jotaedson

Às vezes se precisa trocar o nome do usuário de uma máquina linux sem ter que criar outro usuário e passar de novo as configurações para ele. Então, para evitar essa trabalheira toda, fiz um script simplex, que quebra esse galho. Só lembrando que defini o usuário a ser trocado de com o UID e GID 1000.
Nomeei o arquivo de "trocausuario", e se digitar na linha de comando sem parâmetros, ele mostra que precisa tão somente do "novo usuário". Veja o código:

#!/bin/bash

if [ "$#" = "0" ]; then
   echo -e "Use: `basename $0` <Novo usuário>"
   exit
fi
NEWNAME=$1
NEWHOSTNAME=$(echo PC-$NEWNAME | tr [:lower:] [:upper:])

if [ ! $(ps aux |grep kdm|grep -v grep|wc -l) -eq 0 ]; then
OLDNAME=$(cat $(find /etc -iname kdmrc)|grep AutoLoginUser|cut -d= -f 2)
service kdm stop
sed -i 's/'"$OLDNAME"'/'"$NEWNAME"'/' $(find /etc -iname kdmrc)
usermod -a -c "$NEWNAME" -d /home/"$NEWNAME" -g 1000 -G users,adm,plugdev -l "$NEWNAME" -m -s /bin/bash "$OLDNAME"
groupmod -g 1000 -n "$NEWNAME" "$OLDNAME"
echo $NEWHOSTNAME > /etc/hostname
service kdm start

else
OLDNAME=$(cat $(find /etc/lightdm/ -iname lightdm.conf)|grep autologin-user=|cut -d= -f 2)

service lightdm stop

sed -i 's/'"$OLDNAME"'/'"$NEWNAME"'/' $(find /etc/lightdm/ -type f -iname lightdm.conf)

usermod -a -c "$NEWNAME" -d /home/"$NEWNAME" -g 1000 -G users,adm,plugdev -l "$NEWNAME" -m -s /bin/bash "$OLDNAME"

groupmod -g 1000 -n "$NEWNAME" "$OLDNAME"

echo $NEWHOSTNAME > /etc/hostname

service lightdm start

fi