Das Problem mit der UID

Änderung der UID und GID der lokalen Benutzer

Sowohl die UID des LDAPS als auch die UID der lokalen Benutzer beginnt bei 1000. So das z. B. der erste lokale Benutzer und der erste LDAP-Benutzer1) die gleiche UID und GID haben. Loggt man sich z. B. mit dem ersten LDAP-Benutzer ein und wieder aus, und versucht dann mit dem ersten lokalen Benutzer einen sudo-Befehl auszuführen, so wundert man sich, dass man hier das Passwort des LDAP-Benutzers eingeben muss.

Dieses stört solange nicht, wie man die lokalen Benutzer nicht benötigt. Will man aber auch die lokalen Benutzer verwenden, so muss man

  1. den Bereich aus den die UID's und GID's verwendet werden auf z. B. 500 bis 999 setzen (wenn man nicht mehr als 500 lokale Benutzer anlegen möchte).
  2. die UID und GID der bereits angelegt Benutzer ändern.

Der Bereich aus dem die UID's und GID's verwendet werden ist in der /etc/adduser.conf durch die Parameter FIRST_UID und LAST_UID bzw. FIRST_GID und LAST_GID festgelegt. Die vier Befehle

sudo sed -i '/^FIRST_UID/ s/1000/500/' /etc/adduser.conf
sudo sed -i '/^LAST_UID/ s/29999/999/' /etc/adduser.conf
sudo sed -i '/^FIRST_GID/ s/1000/500/' /etc/adduser.conf
sudo sed -i '/^LAST_GID/ s/29999/999/' /etc/adduser.conf

ändern die Parameter entsprechend ab.

Dann kann man mit den Kommandos

usermod -u 500 <benutzername>
groupmod -u 500 <gruppenname>

die einzelnen Benutzer und die zugehörige Gruppe auf die neuen UID's und GID's setzen (im Beispiel oben ist die UID und GID jeweils 500). Da funktioniert aber nicht bei dem eingeloggten Benutzer, so dass man sich z. B. mit einem sudoer aus dem LDAP einloggen muss. Um diesen Prozess zu automatisieren, kann man die folgende for-Schleife nutzen:

count=500
for dir in /home/*; do 
    user=$(basename $dir);
    usermod -u $count $user; 
    groupmod -g $count $user; 
    count=`expr $count + 1`;
done;

Oder alles in einer Zeile zum direkten ausführen:

count=500; for dir in /home/*; do user=$(basename $dir); usermod -u $count $user; groupmod -g $count $user; count=`expr $count + 1`; done;

Auf einem Skolelinux-Client haben die Homeverzeichnisse die Berechtigung 0755. Auch dieses kann man in der Datei /etc/adduser.conf durch den Parameter DIR_MODE einstellen.

sudo sed -i '/^DIR_MODE/ s/0755/0700/' /etc/adduser.conf

Änderung der UID- und GID- Einstellungen des LDAP-Servers

UID und GID in gosa manuell ändern

Es ist auch möglich, gosa so einzurichten, damit die ID's bei einem größeren Wert beginnen. Dazu ändert man in der Datei /etc/gosa/gosa.conf im Element <location name=„default“> die Werte von uidNumberBase und gidNumberBase auf entsprechend höhere Werte ab, so dass es zu keiner Überlappung kommen kann.

Man muss dann die bereits mit gosa angelegte Benutzer (das ist zumindest der bei der Installation angelegte Benutzer) die jeweilige UID und GID ändern. Dies geschieht auf dem Reiter Unix im Bereich Erzwinge UID/GID (siehe Abb. rechts).

Geht man davon aus, dass nur ein Benutzer auf den Clients angelegt wird (der Benutzer, der bei der Installation angelegt wird), so reicht es auch aus, eine höhere UID und GID für den ersten LDAP-Benutzer zu erzwingen (siehe Abb. rechts), alle danach angelegten LDAP-Benutzer erhalten dann UIDs und GIDs die hinter dieser sind.

Ggf. muss man über den Menüpunkt Gruppe die GIDs der einzelnen Gruppen auf einen höheren Wert setzen.


Für diese Einstellungen siehe auch Paket debian-edu-config/cf/cf.adduser.

1) Das ist der Benutzer mit dem man sich normalerweise bei GOSA anmeldet.

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
108​ +11 = ?
 
 
skolelinux/uid_gid_problem.txt · Zuletzt geändert: 2014/03/23 10:10 von admin