Bug 27549 - sambaHomePath wird nicht immer gesetzt → kein Homeverzeichnis
sambaHomePath wird nicht immer gesetzt → kein Homeverzeichnis
Status: CLOSED FIXED
Product: UCS@school
Classification: Unclassified
Component: Import scripts
UCS@school 3.0
Other Linux
: P1 normal (vote)
: UCS@school 3.1
Assigned To: Sönke Schwardt-Krummrich
Arvid Requate
:
: 27410 30148 (view as bug list)
Depends on:
Blocks: 27550 30357
  Show dependency treegraph
 
Reported: 2012-06-12 13:34 CEST by Sönke Schwardt-Krummrich
Modified: 2013-02-15 17:51 CET (History)
3 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sönke Schwardt-Krummrich univentionstaff 2012-06-12 13:34:15 CEST
sambaHomePath wird vom Importskript nicht gesetzt, wenn der jeweilige DCSlave/SchulDC noch nicht gejoined wurde, weil am Rechnerobjekt kein Service "Windows Home Server", "Samba 4" oder "Samba" vorhanden ist.
Das führt dazu, dass die Homeverzeichnisse bei Samba4-Benutzern beim Login nicht verknüpft werden.

Möglicher Fix:
Beim Anlegen der OU mit und ohne Angabe des DC-Namens gleich am Rechnerobjekt des Schul-DCs den Service "Windows Home Server" setzen. Es wird ohnehin derzeit empfohlen, den SchulDC als alleinigen Fileserver einzusetzen, wenn man Module wie Materialverteilung/Proxy/... nutzen will.
Comment 1 Sönke Schwardt-Krummrich univentionstaff 2012-08-28 11:59:26 CEST
Das Problem tritt auch auf, wenn ein physikalischer SchulDC mehrere OUs hostet. In den "Zweit-OUs" ist dann kein gejointes SchulDC-Objekt vorhanden. Hinzu kommt, dass an den Benutzern der Zweit-OUs der Rechnername der Erst-OU in sambaHomePath verwendet werden muss.
Comment 2 Sönke Schwardt-Krummrich univentionstaff 2012-11-30 11:53:50 CET
(In reply to comment #1)
> Das Problem tritt auch auf, wenn ein physikalischer SchulDC mehrere OUs hostet.
> In den "Zweit-OUs" ist dann kein gejointes SchulDC-Objekt vorhanden. Hinzu
> kommt, dass an den Benutzern der Zweit-OUs der Rechnername der Erst-OU in
> sambaHomePath verwendet werden muss.

Wir sollten an dem OU-Objekt hinterlegen können, welcher Server für den sambaHomePath verwendet werden soll.

Vorschlag für die Auswertungsreihenfolge:
- ucsschool/import/set/sambahome
- Attribut am OU-Objekt
- Suche nach den Services "Windows Home Server", "Samba 4" und "Samba 3"
Comment 3 Alexander Kläser univentionstaff 2013-01-09 16:33:25 CET
*** Bug 27410 has been marked as a duplicate of this bug. ***
Comment 4 Sönke Schwardt-Krummrich univentionstaff 2013-01-09 16:41:40 CET
> *** Bug 27410 has been marked as a duplicate of this bug. ***

Es sollte bei der Umsetzung auch der Single-Server-Modus auf dem Master beachtet werden. Das Master-Rechnerobjekt liegt i.d.R. ebenfalls nicht unterhalb einer OU.
Comment 5 Sönke Schwardt-Krummrich univentionstaff 2013-01-18 17:10:55 CET
(In reply to comment #2)
> Wir sollten an dem OU-Objekt hinterlegen können, welcher Server für den
> sambaHomePath verwendet werden soll.

An dem OU-Objekt sollte dafür ein Extended Attribute für die Pflege dieses Attributs angehängt werden, welches alle DC-Slaves und den Master der Domäne zur Auswahl bereitstellt (ggf. sogar alle DCs und Memberserver?).
Auf jeden Fall sollte dies nicht auf einen bestimmten Dienst ("Samba 4"/"Samba 3") eingeschränkt werden, damit auch ungejointe Slaves ausgewählt werden können.

Wann wird welcher Wert eingetragen?
Bei einem Single-Server-System wird immer automatisch der Master an der OU als Fileserver für sambaHomePath hinterlegt.
Bei einem Multi-Server-Szenario wird der Default-DC hinterlegt, falls beim create_ou bzw. im entsprechenden UMC-Wizard kein expliziter DC-Name angegeben wird. Ist ein DC-Name angegeben worden, wird dierse hinterlegt.
Sollte an einer OU bereits ein Wert gesetzt sein, bleibt dieser unverändert und kann nur durch den UDM modifiziert werden.

Beim Update UCS@school 3.0 nach 3.1 sollte automatisch das Feld an der OU gesetzt werden, damit hier keine manuellen Anpassungen notwendig sind.

Vorschlag für die automatische Bestimmung:
- Falls ucsschool/import/set/sambahome gesetzt, wird dieses verwendet.
- Master wird verwendet, falls SingleServer-Umgebung erkannt wurde.
- Suche nach DCs in der Zugriffsgruppe der jeweiligen OU
  - falls in der Gruppe DCs enthalten sind, wird an den DC-Objekten nach den 
    Services "Windows Home Server", "Samba 4" und "Samba 3" (in dieser 
    Reihenfolge) gesucht. Bei einem Treffer, wird dieser als Fileserver gesetzt.
    (Sollte der der aktuellen Funktion des Importskriptes entsprechen und auch
     mit mehreren OU pro physikalischem Server funktionieren).
- Anderenfalls wird eine Fehlermeldung ausgegeben/im Log gespeichert.
Comment 6 Sönke Schwardt-Krummrich univentionstaff 2013-01-24 09:36:54 CET
*** Bug 30148 has been marked as a duplicate of this bug. ***
Comment 7 Sönke Schwardt-Krummrich univentionstaff 2013-01-27 00:54:37 CET
Implementierung für UCS@school 3.1:

1) Das UCS@school-LDAP-Schema wurde um das LDAP-Attribut 
"ucsschoolHomeShareFileServer" erweitert. 

2) Für das neue LDAP-Attribut "ucsschoolHomeShareFileServer" sowie für das 
bereits vorhandene Attribut "ucsschoolClassShareFileServer" werden jetzt
via Joinskript Extended Attributes am OU-Objekt erstellt. Dafür wird vom 
UCS@school-Schemapaket jetzt auch eine neue UDM-Syntax "UCSSchool_Server_DN" 
mitgeliefert, die alle Serverobjekte (DCs und Memberserver) mit FQDN anzeigt
und deren DN speichert. Die gesuchten Serverobjekte werden nicht eingeschränkt,
d.h. es werden alle Serverobjekte der gesamten Domäne angezeigt (notwendig für
Multi-OU-DCs).

