Logo

Ralf Dragon

Inhalt


Kontakt

Valid HTML 4.01!

UID ändern

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


Diese Datei wurde zuletzt am 31.07.08 bearbeitet. Du bist der 25586. Besucher. Für den Inhalt von verlinkten Seiten bin ich nicht verantwortlich.© Ralf Dragon