Diskussion:Entwicklungsumgebung/Samba: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
(Anleitung abgearbeitet)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Installation von Samba =
== Hinweis ==


konzeptionelle Überlegungen
Die default Einstellung "host msdfs = Yes" verursacht auf jedem
Samba-Server ein Speicherproblem, wenn folgendes zutrifft:


wir haben im LDAP einen Baum (Struktur), die nun gefüllt werden soll.
# LDAP-Anbindung
Fragt sich:
# ein MS IIS Server im Netz


1. welche Accounts und Gruppen müssen angelegt werden, weil diese eben für einen geordneten Betrieb eines PDCs erwartet werden?
Wenn es in Euren Netzen einen IIS gibt, setzt diesen Parameter auf "No"
und startet Samba neu  :-)  . Natürlich nur, wenn Ihr msdfs nicht
benutzt; was sehr wahrscheinlich der Fall ist.


2. welche Berechtigungen sollen vergeben werden können und wie soll das geschehen?


3. welche Gruppen richten wir wie ein
Kontrolle mit:


zu 1.
  testparm -s -v 2>/dev/null|grep 'host msdfs'
        host msdfs = Yes


bei den smbldap-Tools gibt es ein Script, welches genau diese
siehe auch dd 16.06.2009
Aufgabe erledigen soll:  smbldap-populate
wir nutzen dieses, um eine "Population" für Samba zu erstellen.
das ist aber nur eine Vorlage, d.h. wir verschieben die damit
angelegten Entries dahin, wo wir es haben wollten.


Daraus wurde eine LDIF-Datei erstellt. Hinweis: die SID
----
in diesem LDIF-File muss noch durch die aktuelle SID des
Samba ersetzt werden!


zu 2.
'''Ergänzungen,''' damit unix und SAMBA-Passworte automatisch synchron bleiben:


Es sollte in Anlehnung an Arktur4 folgende Gruppen geben:
  cgrep /etc/hosts


      hadmins (Hauptadmins), cadmins (Co-Admins), tadmins (Teiladmins)
<pre>
      Gruppe material, Gruppe fachl (Fachlehrer)
127.0.0.1      localhost
10.100.0.1      alix.delixs-schule.de  alix
::1    localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
</pre>


Es sollen folgende Rechte damit verbunden sein:
###################


cgrep /etc/samba/smb.conf


            #       bei Schülern         #         bei Lehrern
<pre>
    Gruppe   #                              #
[global]
            #   LDAP     | Homeverzeich. #    LDAP      | Homeverzeich.
        unix charset = LOCALE
        server string      = Schulserver %h
        workgroup          = SCHULE
        netbios name = alix
        domain logons = Yes
        domain master = Yes
        local master = yes
        preferred master =yes
        interfaces          = eth1 127.0.0.1/8
        bind interfaces only = Yes
        name resolve order = wins bcast host
        security = user
        auth methods = guest, sam
        hosts allow        = 127. 10.
        time server        = yes
        socket options      = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        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
        encrypt passwords  = yes
         ldap suffix         = dc=delixs-schule,dc=de
        ldap admin dn      = cn=admin,dc=delixs-schule,dc=de
        ldap group suffix   = ou=groups
        ldap user suffix   = ou=people,ou=accounts
        ldap machine suffix = ou=machines,ou=accounts
        passwd program     = /usr/sbin/smbldap-passwd %u
        passwd chat        = *Enter\snew\s*\spassword:* %n\n
*Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully*
        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
        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/*.{*}/
</pre>


  ------------------------------------------------------------------------
Hier steht viel zuviel Zeugs drin, aber so passt es erstmal :-)
            #              |              #
    hadmin  # Schreibrecht | Schreibrecht  # Schreibrecht | Schreibrecht
            #              |              #              |
    cadmin  # Schreibrecht | Schreibrecht  #              |
            #              |              #              |
    tadmin  # Schreibrecht |              #              |
            #              |              #              |
    material #              | Schreibrecht  #              |
            #              |              #              |
    fachl    #              | Leserecht    #              |


  aptitude install tdb-tools


ist aber noch nicht vollständig: es fehlen mir die raumadmins. Oder
und nachschauen, ob das geänderte admin Passwort eingetragen ist :-)
formulieren wir es mal anders: das hier sind die Berechtigungen für
User. Es fehlen Berechtigungen für alles was mit Rechnern zu tun hat.


Es müßte die Tabelle noch nach rechts fortgesetzt werden, wobei eben
tdbdump  /var/lib/samba/secrets.tdb
diese Tabelle die linke Spalte für die User darstellt und daneben eben
die für die Maschinen. für die Maschinen gibt es nur 2 Gruppen: die
Raumadmins. die Rechte für die Raumadmins habe ich so vorgeschlagen:
      - Rechnern in die Domäne aufnehmen
      - Rechnern feste IPs vergeben
      - die (Samba-)Logfiles für die Rechner seines Raumes kontrollieren können
Ein Raumadmin hat (sollte) immer nur die Rechte für seine Rechner haben.
Da es durchaus Sinn macht, "einen" Admin zu haben, der über den Raumadmins
steht und Zugriff auf alle Rechner hat, würde ich dieses Recht auch noch
den hadmin geben. Und den hadmin(s) würde ich noch ein Recht einräumen:
Er kann die Berechtigungen für cadmin, tadmin, material und fachl vergeben.


zu 3.
<pre>
{
key(16) = "SECRETS/SID/ALIX"
data(68)
= "\01\04\00\00\00\00\00\05\15\00\00\00\A4\04\86}\19\C5\9F\1A\FE\B8\0Eo\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
}
{
key(18) = "SECRETS/SID/SCHULE"
data(68)
= "\01\04\00\00\00\00\00\05\15\00\00\00\A4\04\86}\19\C5\9F\1A\FE\B8\0Eo\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
}
{
key(52) = "SECRETS/LDAP_BIND_PW/cn=admin,dc=delixs-schule,dc=de"
data(7) = "schule\00"
}
</pre>


1. Systemgruppen (wegen speziellen Accounts):
Jetzt "schule" nicht mehr "geheim"


'ws-user'    ('platznutzer')      war 100  =>  1000
--Harry 2009/03/29 in DD
'teacher'    ('lehrer')          war 101  =>  1001
'students'  ('schueler')        war 102  =>  1002
'exam'      ('klausur')          war ???  =>  1003
'machines'  ('arbeitsstationen') war  97  =>  1004
 
2. Delixsgruppen:
 
'online'                          war 106  =>  1006
'material'                        war 107  =>  1007
'internet'                                =>  1008
'www'                            war  99  =>  1009
'fachl'                                    =>  1010
'tadmin'                              ---  =>  1011
'cadmin'  (war 'admins')        war 105  =>  1012
'hadmin'                              ---  =>  1013
 
 
3. Systemgruppen (wegen Groupmapping) siehe bei Population erzeugen (Punkt 8)
 
Angedacht war, dass die UIDs für die machinen von 1000 bis 1999 gehen.
Die UIDs für die 'people' sollten ab 2000 (bis 30000) gehen. Da ich
das (derzeit) über die smbldap-Tools noch nicht steuern kann, werden die
UIDs für User und Maschinen einfach "automatisch" vergeben - also gemischt.
 
= eigentliche Installation von Samba =
 
(streng nach Wiki)
 
1. Pakete einspielen
 
    aptitude install samba samba-common smbclient swat
    aptitude install libpam-smbpass smbldap-tools smbfs smb-nat samba-doc
 
    ---|Samba Server|---
 
    Arbeitsgruppe/Domainname
 
      SCHULE
 
 
    ---|Samba Server|---
 
    soll die smb.conf abgeändert werden, dass per DHCP angebotene WINS-Einstellungen
    verwendet werden?
 
      nein
 
 
2. Sambaschema bereitstellen
 
      cd /usr/share/doc/samba-doc/examples/LDAP
      gunzip samba.schema.gz
      cp samba.schema /etc/ldap/schema/
 
  und in die smb.conf einfügen (hiner den anderen include-Zeilen
 
      include /etc/ldap/schema/samba.schema
 
 
3. LDAP neu starten
 
    /etc/init.d/slapd restart
 
 
4. ldap-tools bereitstellen
 
    wurden ja schon bei Samba installiert und werden nach Anleitung im Wiki bereitgestellt:
 
  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
 
 
5. Konfiguration der smbldap-Tools:
 
 
    /etc/smbldap-tools/smbldap_bind.conf                        (Datei im Paket)
 
    slaveDN="cn=admin,dc=delixs-schule,dc=de"
    slavePw="geheim"
    masterDN="cn=admin,dc=delixs-schule,dc=de"
    masterPw="geheim"
 
 
    /etc/smbldap-tools/smbldap.conf                              (Datei im Paket)
 
  mit net getlocalsid >> /etc/smbldap-tools/smbldap.conf
  dann verschieben z.B. mit den MC
 
    SID="S-1-5-21-3733721172-1526293526-4229837797"
    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"
 
 
6. wir ändern die UID und GID von sysadm
 
    direkt in der shadow und der passwd  UID und GID auf 0 setzen (mit dem mcedit)
 
 
7. die Hauptgruppen anlegen
 
    diese legen wir in der /etc/groups an
 
          smbldap-groupadd -g 1000 -a ws-user
          smbldap-groupadd -g 1001 -a teacher
          smbldap-groupadd -g 1002 -a students
          smbldap-groupadd -g 1003 -a exam
          smbldap-groupadd -g 1004 -a machines
 
 
 
 
8. Population im LDAP erzeugen
 
    es wurde direkt mit smbldap-populate der LDAP gefüllt. Die Einträge haben
    gleich die richtige SID (wegen smbldap.conf). Es wurden folgende Einträge
    im LDAP angelegt. Offensichtlich alles fürs Funktionieren von Samba
    notwendige Einträge.
 
      ou=Idmap,dc=delixs-schule,dc=de
      uid=root,ou=people,ou=accounts,dc=delixs-schule,dc=de
      uid=nobody,ou=people,ou=accounts,dc=delixs-schule,dc=de
      cn=Domain Admins,ou=groups,dc=delixs-schule,dc=de
      cn=Domain Users,ou=groups,dc=delixs-schule,dc=de
      cn=Domain Guests,ou=groups,dc=delixs-schule,dc=de
      cn=Domain Computers,ou=groups,dc=delixs-schule,dc=de
      cn=Administrators,ou=groups,dc=delixs-schule,dc=de
      cn=Account Operators,ou=groups,dc=delixs-schule,dc=de
      cn=Print Operators,ou=groups,dc=delixs-schule,dc=de
      cn=Backup Operators,ou=groups,dc=delixs-schule,dc=de
      cn=Replicators,ou=groups,dc=delixs-schule,dc=de
      sambaDomainName=SCHULE,dc=delixs-schule,dc=de
 
9. die Delixs-Gruppen im LDAP anlegen
 
    Dazu verwenden wir das LDIF-File delixsgroups.ldif                (Datei im Paket)
 
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!    dieses LDIF-File *muss* erst bearbeitet werden      !!!
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
    und zwar muss die SID von Samba hier eingefügt werden (8x !!!), dazu
    - die SID anhängen mit
 
        'net getlocalsid  >> delixsgroups.ldif'
 
    - z.B. mit dem MC dann mit suchen und ersetzen die alte SID durch die neue SID
      *überall* eintragen.
 
    dieses bearbeitete LDIF-File in den LDAP einfügen mit
 
      ldapadd -x -D cn=admin,dc=delixs-schule,dc=de -W -f /root/delixsgroups.ldif
 
 
10. smb.conf erstellen
 
    die folgende 'smb.conf' habe ich "zusammenkopiert". testparm meckert nicht.
    die Pfade für die smbldaptools habe ich überprüft, die übernommenen Parameter
    scheinen mir sinnvoll.
 
    meine 'smb.conf': http://www.arktur.th.schule.de/smb.conf          (Datei im Paket)
 
 
 
11. Sambapasswort setzen
 
    als root aufrufen  (es muss das LDAP-root-Passwort sein - bei mir 'geheim')
 
      smbpasswd -w geheim
 
 
12. Konfiguration neu einlesen
 
      /etc/init.d/samba restart
 
 
13. Test
 
    Aufruf von "smbclient -L alix -N"  brachte:
 
Anonymous login successful
Domain=[SCHULE] OS=[Unix] Server=[Samba 3.2.5]
 
    Sharename      Type      Comment
    ---------      ----      -------
    netlogon        Disk      Anmeldeverzeichnis
    tmp            Disk      Datenaustausch
    pub            Disk      Unterrichtsmaterial
    intranet        Disk      Intranet-Seiten
    fachl          Disk      Fachlehrer-Zugang
    admins          Disk      Admin-Freigabe
    IPC$            IPC      IPC Service (Schulserver alix)
Anonymous login successful
Domain=[SCHULE] OS=[Unix] Server=[Samba 3.2.5]
 
    Server              Comment
    ---------            -------
    ALIX                Schulserver alix
 
    Workgroup            Master
    ---------            -------
    SCHULE              ALIX
 
 
 
14. User anlegen
 
  smbldap-useradd -a -A 1 -g 1002 -n -c 'Manfred Mustermann,5a' -d /home/students/mmustermann -m  mmustermann

Aktuelle Version vom 10. Juli 2009, 17:15 Uhr

Hinweis

Die default Einstellung "host msdfs = Yes" verursacht auf jedem Samba-Server ein Speicherproblem, wenn folgendes zutrifft:

  1. LDAP-Anbindung
  2. ein MS IIS Server im Netz

Wenn es in Euren Netzen einen IIS gibt, setzt diesen Parameter auf "No" und startet Samba neu  :-) . Natürlich nur, wenn Ihr msdfs nicht benutzt; was sehr wahrscheinlich der Fall ist.


Kontrolle mit:

 testparm -s -v 2>/dev/null|grep 'host msdfs'
       host msdfs = Yes

siehe auch dd 16.06.2009


Ergänzungen, damit unix und SAMBA-Passworte automatisch synchron bleiben:

 cgrep /etc/hosts
127.0.0.1       localhost
10.100.0.1      alix.delixs-schule.de   alix
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
cgrep /etc/samba/smb.conf
[global]
        unix charset = LOCALE
        server string       = Schulserver %h
        workgroup           = SCHULE
        netbios name = alix
        domain logons = Yes
        domain master = Yes
        local master = yes
        preferred master =yes
        interfaces          = eth1 127.0.0.1/8
        bind interfaces only = Yes
        name resolve order = wins bcast host
        security = user
        auth methods = guest, sam
        hosts allow         = 127. 10.
        time server         = yes
        socket options      = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        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
        encrypt passwords   = yes
         ldap suffix         = dc=delixs-schule,dc=de
         ldap admin dn       = cn=admin,dc=delixs-schule,dc=de
         ldap group suffix   = ou=groups
         ldap user suffix    = ou=people,ou=accounts
         ldap machine suffix = ou=machines,ou=accounts
         passwd program      = /usr/sbin/smbldap-passwd %u
         passwd chat         = *Enter\snew\s*\spassword:* %n\n 
*Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully*
         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
        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/*.{*}/

Hier steht viel zuviel Zeugs drin, aber so passt es erstmal  :-)

 aptitude install tdb-tools

und nachschauen, ob das geänderte admin Passwort eingetragen ist  :-)

tdbdump  /var/lib/samba/secrets.tdb
{
key(16) = "SECRETS/SID/ALIX"
data(68) 
= "\01\04\00\00\00\00\00\05\15\00\00\00\A4\04\86}\19\C5\9F\1A\FE\B8\0Eo\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
}
{
key(18) = "SECRETS/SID/SCHULE"
data(68) 
= "\01\04\00\00\00\00\00\05\15\00\00\00\A4\04\86}\19\C5\9F\1A\FE\B8\0Eo\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
}
{
key(52) = "SECRETS/LDAP_BIND_PW/cn=admin,dc=delixs-schule,dc=de"
data(7) = "schule\00"
}

Jetzt "schule" nicht mehr "geheim"

--Harry 2009/03/29 in DD