3) Während eines create_ou Aufrufes wird jetzt per Default der SchulDC als
Fileserver für Klassen- und Benutzer-Home-Shares eingetragen. Sollte während
Aufrufs mit --sharefileserver ein anderer Server angegeben werden, wird dieser
verwendet.
Nachträgliche Änderungen sind derzeit nur über die Extended Attributes an der
OU möglich.

4) Beim Anlegen neuer Benutzer über import_users wurde die Bestimmung des
sambaHomePath angepasst (first match wins):
- falls ucsschool/import/set/sambahome gesetzt ist, wird dieser Wert verwendet
- falls ucsschool/singlemaster=true, wird der DC-Master als Fileserver verwendet
- es wird an der OU nach "ucsschoolHomeShareFileServer" gesucht und der gesetzte
  Wert verwendet.
Trifft keiner dieser Punkte zu, wird kein sambaHomePath gesetzt.

5) ucs-school-update-ou-fileservers wird in /usr/share/ucs-school-import/scripts
abgelegt. Es wird während des Updates auf UCS 3.1 vom UCS@school-Component 
postup.sh aufgerufen, um an allen OUs die beiden Fileserver zu setzen.
Dabei wird die alte Auswertungsmethode verwendet und in der OU nach einem Server
mit einem der folgenden Dienste gesucht (Prio absteigend; first server wins):
- Windows Home Server
- Samba 4
- Samba 3

