Wenn man unter verschiedenen Distributionnen wechselt, dann kann es
sein, dass die Voreinstellung für die Basis-Benutzernummern
unterschiedlich sind, was zu kleineren Problemen führen kann. Debian
UIDs für Benutzer fangen z.B. bei 1000 an, während die von Redhat oder
Suse bei 500 beginnen.
Weil die UID auch im Dateisystem
eingetragen ist, kann man sie nicht einfach nur in der Passwortdatei
ändern. Hier ist ein kleines Skript, dass auch alle
Dateisystemeinträge ändert:
#!/bin/bash
#Ralf Dragon rdragon@stud.uni-hannover.de
#Benutzernummern von 500+ auf 1100+ ändern
#das Umbenennen sollte die Gruppe nicht verändern (falls gleich, da nur die erste regexp bearbeitet wird)
rootdir="/home"
passwd="/etc/passwd"
basefrom=5
baseto=11
#next=cat $passwd | grep -G :$basefrom..: | head -n 1
#z.B. dragon:x:563:100:Ralf Dragon:/home/dragon:/bin/bash
#--> dragon:563
for next in `cat $passwd | cut -d: -f1,3 | grep -G :$basefrom..$`
do
user=`echo "$next" | cut -d: -f1`
ouid=`echo "$next" | cut -d: -f2`
nuid=`echo "$ouid" | sed "sI^${basefrom}I${baseto}I"`
echo "Processing user $user."
echo "Changing UID from $ouid to $nuid:"
echo "sed /^$user:/sI:$ouid:I:$nuid:I $passwd > /tmp/pass"
# read test
sed /^$user:/sI:$ouid:I:$nuid:I $passwd > /tmp/pass
mv /tmp/pass $passwd
IFS_OLD=$IFS
IFS=$'\n'
for datei in `find $rootdir -user $ouid`
do
echo "chown $nuid \"$datei\""
# read test
chown $nuid "$datei"
done
IFS=$IFS_OLD
done
|