Entwicklungsumgebung/Samba: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
(smbldap_bind.conf)
(smbldap.conf)
Zeile 60: Zeile 60:
=== Konfiguration der smbldap-Tools ===
=== Konfiguration der smbldap-Tools ===


Ändern Sie folgende Zeilen in '''[[Entwicklungsumgebung/Dateiliste/smbldap_bind.conf|//etc/smbldap-tools/smbldap_bind.conf]]''' ab:
Ändern Sie folgende Zeilen in '''[[Entwicklungsumgebung/Dateiliste/smbldap_bind.conf|/etc/smbldap-tools/smbldap_bind.conf]]''' ab:


<source highlight="1-4" lang="text">
<source highlight="1-4" lang="text">
Zeile 70: Zeile 70:




  /etc/smbldap-tools/smbldap.conf                              (Datei im Paket)
Jetzt lesen Sie die "localsid" von SAMBA aus und tragen diese in die Konfiguration ein. Zuvor sichern Sie aber unbedingt die vorhandene Konfiguration:


   mit net getlocalsid >> /etc/smbldap-tools/smbldap.conf
   cp /etc/smbldap-tools/smbldap.conf /etc/smbldap-tools/smbldap.conf.orig
  dann verschieben z.B. mit den MC
  net getlocalsid >> /etc/smbldap-tools/smbldap.conf
 
 
Mit diesem Befehl haben Sie eine neue letzte Zeile an die bisherige Datei angefügt, die jetzt noch innerhalb der Datei verschoben werden muss. Ändern Sie diese und die folgenden Zeilen in '''[[Entwicklungsumgebung/Dateiliste/smbldap.conf|/etc/smbldap-tools/smbldap.conf]]''' ab:
 
<source highlight="1-74" lang="text">
    # bisherige Zeile auskommentieren
    # SID="S-1-5-21-3733721172-1526293526-4229837797"
    # letzte Zeile vom Dateiende hier her verschieben
    # SID fo Domain ALIX is: S-1-5-21-3733721172-1526293526-4229831777
    # und daraus die neue Zeile generieren
    SID="S-1-5-21-3733721172-1526293526-4229831777"
    #
    sambaDomain="SCHULE"
    # muss bei uns gleich sein
    slaveLDAP="127.0.0.1"
    slavePort="389"
    masterLDAP="127.0.0.1"
    masterPort="389"
    # ich verschluessel nichts
    ldapTLS="0"
    verify="none"
    cafile=""
    clientcert=""
    clientkey=""
    # delixs
    suffix="dc=delixs-schule,dc=de"
    usersdn="ou=people,ou=accounts,${suffix}"
    computersdn="ou=machines,ou=accounts,${suffix}"
    groupsdn="ou=groups,${suffix}"
    # das ist noch unklar
    idmapdn="ou=Idmap,${suffix}"
    sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
    scope="sub"
    hash_encrypt="MD5"
    # der naechste Eintrag soll nicht stoeren
    crypt_salt_format="%s"
    userLoginShell="/bin/bash"
    userHome="/home/students/%U"
    userHomeDirectoryMode="700"
    userGecos="System User"
    defaultUserGid="1002"
    defaultComputerGid="1004"
    skeletonDir="/etc/skel"
    # ein leerer Wert wird nicht akzeptiert. also habe ich einen großen Wert genommen
    defaultMaxPasswordAge="10000"
    # die naechsten 4 Werte sollen aus der smb.conf genommen werden
    userSmbHome=""
    userProfile=""
    userHomeDrive=""
    userScript=""
    mailDomain="delixs-schule.de"
    # die naechsten Werte waren Vorgabe
    with_smbpasswd="0"
    smbpasswd="/usr/bin/smbpasswd"
    with_slappasswd="0"
    slappasswd="/usr/sbin/slappasswd"
</source>





Version vom 3. Juli 2009, 11:10 Uhr

Uberarbeiten Diese Seite sollte nochmals überarbeitet werden. Eine Begründung befindet sich in der Regel unter Diskussion (oben).


SAMBA

Das Paket "SAMBA" enthält alle notwendigen Komponenten eines Datei- und Druckservers für Windows-Clientsysteme.

Installation

Die Installation erfolgt mit den Befehlen:

 aptitude install samba samba-common smbclient swat 


Während der Installation sind 2 Fragen zu beantworten:


Eingabe der Domäne
Abbildung: Eingabe der Domäne


Für den delixs-Schulserver geben Sie als Domänenname SCHULE ein. Benutzen Sie unbedingt große Buchstaben.


WINS-Einstellungen
Abbildung: WINS-Einstellungen


DHCP ist zwar noch nicht installiert, aber Sie können dennoch schon jetzt die Einstellung "JA" auswählen.


SAMBA - LDAP Support

