Diskussion:Entwicklungsumgebung/Samba: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: = Installation von Samba = konzeptionelle Überlegungen wir haben im LDAP einen Baum (Struktur), die nun gefüllt werden soll. Fragt sich: 1. welche Accounts und Gru...)
 
(Anleitung abgearbeitet)
 
(5 dazwischenliegende Versionen von 2 Benutzern 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
Wenn es in Euren Netzen einen IIS gibt, setzt diesen Parameter auf "No"
    eben für einen geordneten Betrieb eines PDCs erwartet werden?
und startet Samba neu  :-)  . Natürlich nur, wenn Ihr msdfs nicht
2. welche Berechtigungen sollen vergeben werden können und wie
benutzt; was sehr wahrscheinlich der Fall ist.
    soll das geschehen?
3. welche Gruppen richten wir wie ein


zu 1.


bei den smbldap-Tools gibt es ein Script, welches genau diese
Kontrolle mit:
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
  testparm -s -v 2>/dev/null|grep 'host msdfs'
in diesem LDIF-File muss noch durch die aktuelle SID des
        host msdfs = Yes
Samba ersetzt werden!


zu 2.
siehe auch dd 16.06.2009


Es sollte in Anlehnung an Arktur4 folgende Gruppen geben:
----


      hadmins (Hauptadmins), cadmins (Co-Admins), tadmins (Teiladmins)
'''Ergänzungen,''' damit unix und SAMBA-Passworte automatisch synchron bleiben:
      Gruppe material, Gruppe fachl (Fachlehrer)


Es sollen folgende Rechte damit verbunden sein:
  cgrep /etc/hosts


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


            #       bei Schülern          #         bei Lehrern
###################
    Gruppe  #                             #
            #   LDAP      | Homeverzeich. #   LDAP      | Homeverzeich.


  ------------------------------------------------------------------------
  cgrep /etc/samba/smb.conf
            #              |              #
    hadmin  # Schreibrecht | Schreibrecht  # Schreibrecht | Schreibrecht
            #              |              #              |
    cadmin  # Schreibrecht | Schreibrecht  #              |
            #              |              #              |
    tadmin  # Schreibrecht |              #              |
            #              |              #              |
    material #              | Schreibrecht  #              |
            #              |              #              |
    fachl    #              | Leserecht    #              |


<pre>
[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/*.{*}/
</pre>


ist aber noch nicht vollständig: es fehlen mir die raumadmins. Oder
Hier steht viel zuviel Zeugs drin, aber so passt es erstmal  :-)
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
  aptitude install tdb-tools
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.
und nachschauen, ob das geänderte admin Passwort eingetragen ist  :-)


1. Systemgruppen (wegen speziellen Accounts):
tdbdump  /var/lib/samba/secrets.tdb


'ws-user'    ('platznutzer')     war 100  =>  1000
<pre>
'teacher'    ('lehrer')           war 101  =>  1001
{
'students'  ('schueler')         war 102  =>  1002
key(16) = "SECRETS/SID/ALIX"
'exam'      ('klausur')         war ???  =>  1003
data(68)  
'machines'  ('arbeitsstationen') war  97  => 1004
= "\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>


2. Delixsgruppen:
Jetzt "schule" nicht mehr "geheim"


'online'                          war 106  =>  1006
--Harry 2009/03/29 in DD
'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. Samba 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
 
        addgroup --gid 1000 ws-user
        addgroup --gid 1001 teacher
        addgroup --gid 1002 students
        addgroup --gid 1003 exam
        addgroup --gid 1004 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
 
 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
leider ging das letzte nicht. Es kam folgende Fehlermeldung:
 
    /usr/sbin/smbldap-useradd: unknown group 1002

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