Scripts updateuid

Uit MediaServe Wiki

Ga naar: navigatie, zoeken

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

Persoonlijke instellingen
Naamruimten
Varianten
Handelingen
Navigatie
MediaServe
Algemeen