Scripts updateuid
Uit MediaServe Wiki
Script om UID's van gebruikers aan te passen
Met dit script kun je eenvoudig de UID van lokale gebruikers aanpassen. Het script controleert de aanwezigheid van de gebruiker en de UID. Vervolgens past het script de lokale UID aan en zoekt op de lokale schijven naar alle ACL's voor zowel de gebruiker als de groep.
/opt/scripts/updateuid
#! /bin/bash
names=( $@ )
for (( i = 0 ; i < ${#names[@]} ; i++ ))
do
echo ""
echo -e "Updating UID and file permissions for user \e[1;37m${names[$i]}\e[0m"
echo ""
if [ `whoami` != "root" ]; then
echo -e "\e[1;31mError:\e[0m this script must run with root privileges"
else
echo -n " Checking if user exists : "
if [ `grep ${names[$i]} /etc/passwd | wc -l` = "0" ]; then
echo -e "\e[1;31mFailed\e[0m"
else
echo -e "\e[1;32mPassed\e[0m"
echo -n " Checking if user is logged out : "
if [ `w | grep ${names[$i]} | wc -l` = "0" ]; then
echo -e "\e[1;32mPassed\e[0m"
oldUserId=`id ${names[$i]} | sed "s/^uid=\([0-9]*\).*$/\1/g"`
echo " Current UID : $oldUserId"
echo -n " Please type the new UID : "
read -e userNewId
echo -n " Checking if the UID is available : "
if [ `grep $userNewId /etc/passwd | wc -l` = "0" ]; then
echo -e "\e[1;32mPassed\e[0m"
echo ""
usermod -u $userNewId ${names[$i]}
groupmod -g $userNewId ${names[$i]}
find / -user $oldUserId -exec chown $userNewId {} \; 2>/dev/null
find / -group $oldUserId -exec chown :$userNewId {} \; 2>/dev/null
echo -e "Updating UID for user \e[1;37m${names[$i]} done\e[0m"
else
echo -e "\e[1;31mFailed\e[0m"
fi
else
echo -e "\e[1;31mFailed\e[0m"
fi
fi
fi
done
if [ $i = 0 ]; then
echo ""
echo " You can use this script to change the user UID on the computer."
echo " The UID, GID and file permissions of the user and all local files are located and updated."
echo " Give the name(s) for which you want to change the UID"
echo ""
echo " updateuid tom jerry"
fi
echo ""
En we maken een symlink aan in het standaard pad.
ln -s /opt/scripts/updateuid /sbin/updateuid chmod +x /opt/scripts/updateuid