Zuerst erfolgt die Installation mit dem Befehl:

 aptitude install libpam-smbpass smbldap-tools smbfs smb-nat samba-doc


Für den SAMBA - LDAP-Zugriff benötigt "slapd" die Samba Schemata. Die Vorlage nehmen Sie direkt aus dem SAMBA-Paket "samba-doc", weil es dort am aktuellsten in Bezug auf SAMBA ist.

Geben Sie folgende Befehle ein:

 cd /usr/share/doc/samba-doc/examples/LDAP 
 gunzip samba.schema.gz 
 cp samba.schema /etc/ldap/schema/

Nun fügen Sie folgende Zeile in /etc/ldap/slapd.conf hinter den anderen "includes"-Zeilen ein:

 include /etc/ldap/schema/samba.schema

Zur Nutzung der "smbldap-tools" gehören 2 Dateien, die Sie erst manuell entpacken und kopieren müssen.

 zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
 cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf


Konfiguration der smbldap-Tools

Ändern Sie folgende Zeilen in /etc/smbldap-tools/smbldap_bind.conf ab:

<source highlight="1-4" lang="text">

  slaveDN="cn=admin,dc=delixs-schule,dc=de"
  slavePw="schule"
  masterDN="cn=admin,dc=delixs-schule,dc=de"
  masterPw="schule"

</source>


Jetzt lesen Sie die "localsid" von SAMBA aus und tragen diese in die Konfiguration ein. Zuvor sichern Sie aber unbedingt die vorhandene Konfiguration:

 cp /etc/smbldap-tools/smbldap.conf /etc/smbldap-tools/smbldap.conf.orig
 net getlocalsid >> /etc/smbldap-tools/smbldap.conf


Mit diesem Befehl haben Sie eine neue letzte Zeile an die bisherige Datei angefügt, die jetzt noch innerhalb der Datei verschoben werden muss. Ändern Sie diese und die folgenden Zeilen in /etc/smbldap-tools/smbldap.conf ab:

<source highlight="1-74" lang="text">

    # bisherige Zeile auskommentieren
    # SID="S-1-5-21-3733721172-1526293526-4229837797"
    # letzte Zeile vom Dateiende hier her verschieben
    # SID fo Domain ALIX is: S-1-5-21-3733721172-1526293526-4229831777
    # und daraus die neue Zeile generieren
    SID="S-1-5-21-3733721172-1526293526-4229831777"
    #
    sambaDomain="SCHULE"
    # muss bei uns gleich sein
    slaveLDAP="127.0.0.1"
    slavePort="389"
    masterLDAP="127.0.0.1"
    masterPort="389"
    # ich verschluessel nichts
    ldapTLS="0"
    verify="none"
    cafile=""
    clientcert=""
    clientkey=""
    # delixs
    suffix="dc=delixs-schule,dc=de"
    usersdn="ou=people,ou=accounts,${suffix}"
    computersdn="ou=machines,ou=accounts,${suffix}"
    groupsdn="ou=groups,${suffix}"
    # das ist noch unklar
    idmapdn="ou=Idmap,${suffix}"
    sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
    scope="sub"
    hash_encrypt="MD5"
    # der naechste Eintrag soll nicht stoeren
    crypt_salt_format="%s"
    userLoginShell="/bin/bash"
    userHome="/home/students/%U"
    userHomeDirectoryMode="700"
    userGecos="System User"
    defaultUserGid="1002"
    defaultComputerGid="1004"
    skeletonDir="/etc/skel"
    # ein leerer Wert wird nicht akzeptiert. also habe ich einen großen Wert genommen
    defaultMaxPasswordAge="10000"
    # die naechsten 4 Werte sollen aus der smb.conf genommen werden
    userSmbHome=""
    userProfile=""
    userHomeDrive=""
    userScript=""
    mailDomain="delixs-schule.de"
    # die naechsten Werte waren Vorgabe
    with_smbpasswd="0"
    smbpasswd="/usr/bin/smbpasswd"
    with_slappasswd="0"
    slappasswd="/usr/sbin/slappasswd"

</source>


Abschließend starten Sie noch "slapd" neu:

 /etc/init.d/slapd restart


Konfiguration von SAMBA

Ziel

Es sollen für jeden Nutzer die Freigaben "tmp", "pub" und "Vorlagen" zur Verfügung stehen.

Außerdem sollen die Webseiten des Intranets komfortabel gepflegt werden können, dafür wird die Freigabe "intranet" eingerichtet.

Außerdem soll "ausgewählten" Lehrern der lesende Zugriff auf die Homeverzeichnisse der Schüler (students) gewährt werden können. Dafür wird die Freigabe "fachl" eingerichtet. Diese "ausgewählten" Lehrer (teacher) müssen für diesen Zugriff später in die Gruppe 'fachl' eingetragen werden.