Falls das Skript während des Updates nicht automatisch aufgerufen werden soll, 
kann VOR dem Update die UCR-Variable update31/ucsschool/ou_fileserver/update=no 
gesetzt werden. Das Skript gibt auf StdOut alle Änderungen aus.

> Vorschlag für die automatische Bestimmung:
> - Falls ucsschool/import/set/sambahome gesetzt, wird dieses verwendet.
> - Master wird verwendet, falls SingleServer-Umgebung erkannt wurde.
> - Suche nach DCs in der Zugriffsgruppe der jeweiligen OU
>   - falls in der Gruppe DCs enthalten sind, wird an den DC-Objekten nach den 
>     Services "Windows Home Server", "Samba 4" und "Samba 3" (in dieser 
>     Reihenfolge) gesucht. Bei einem Treffer, wird dieser als Fileserver
> gesetzt.
>     (Sollte der der aktuellen Funktion des Importskriptes entsprechen und auch
>      mit mehreren OU pro physikalischem Server funktionieren).
> - Anderenfalls wird eine Fehlermeldung ausgegeben/im Log gespeichert.

Die Suche in den Zugriffsgruppen der OU wurde bewusst nicht umgesetzt, da dies 
vom bisherigen Verhalten des Import-Skriptes abweicht. Das Aktualisierungsskript sollte zum gleichen Ergebnis kommen, wie das Importskript 
(import_users).

Im Changelog wird darauf hingewiesen, dass speziell bei Multi-OU-DCs 
die OUs noch einmal überprüft werden sollten.

Die Doku wurde erweitert.
Comment 8 Sönke Schwardt-Krummrich univentionstaff 2013-01-28 14:03:04 CET
> 5) ucs-school-update-ou-fileservers wird in
> /usr/share/ucs-school-import/scripts abgelegt.
> Es wird während des Updates auf UCS 3.1 vom UCS@school-Component 
> postup.sh aufgerufen, um an allen OUs die beiden Fileserver zu setzen.

→ das Skript wird nicht im postup.sh der Component sondern im postinst von 
  ucs-school-import aufgerufen.
Comment 9 Arvid Requate univentionstaff 2013-01-28 19:02:36 CET
Bisher sind nur kleinere Fehler aufgefallen:

* ucs-school-singlemaster: create_ou --sharefileserver=none
  -> falsche DN an der OU eingetragen:

root@master50:~# ucr search --brief ldap/hostdn
ldap/hostdn: cn=master50,cn=dc,cn=computers,dc=school31i1,dc=qa
root@master50:~# univention-ldapsearch -xLLL \
                  ou=28g01 ucsschoolHomeShareFileServer
dn: ou=28G01,dc=school31i1,dc=qa
ucsschoolHomeShareFileServer: cn=master50,cn=dc,cn=server,cn=computers,ou=28G01,dc=school31i1,dc=qa


* Generell werden DNs nicht validiert:
root@master50:~# udm container/ou modify \
   --dn ou=28G01,dc=school31i1,dc=qa \
   --set ucsschoolHomeShareFileServer=cn=master50,cn=invalid
Object modified: ou=28G01,dc=school31i1,dc=qa


* Variablenbeschreibung sollte z.B. per Beispiel klarmachen, was zu setzen ist:
** ucr set ucsschool/import/set/sambahome=foo1  -> sambaHomePath: foo1\user2
** ucr set ucsschool/import/set/sambahome=//member/home
  -> sambaHomePath: //member/home\user2
** ucr search ucsschool/import/set/sambahome
  Windows home path to set for each user on _creation_. If unset, the LDAP will be searched for computer with the service "Windows Home Server"
