Entwicklungsumgebung/Samba: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
(Administrative Rechte einrichten (Default-ACL) verlagert)
 
(27 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
__NOTOC__
__NOTOC__
{{Uberarbeiten}}
{{EditStatus|1|Kirmse}}  




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


=== Installation ===
=== Installation ===




Die Installation erfolgt mit  
Die Installation erfolgt mit den Befehlen:


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


Während der Installation mussten folgende 2 Fragen beantwortet werden:


[[Bild:Samba01.png | Eingabe der Domäne]]
Während der Installation sind 2 Fragen zu beantworten:


Es wurde wie bei Arktur 4 als Domänenname '''SCHULE''' gewählt.


[[Bild:Samba02.png | WINS-Einstellungen]]
:[[Bild:Samba01.png | 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.
 
 
:[[Bild:Samba02.png | WINS-Einstellungen]]
:''Abbildung: WINS-Einstellungen''
 
 
Lassen Sie die Einstellung "NEIN" stehen und fahren mit der Installation fort.


Zu diesem Menü der Hinweis, dass die Voreinstellung <Nein> war. Der dhcp3-client ist zwar noch nicht installiert, aber das kommt noch.


== SAMBA - LDAP Support ==
== SAMBA - LDAP Support ==


Für den SAMBA - LDAP-Zugriff benötigt "slapd" die Samba Schemata. Wir nehmen die Vorlage direkt aus dem SAMBA-Paket "samba-doc", weil es dort am aktuellsten in Bezug auf SAMBA ist.
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:
Geben Sie folgende Befehle ein:
Zeile 33: Zeile 47:
   cp samba.schema /etc/ldap/schema/
   cp samba.schema /etc/ldap/schema/


Nun fügen Sie folgende Zeile in <code>/etc/ldap/slapd.conf</code> hinter den anderen "includes"-Zeilen ein:
Nun fügen Sie folgende Zeile in '''[[Entwicklungsumgebung/Dateiliste/slapd.conf|/etc/ldap/slapd.conf]]''' hinter den anderen "includes"-Zeilen ein:


   include /etc/ldap/schema/samba.schema
   include /etc/ldap/schema/samba.schema


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


   zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
   zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
   zcat /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf > /etc/smbldap-tools/smbldap_bind.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 '''[[Entwicklungsumgebung/Dateiliste/smbldap_bind.conf|/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>
 
Da in dieser Datei die Passworte im Klartext stehen, wird noch eine Beschränkung der Rechte benötigt:
 
  chown root:root /etc/smbldap-tools/smbldap_bind.conf
  chmod 600 /etc/smbldap-tools/smbldap_bind.conf
 
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 '''[[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 for Domain ALIX is: S-1-5-21-1217022432-528198597-2225102744
    # und daraus die neue Zeile generieren
    SID="S-1-5-21-1217022432-528198597-2225102744"
    #
    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>




Zeile 49: Zeile 142:




== Konfiguration von SAMBA ==
== Konfiguration von SAMBA (Teil 1 - Grundkonfiguration) ==


=== Ziel ===
=== Ziel ===


Es sollen nach dem Vorbild von Arktur4 für jeden Nutzer die Shares "tmp", "pub" und "Vorlagen" zur Verfügung stehen. Außerdem sollen die Webseiten des Intranets komfortabel gepflegt werden können, dazu das Share "intranet". Außerdem soll "ausgewählten" Lehrern der lesende Zugriff auf die Homeverzeichnisse der Schüler erfolgen können. Dazu das Share "fachl" (kenne ich zumindest so von Arktur 3.5). Die "ausgewählten" Lehrer müssen wie bei Arktur dazu in die Gruppe 'fachl' eingetragen werden. Die Gruppe der Admins soll wie bei Arktur4 zudem auch Schreibrecht in den Homeverzeichnissen der Schüler erhalten. Dazu wird das Share "admins" eingerichtet. Außerdem wird wie bei Arktur4 das Share "netlogon" angelegt. Um die Profile einfach händeln zu können, lege ich die wie bei Arktur 3.5 ins
Es sollen für jeden Nutzer die Freigaben "groups", "change" und "software" zur Verfügung stehen.  
Homeverzeichnis. Deshalb ist dafür kein Share notwendig. Eine Umstellung auf ein eigenes
Profilverzeichnis wie bei Arktur4 kann m.E. problemlos 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 <code>autoexec.bat</code> die Uhr des Clients gestellt werden. Die Zugriff auf die anderen Shares erfolgt über die Netzwerkumgebung.
Außerdem sollen die Webseiten des Intranets komfortabel gepflegt werden können, dafür wird die Freigabe "intranet" eingerichtet.  


=== eigentliche Einrichtung ===
Außerdem soll "ausgewählten" Lehrern der lesende Zugriff auf die Homeverzeichnisse der Schüler klassenweise (classes) 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.


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 erhalten die GID 1002 und die Schüler die GID 1001. Die Gruppe fachl die GID 1010. Die Rechner bekommen die GID 1007.
Die Gruppe der Admins soll zudem auch Schreibrecht in den Homeverzeichnissen der Schüler erhalten. Dafür wird die Freigabe "admins" eingerichtet.  


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.
Außerdem wird eine Freigabe "netlogon" angelegt.  


da <code>mmustermann</code> noch nicht nach der neuen Struktur für das /home-Verzeichnis angelegt wurde, wird er als erstes gelöscht.
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.


userdel -r -f mmustermann


folgende Testuser habe ich angelegt:
=== Zugriff auf die Shares ===


<source lang="text">
Die Shares "change" (Tausch), "software" (Software) und "groups" (Arbeits- und Projektgruppen) werden als Laufwerke t:, p: und r: zur Verfügung gestellt, das Homeverzeichnis als u:, zudem soll beim Abarbeiten der <code>logon.bat</code> die Uhr des Clients gestellt werden. Die Zugriff auf die anderen Shares erfolgt über die Netzwerkumgebung.
User                    Login      UID:GID      Gruppe      Nebengruppe
------------------      ---------  --------      --------    -----------
Egon Olsen              eolsen      2000:1002      Schueler
Manfred Mustermann      mmustermann 2001:1002      Schueler
Friedrich Schiller      fschiller  2002:1001      Lehrer
Niklaus Wirth          nwirth      2003:1001      Lehrer      fachl
</source>


dazu wurde in der <code>/etc/adduser.conf</code> geändert:
=== eigentliche Einrichtung ===


<source lang="text">
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.
GROUPHOMES=yes                      (erzeugt die gewünschte Verzeichnisstruktur)
USERGROUPS=no                        (sonst hätte jeder User eine eigene Gruppe)
USERS_GID=1002                       (entspricht Schüler)
QUOTAUSER="games"                    (für später)
#Funktinoniert bei mir (Harry) so nicht.
NAME_REGEX="^[a-z][-a-z0-9]*\$?$"    Kommentarzeichen wurde entfernt und Regex geändert!
</source>
<source lang="text">
# Erlaubt sind Namen in Groß- & Kleinschreibung
# Namen beginnen mit einem Buchstaben und dürfen
# ein Dollar Zeichen am Ende haben. Ansonsten sind
# Buchstaben, Zahlen, Binde- & Unterstrich erlaubt.
# Die Regex ist eine "extend Regex", siehe "grep -E"
NAME_REGEX='^[[:alpha:]][-_[:alnum:]]*\${0,1}$'
</source>


dann das Verzeichnis <code>/etc/skel</code> ergänzt:
Um die beiden Freigaben "admins" und "fachl" einrichten zu können, wird das Homeverzeichnis "/home" durch hinzufügen der Verzeichnisse analog der Gruppennamen strukturiert. Siehe auch Kapitel: [[Entwicklungsumgebung/LDAP_User|Rollen und Berechtigungen der Nutzer]]


<source lang="text">
  mkdir /home/administration
html_public              755 root:root
  mkdir /home/all 
html_public/index.html   644 root:root
  mkdir /home/archiv
Win95
  mkdir /home/classes
Win2K
  mkdir /home/exam
WinXP
  mkdir /home/ftp
WinNT
   mkdir /home/groups
</source>
  mkdir /home/profile
  mkdir /home/profile/administration
  mkdir /home/profile/exam
  mkdir /home/profile/service
  mkdir /home/profile/students
  mkdir /home/profile/teacher
  mkdir /home/profile/wsuser
  mkdir /home/service
  mkdir /home/software
  mkdir /home/students
  mkdir /home/teacher
  mkdir /home/wsuser
  mkdir /home/www


dann die Gruppen angelegt mit:


<source lang="text">
Vor der Erstellung der künftigen Test-Nutzer wurde in der '''[[Entwicklungsumgebung/Dateiliste/adduser.conf|/etc/adduser.conf]]''' folgendes geändert:
  addgroup --gid 1001 lehrer
  addgroup --gid 1002 schueler
  addgroup --gid 1010 fachl


  addgroup --gid 1007 rechner
<source highlight="1-12" 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 spaeter)
# Funktinoniert bei mir so nicht.
# NAME_REGEX="^[a-z][-a-z0-9]*\$?$"
# Erlaubt sind Namen in Groß- & Kleinschreibung
# Namen beginnen mit einem Buchstaben und dürfen
# ein Dollar Zeichen am Ende haben. Ansonsten sind
# Buchstaben, Zahlen, Binde- & Unterstrich erlaubt.
# Die Regex ist eine "extend Regex", siehe "grep -E"
NAME_REGEX='^[[:alpha:]][-_[:alnum:]]*\${0,1}$'
</source>
</source>


dann diese 4 User angelegt (am Beispiel von <code>eolsen</code>):


<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 <code>nwirth</code> habe ich so zusätzlich in die Gruppe 'fachl' aufgenommen:


usermod -G fachl nwirth
Jetzt wird noch das Verzeichnis <code>/etc/skel-profile</code> für die Windows-Profile ergänzt:




Account für einen Rechner anlegen
  mkdir /etc/skel-profile
  mkdir /etc/skel-profile/Win95  (Windows 9x/Me)
  mkdir /etc/skel-profile/WinNT  (Windows NT)
  mkdir /etc/skel-profile/Win2K  (Windows 2000)
  mkdir /etc/skel-profile/Win2K3  (Windows 2003)
  mkdir /etc/skel-profile/WinXP  (Windows XP)
  mkdir /etc/skel-profile/WinXP64 (Windows XP 64bit)
  mkdir /etc/skel-profile/Vista  (Windows Vista)


<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>


Danach werden die Verzeichnisse für die logon-Scripts angelegt:




es wurden die Verzeichnisse für die Shares angelegt:
   mkdir /etc/samba/scripts
<source lang="text">
   mkdir /etc/samba/exec
   /etc/samba/scripts
   mkdir /etc/samba/private
   /home/adm
  /home/www    ? das müßte doch eigentlich ein SymLink sein?
   /home/tmp
</source>




meine smb.conf sieht erstmal so aus:
Die vorläufige Datei '''[[Entwicklungsumgebung/Dateiliste/smb.conf|/etc/samba/smb.conf]]''' sieht erst einmal so aus:


<source lang="text">
<source highlight="1-140" lang="text">
# Global parameters
# Global parameters
[global]
[global]
server string      = Schulserver %h
server string      = Schulserver %h
workgroup          = SCHULE
workgroup          = SCHULE
interfaces          = lo  192.168.0.1/255.255.255.0
interfaces          = lo  10.100.0.1/255.255.0.0
bind interfaces only = Yes
bind interfaces only = Yes
hosts allow        = 127. 192.168. 10.
hosts allow        = 127. 10.100.
unix extensions    = yes
unix extensions    = yes
time server        = yes
time server        = yes
Zeile 172: Zeile 250:


logon script        = %a.bat
logon script        = %a.bat
logon path          = \\%L\%U\%a
logon path          = \\%L\profile\%G\%U\%a
logon home          = \\%L\%U\%a
        logon drive        = L:
logon home          = \\%L\profile\%G\%U\%a
domain logons      = yes
domain logons      = yes
domain master      = yes
domain master      = yes
Zeile 183: Zeile 262:
         ldap passwd sync    = yes
         ldap passwd sync    = yes
         pam password change = Yes
         pam password change = Yes
        ldap suffix        = dc=delixs-schule,dc=de
        ldap admin dn      = cn=admin,dc=delixs-schule,dc=de
        ldap group suffix  = ou=delixs,ou=groups
        ldap user suffix    = ou=people,ou=accounts
        ldap machine suffix = ou=machines,ou=accounts
        passwd program      = /usr/sbin/smbldap-passwd %u
        add machine script  = /usr/sbin/smbldap-useradd -w "%u"
        add user script    = /usr/sbin/smbldap-useradd -m -a -A 1 "%u"
        delete user script  = /usr/sbin/smbldap-userdel "%u"
        ldap delete dn      = yes


unix passwd sync    = 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*
         passwd chat        = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully*
   
   
Zeile 219: Zeile 309:
wide links     = no
wide links     = no


[tmp]
[change]
comment     = Datenaustausch
comment     = Datenaustausch
path     = /home/tmp
path     = /home/all
read only     = no
public     = yes
create mode     = 0666
directory mode     = 0777
wide links     = no
 
[groups]
comment     = Gruppen und Projekte
path     = /home/groups
read only     = no
read only     = no
public     = yes
public     = yes
Zeile 230: Zeile 329:
[pub]
[pub]
comment     = Unterrichtsmaterial
comment     = Unterrichtsmaterial
path     = /home/adm
path     = /home/software
write list     = adm, root
write list     = adm, root
public     = yes
public     = yes
wide links     = yes
wide links     = yes
[profile]
        comment            = Windows Profile
        path                = /home/profile
        public              = no
        read only          = no
        browseable          = no
create mode     = 0755
directory mode     = 0775
wide links     = no
        profile acls        = yes
        preserve case      = no
        case sensitive      = no


[intranet]
[intranet]
Zeile 247: Zeile 359:
[fachl]
[fachl]
comment     = Fachlehrer-Zugang
comment     = Fachlehrer-Zugang
path     = /home/schueler
path     = /home/classes
valid users     = @fachl
valid users     = @fachl
guest ok     = no
guest ok     = no
Zeile 256: Zeile 368:
[admins]
[admins]
comment     = Admin-Freigabe
comment     = Admin-Freigabe
path     = /home/schueler
path     = /home/students
valid users     = @admins
valid users     = @admins
guest ok     = no
guest ok     = no
Zeile 267: Zeile 379:
'''Hinweis:''' Eine detaillierte Beschreibung der einzelnen Einstellungen in der Datei smb.conf finden Sie unter [[Entwicklungsumgebung/Samba/Smb.conf]]
'''Hinweis:''' Eine detaillierte Beschreibung der einzelnen Einstellungen in der Datei smb.conf finden Sie unter [[Entwicklungsumgebung/Samba/Smb.conf]]


meine <code>Win95.bat</code>:
Eine zum Einbinden der Netzlaufwerke vorzusehende Startdatei wird dann so aufgebaut - <code>/etc/samba/scripts/Win95.bat</code>:


<source lang="text">
<source highlight="1-7" lang="text">
@echo off
@echo off
net use u: \\serv\homes /yes
net use u: \\alix\homes /yes
net use p: \\serv\pub /yes
net use p: \\alix\pub /yes
net use t: \\serv\tmp /yes
net use r: \\alix\groups /yes
net use v: \\serv\Vorlagen /yes
net use t: \\alix\change /yes
net time \\serv /set /yes
net time \\alix /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 <code>hosts</code>-Datei erstellt mit folgendem Inhalt:
 
<source lang="text">
127.0.0.1      localhost
192.168.0.1    serv.mydomain.local
</source>
</source>
und eine <code>lmhosts</code>-Datei:
<source lang="text">
192.168.0.1    serv
192.168.0.20    privat
</source>
auf dem Server in der <code>/etc/hosts</code>:
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]]




Zeile 337: Zeile 414:
   samba starten
   samba starten
   # Alte SID setzen:
   # Alte SID setzen:
   net setlocalsid S-1-5-21-1594489954-3312520503-1242147674
   net setlocalsid S-1-5-21-1217022432-528198597-2225102744
   smbpasswd -w $(cat /etc/ldap.secret)
   smbpasswd -w $(cat /etc/ldap.secret)


Zeile 343: Zeile 420:


* Gruppen: http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/NetCommand.html
* Gruppen: http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/NetCommand.html
 
* Absichern von SWAT mit SSL: http://gertranssmb3.berlios.de/output/SWAT.html#id2598261




== Weblinks ==
== Weblinks ==


* http://us1.samba.org/samba/docs/man/Samba-Guide/
* http://www.samba.org/samba/docs/man/Samba-Guide/
* http://samba-ldap.de/node/46
* http://samba.org/samba/docs/
* http://samba.org/samba/docs/
* Deutsche Übersetzung: http://gertranssmb3.berlios.de/
* Deutsche Übersetzung: http://gertranssmb3.berlios.de/
Zeile 355: Zeile 433:
----
----
<div align="right">[[Installation:Entwicklungsumgebung|zurück]] | [[Hauptseite]]</div>
<div align="right">[[Installation:Entwicklungsumgebung|zurück]] | [[Hauptseite]]</div>
Harry Jede, Hans-Dietrich Kirmse 2009
[[Kategorie:DebianSqueeze]]

Aktuelle Version vom 28. März 2011, 19:36 Uhr


Diese Seite ist momentan eine Baustelle im Zustand: 1

Wird bearbeitet von: Kirmse
Hilfe zum Bearbeitungsstatus: Hilfe:Status eines Artikels


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


Lassen Sie die Einstellung "NEIN" stehen und fahren mit der Installation fort.


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>

Da in dieser Datei die Passworte im Klartext stehen, wird noch eine Beschränkung der Rechte benötigt:

 chown root:root /etc/smbldap-tools/smbldap_bind.conf
 chmod 600 /etc/smbldap-tools/smbldap_bind.conf

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 for Domain ALIX is: S-1-5-21-1217022432-528198597-2225102744
    # und daraus die neue Zeile generieren
    SID="S-1-5-21-1217022432-528198597-2225102744"
    #
    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 (Teil 1 - Grundkonfiguration)

Ziel

Es sollen für jeden Nutzer die Freigaben "groups", "change" und "software" 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 klassenweise (classes) 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 "change" (Tausch), "software" (Software) und "groups" (Arbeits- und Projektgruppen) werden als Laufwerke t:, p: und r: zur Verfügung gestellt, das Homeverzeichnis als u:, zudem soll beim Abarbeiten der logon.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 Freigaben "admins" und "fachl" einrichten zu können, wird das Homeverzeichnis "/home" durch hinzufügen der Verzeichnisse analog der Gruppennamen strukturiert. Siehe auch Kapitel: Rollen und Berechtigungen der Nutzer

 mkdir /home/administration
 mkdir /home/all  
 mkdir /home/archiv
 mkdir /home/classes
 mkdir /home/exam
 mkdir /home/ftp
 mkdir /home/groups
 mkdir /home/profile
 mkdir /home/profile/administration
 mkdir /home/profile/exam
 mkdir /home/profile/service
 mkdir /home/profile/students
 mkdir /home/profile/teacher
 mkdir /home/profile/wsuser
 mkdir /home/service
 mkdir /home/software
 mkdir /home/students
 mkdir /home/teacher
 mkdir /home/wsuser
 mkdir /home/www


Vor der Erstellung der künftigen Test-Nutzer wurde in der /etc/adduser.conf folgendes geändert:

<source highlight="1-12" 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 spaeter)
# Funktinoniert bei mir so nicht.
# NAME_REGEX="^[a-z][-a-z0-9]*\$?$" 
# Erlaubt sind Namen in Groß- & Kleinschreibung
# Namen beginnen mit einem Buchstaben und dürfen
# ein Dollar Zeichen am Ende haben. Ansonsten sind
# Buchstaben, Zahlen, Binde- & Unterstrich erlaubt.
# Die Regex ist eine "extend Regex", siehe "grep -E"
NAME_REGEX='^alpha:[-_[:alnum:]]*\${0,1}$'

</source>



Jetzt wird noch das Verzeichnis /etc/skel-profile für die Windows-Profile ergänzt:


 mkdir /etc/skel-profile
 mkdir /etc/skel-profile/Win95   (Windows 9x/Me)
 mkdir /etc/skel-profile/WinNT   (Windows NT)
 mkdir /etc/skel-profile/Win2K   (Windows 2000)
 mkdir /etc/skel-profile/Win2K3  (Windows 2003)
 mkdir /etc/skel-profile/WinXP   (Windows XP)
 mkdir /etc/skel-profile/WinXP64 (Windows XP 64bit)
 mkdir /etc/skel-profile/Vista   (Windows Vista)


Danach werden die Verzeichnisse für die logon-Scripts angelegt:


 mkdir /etc/samba/scripts
 mkdir /etc/samba/exec
 mkdir /etc/samba/private


Die vorläufige Datei /etc/samba/smb.conf sieht erst einmal so aus:

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

  1. Global parameters

[global] server string = Schulserver %h workgroup = SCHULE interfaces = lo 10.100.0.1/255.255.0.0 bind interfaces only = Yes hosts allow = 127. 10.100. 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\profile\%G\%U\%a

       logon drive         = L:

logon home = \\%L\profile\%G\%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
       ldap suffix         = dc=delixs-schule,dc=de
       ldap admin dn       = cn=admin,dc=delixs-schule,dc=de
       ldap group suffix   = ou=delixs,ou=groups
       ldap user suffix    = ou=people,ou=accounts
       ldap machine suffix = ou=machines,ou=accounts
       passwd program      = /usr/sbin/smbldap-passwd %u
       add machine script  = /usr/sbin/smbldap-useradd -w "%u"
       add user script     = /usr/sbin/smbldap-useradd -m -a -A 1 "%u"
       delete user script  = /usr/sbin/smbldap-userdel "%u"
       ldap delete dn      = yes


unix passwd sync = yes

       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

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

[groups] comment = Gruppen und Projekte path = /home/groups read only = no public = yes create mode = 0666 directory mode = 0777 wide links = no

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

[profile]

       comment             = Windows Profile
       path                = /home/profile
       public              = no
       read only           = no
       browseable          = no

create mode = 0755 directory mode = 0775 wide links = no

       profile acls        = yes
       preserve case       = no
       case sensitive      = no

[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/classes 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

Eine zum Einbinden der Netzlaufwerke vorzusehende Startdatei wird dann so aufgebaut - /etc/samba/scripts/Win95.bat:

<source highlight="1-7" lang="text"> @echo off net use u: \\alix\homes /yes net use p: \\alix\pub /yes net use r: \\alix\groups /yes net use t: \\alix\change /yes net time \\alix /set /yes </source>


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-1217022432-528198597-2225102744
 smbpasswd -w $(cat /etc/ldap.secret)

Hinweissammlung


Weblinks



zurück | Hauptseite

Harry Jede, Hans-Dietrich Kirmse 2009