Die Gruppe der Admins soll zudem auch Schreibrecht in den Homeverzeichnissen der Schüler erhalten. Dafür wird die Freigabe "admins" eingerichtet.

Außerdem wird eine Freigabe "netlogon" angelegt.

Die Profile der Nutzer liegen vorerst im Homeverzeichnis. Deshalb ist dafür kein Share notwendig. Eine Umstellung auf ein eigenes Profilverzeichnis, in dem Profile einfacher zu händeln sind, kann recht problemlos später bei der Erstellung von Scripten zum Useranlegen bei Nutzung des LDAPs erfolgen.


Zugriff auf die Shares

Die Shares "tmp", "pub" und "Vorlagen" werden als Laufwerke t:, p: und V: zur Verfügung gestellt, das Homeverzeichnis als u:, zudem sollen beim Abarbeiten der autoexec.bat die Uhr des Clients gestellt werden. Die Zugriff auf die anderen Shares erfolgt über die Netzwerkumgebung.

eigentliche Einrichtung

Da nach der mir vorliegenden Literatur die UIDs bis 999 reserviert sind, vergebe ich für die Rechneraccounts die UID von 1000 bis 1999, für die User die IDs von 2000 bis 30000. Da die GIDs bis 999 reserviert sind (sein sollen), vergebe ich ab 1000. Die Lehrer (teacher) erhalten die GID 1002 und die Schüler (students) die GID 1001. Die Gruppe fachl die GID 1010. Die Rechner bekommen die GID 1007.

Um die beiden Shares "admins" und "fachl" einrichten zu können (zumindest ohne Kopfstände machen zu müssen), kann die Struktur in den Homeverzeichnissen nicht flach sein (wie ich es erst probiert habe). Also nun genauso wie bei Arktur4 strukturiert.

da mmustermann noch nicht nach der neuen Struktur für das /home-Verzeichnis angelegt wurde, wird er als erstes gelöscht.

userdel -r -f mmustermann

folgende Testuser habe ich angelegt:

<source lang="text"> User Login UID:GID Gruppe Nebengruppe


--------- -------- -------- -----------

Egon Olsen eolsen 2000:1002 students Manfred Mustermann mmustermann 2001:1002 students Friedrich Schiller fschiller 2002:1001 teacher Niklaus Wirth nwirth 2003:1001 teacher fachl </source>

dazu wurde in der /etc/adduser.conf geändert:

<source lang="text"> GROUPHOMES=yes (erzeugt die gewünschte Verzeichnisstruktur) USERGROUPS=no (sonst hätte jeder User eine eigene Gruppe) USERS_GID=1002 (entspricht students) QUOTAUSER="games" (für später)

  1. Funktinoniert bei mir (Harry) so nicht.

NAME_REGEX="^[a-z][-a-z0-9]*\$?$" Kommentarzeichen wurde entfernt und Regex geändert! </source> <source lang="text">

  1. Erlaubt sind Namen in Groß- & Kleinschreibung
  2. Namen beginnen mit einem Buchstaben und dürfen
  3. ein Dollar Zeichen am Ende haben. Ansonsten sind
  4. Buchstaben, Zahlen, Binde- & Unterstrich erlaubt.
  5. Die Regex ist eine "extend Regex", siehe "grep -E"

NAME_REGEX='^alpha:[-_[:alnum:]]*\${0,1}$' </source>

dann das Verzeichnis /etc/skel ergänzt:

<source lang="text"> html_public 755 root:root html_public/index.html 644 root:root Win95 Win2K WinXP WinNT </source>

dann die Gruppen angelegt mit:

<source lang="text">

 addgroup --gid 1001 teacher
 addgroup --gid 1002 students
 addgroup --gid 1010 fachl
 addgroup --gid 1007 rechner

</source>

dann diese 4 User angelegt (am Beispiel von eolsen):

<source lang="text">

 adduser --uid 2000 --gid 1002 --gecos "Egon Olsen,5a" --disabled-password eolsen
 passwd eolsen
 smbpasswd -a eolsen         # mit -a wird der (Samba-)Account angelegt

</source>

den Lehrer nwirth habe ich so zusätzlich in die Gruppe 'fachl' aufgenommen:

usermod -G fachl nwirth


Account für einen Rechner anlegen

<source lang="text">

 useradd -u 1000 -g 1007 -d /dev/null -s /bin/false privat\$
 passwd -l privat\$
 smbpasswd -a -m privat      # -a für (Samba-)Account anlegen; - m für Maschinenaccount

</source>


es wurden die Verzeichnisse für die Shares angelegt: <source lang="text">

 /etc/samba/scripts
 /home/adm
 /home/www     ? das müßte doch eigentlich ein SymLink sein?
 /home/tmp

</source>