Comment 10 Sönke Schwardt-Krummrich univentionstaff 2013-01-29 11:29:46 CET
(In reply to comment #9)
> Bisher sind nur kleinere Fehler aufgefallen:
> 
> * ucs-school-singlemaster: create_ou --sharefileserver=none
>   -> falsche DN an der OU eingetragen:

Beim create_ou wird jetzt auf einen syntaktisch gültigen Hostnamen geprüft und auf das Vorhandensein dieses Hostnamens im LDAP. Ist das nicht erfüllt, bricht create_ou ab.

> root@master50:~# ucr search --brief ldap/hostdn
> ldap/hostdn: cn=master50,cn=dc,cn=computers,dc=school31i1,dc=qa
> root@master50:~# univention-ldapsearch -xLLL \
>                   ou=28g01 ucsschoolHomeShareFileServer
> dn: ou=28G01,dc=school31i1,dc=qa
> ucsschoolHomeShareFileServer:
> cn=master50,cn=dc,cn=server,cn=computers,ou=28G01,dc=school31i1,dc=qa

Das sollte damit gefixt sein. Der Fallback wurde ebenfalls korrigiert.

> * Generell werden DNs nicht validiert:
> root@master50:~# udm container/ou modify \
>    --dn ou=28G01,dc=school31i1,dc=qa \
>    --set ucsschoolHomeShareFileServer=cn=master50,cn=invalid
> Object modified: ou=28G01,dc=school31i1,dc=qa

# udm container/ou modify --dn ou=351,dc=nstx,dc=local \
   --set ucsschoolHomeShareFileServer=master50
Invalid syntax: Server for Windows home directories: Not a valid LDAP DN
#

Ich denke, das kann erstmal so bleiben, zumal der Benutzer in der UMC ein DropDown mit möglichen Rechnern angezeigt bekommt und dort keine Falscheingabe tätigen kann.

> * Variablenbeschreibung sollte z.B. per Beispiel klarmachen, was zu setzen ist:
> ** ucr set ucsschool/import/set/sambahome=foo1  -> sambaHomePath: foo1\user2
> ** ucr set ucsschool/import/set/sambahome=//member/home
>   -> sambaHomePath: //member/home\user2
> ** ucr search ucsschool/import/set/sambahome
>   Windows home path to set for each user on _creation_. If unset, the LDAP will
> be searched for computer with the service "Windows Home Server"

Fixed.

ucs-school-import (9.0.6-1) unstable; urgency=low
Comment 11 Arvid Requate univentionstaff 2013-01-29 15:48:38 CET
Beschreibung ist noch nicht korrekt, das Beispiel ist irreführend:

root@master50:~# ucr search sambahome
ucsschool/import/set/sambahome: \\servername\path
 Windows home path to set for each user on _creation_. If unset, the master will be used as file server in single-master environments. Otherwise the file server specified at corresponding OU object will be used (Example: \\servername\path

liefert:

sambaHomePath: \\servername\path\user2
Comment 12 Sönke Schwardt-Krummrich univentionstaff 2013-01-29 16:20:27 CET
> ucsschool/import/set/sambahome: \\servername\path

In ucsschool/import/set/sambahome ist jetzt minimal nur noch der Servername anzugegeben. Fehlende Backslashes werden automatisch hinzugefügt.

"servername" → "\\servername\<username>"
"\\servername" → "\\servername\<username>"
"\servername\" → "\\servername\<username>"

Neue Beschreibung:

Description[en]=The given server is used for defining the Windows home path during user creation. If unset, the master will be used as file server in single-master environments. Otherwise the file server specified at corresponding OU object will be used (Example: "dc123-01" results in home path "\\dc123-01\<username>" ; Default: not defined)

ucs-school-import (9.0.6-2) unstable; urgency=low
Comment 13 Arvid Requate univentionstaff 2013-01-29 17:47:22 CET
Verified:

* Während eines create_ou Aufrufes wird jetzt per Default der SchulDC als Fileserver für Klassen- und Benutzer-Home-Shares eingetragen. OK

* Sollte während Aufrufs mit --sharefileserver ein anderer Server angegeben werden, wird dieser verwendet. OK

* Nachträgliche Änderungen sind derzeit nur über die Extended Attributes an der
OU möglich. OK

* Beim Anlegen neuer Benutzer über import_users wurde die Bestimmung des sambaHomePath angepasst (first match wins). OK

* falls ucsschool/import/set/sambahome gesetzt ist, wird dieser Wert verwendet. OK
* falls ucsschool/singlemaster=true, wird der DC-Master als Fileserver verwendet. OK
* es wird an der OU nach "ucsschoolHomeShareFileServer" gesucht und der gesetzte Wert verwendet. OK

* ucs-school-update-ou-fileservers wird in /usr/share/ucs-school-import/scripts
abgelegt. Es wird während des Updates auf UCS 3.1 vom UCS@school-Component postup.sh aufgerufen, um an allen OUs die beiden Fileserver zu setzen. OK

* Dabei wird die alte Auswertungsmethode verwendet und in der OU nach einem
Server mit einem der folgenden Dienste gesucht [...]

Verified: hostet ein Schul-DC zwei OUs, so schlägt die automatische Bestimmung für mindestens eine der OUs fehl. Definiert man z.B. einen Memberserver unter der OU als "Windows Home Server" und führt das Skript erneut aus, dann werden die Exended Attributes korrekt gesetzt:
======================================================================
root@master70:~# /usr/share/ucs-school-import/scripts/ucs-school-update-ou-fileservers --auto-detect
OU: ou=28G01,dc=school30u1,dc=qa
    ==> ucsschoolClassShareFileServer has already been set
    ==> ucsschoolHomeShareFileServer has already been set
OU: ou=28G02,dc=school30u1,dc=qa
ERROR: cannot determine fileserver for class shares
ERROR: cannot determine fileserver for user home shares
OU: ou=28G03,dc=school30u1,dc=qa
    ==> ucsschoolClassShareFileServer has already been set
    ==> ucsschoolHomeShareFileServer has already been set

root@master70:~# udm computers/memberserver modify \
   --dn "cn=member74,cn=memberserver,cn=computers,dc=school30u1,dc=qa" \
   --set service="Windows Home Server"

root@master70:~# udm computers/memberserver move \
   --dn "cn=member74,cn=memberserver,cn=computers,dc=school30u1,dc=qa" \
   --position "cn=computers,ou=28G02,dc=school30u1,dc=qa"

root@master70:~# /usr/share/ucs-school-import/scripts/ucs-school-update-ou-fileservers --auto-detect
OU: ou=28G01,dc=school30u1,dc=qa
    ==> ucsschoolClassShareFileServer has already been set
    ==> ucsschoolHomeShareFileServer has already been set
OU: ou=28G02,dc=school30u1,dc=qa
    ==> ucsschoolClassShareFileServer has already been set
    ==> ucsschoolHomeShareFileServer = cn=member74,cn=computers,ou=28G02,dc=school30u1,dc=qa
OU: ou=28G03,dc=school30u1,dc=qa
    ==> ucsschoolClassShareFileServer has already been set
    ==> ucsschoolHomeShareFileServer has already been set
======================================================================

* Falls das Skript während des Updates nicht automatisch aufgerufen werden soll,  kann VOR dem Update die UCR-Variable update31/ucsschool/ou_fileserver/update=no gesetzt werden. OK

* Das Skript gibt auf StdOut alle Änderungen aus. OK

* Im Changelog wird darauf hingewiesen, dass speziell bei Multi-OU-DCs die OUs noch einmal überprüft werden sollten. OK

* Comment 10 und Comment 12: Verified.

* Im changelog wurde noch der Hinweis aufgenommen, dass man im Zweifelsfall nach dem Update "/usr/share/ucs-school-import/scripts/ucs-school-update-ou-fileservers --auto-detect" auf dem Master einfach nochmal ausführen kann.
Comment 14 Sönke Schwardt-Krummrich univentionstaff 2013-02-15 17:51:12 CET
UCS@school 3.1 has been released: 
 http://forum.univention.de/viewtopic.php?f=26&t=2364

If this error occurs again, please use "Clone This Bug".