meine smb.conf sieht erstmal so aus:

<source lang="text">

  1. Global parameters

[global] server string = Schulserver %h workgroup = SCHULE interfaces = lo 192.168.0.1/255.255.255.0 bind interfaces only = Yes hosts allow = 127. 192.168. 10. unix extensions = yes time server = yes socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE case sensitive = no preserve case = yes short preserve case = yes

logon script = %a.bat logon path = \\%L\%U\%a logon home = \\%L\%U\%a domain logons = yes domain master = yes os level = 255 preferred master = yes

       passdb backend      = ldapsam:ldap://localhost
       ldapsam:trusted     = yes
       ldap passwd sync    = yes
       pam password change = Yes

unix passwd sync = yes

       passwd program      = /usr/bin/passwd %u
       passwd chat         = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully*

encrypt passwords = yes

dns proxy = no wins support = yes admin users = adm, root, administrator guest account = nobody mangled names = no log level = 1 veto files = /*.eml/*.nws/riched20.dll/*.{*}/

[netlogon] comment = Anmeldeverzeichnis browsable = yes path = /etc/samba/scripts public = yes write list = adm, root share modes = no guest ok = yes locking = no

[homes] comment = Stammverzeichnis browseable = no read only = no inherit permissions = yes create mask = 0755 map hidden = yes map system = yes hide dot files = yes wide links = no

[tmp] comment = Datenaustausch path = /home/tmp read only = no public = yes create mode = 0666 directory mode = 0777 wide links = no

[pub] comment = Unterrichtsmaterial path = /home/adm write list = adm, root public = yes wide links = yes

[intranet] comment = Intranet-Seiten path = /home/www valid users = @www guest ok = no writeable = yes create mode = 0664 directory mode = 0775 force group = www

[fachl] comment = Fachlehrer-Zugang path = /home/students valid users = @fachl guest ok = no writeable = yes create mode = 0777 force group = fachl

[admins] comment = Admin-Freigabe path = /home/students valid users = @admins guest ok = no writeable = yes create mode = 0666 directory mode = 0777 force group = admins </source>

Hinweis: Eine detaillierte Beschreibung der einzelnen Einstellungen in der Datei smb.conf finden Sie unter Entwicklungsumgebung/Samba/Smb.conf

meine Win95.bat:

<source lang="text"> @echo off net use u: \\serv\homes /yes net use p: \\serv\pub /yes net use t: \\serv\tmp /yes net use v: \\serv\Vorlagen /yes net time \\serv /set /yes </source>

Da wir noch keinen Nameserver haben, wurde mit Hilfe der hosts- bzw. lmhosts-Datei dafür gesorgt, dass die Rechner sich verständigen können.

auf dem Win98-Client wurde eine hosts-Datei erstellt mit folgendem Inhalt:

<source lang="text"> 127.0.0.1 localhost 192.168.0.1 serv.mydomain.local </source>

und eine lmhosts-Datei:

<source lang="text"> 192.168.0.1 serv 192.168.0.20 privat </source>

auf dem Server in der /etc/hosts:

192.168.0.20 privat.mydomain.local privat 


Samba wurde neu gestartet mit

/etc/init.d/samba restart

Die Anmeldung an Samba lief problemlos

Administrative Rechte einrichten (Default-ACL)

Da für die Anbindung an die verschiedenen Clientsysteme auch verschiedene Dienste auf dem delixs-Server zuständig sind (beispielsweise NFS für Linux-Clients oder SAMBA für Windows-Clients), sollten die Rechte direkt im Dateisystem des Servers gesetzt werden und nicht im SAMBA selbst.

Es würde sonst die Gefahr bestehen, das je nach Clientsystem verschiedene Rechte für ein und denselben Nutzer bestehen.

Die Beschreibung der Vergabe dieser Grundrechte erfolgt im Kapitel: Entwicklungsumgebung/ACL_Einrichtung


Hinweise zu Updates

  • erst mal nur gesammelt:

Das Update auf Samba 3.2 erzeugt automatisch neue tdb Dateien, wegen der Versionsänderung der tdb-Datenbanksoftware.

Ein normales Samba-Update sieht so aus:

 net getlocalsid >/etc/samba/SID
 samba stoppen
 update installieren
 samba starten
 net setlocalsid $(cat /etc/samba/SID)
 smbpasswd -w $(cat /etc/ldap.secret)

Alternativ kannst Du probieren, die Installation zu reparieren:

 samba stoppen
 rm /etc/samba/private/*tdb
 samba starten
 # Alte SID setzen:
 net setlocalsid S-1-5-21-1594489954-3312520503-1242147674
 smbpasswd -w $(cat /etc/ldap.secret)

Hinweissammlung


Weblinks



zurück | Hauptseite

Harry Jede, Hans-Dietrich Kirmse 2009