Samba και LDAP

Αυτή η ενότητα καλύπτει τη διαδικασία ρύθμισης του Samba ώστε να χρησιμοποιεί το LDAP για πληροφορίες λογαριασμού και πιστοποίηση χρηστών, ομάδων και μηχανημάτων. Υποθέτουμε ότι έχετε ήδη εγκαταστήσει έναν λειτουργικό κατάλογο OpenLDAP και ότι ο εξυπηρετητής έχει ρυθμιστεί ώστε να τον χρησιμοποιεί για πιστοποίηση. Δείτε τα “Εξυπηρετητής OpenLDAP” και “Πιστοποίηση LDAP” για λεπτομέρειες όσον αφορά την εγκατάσταση του OpenLDAP. Για περισσότερες πληροφορίες σχετικά με την εγκατάσταση και τη ρύθμιση του Samba δείτε το Κεφάλαιο 17, Δικτύωση των Windows.

Εγκατάσταση

Τρία πακέτα χρειάζονται για το συνδυασμό Samba και LDAP, τα samba, samba-doc και smbldap-tools. Για να τα εγκαταστήσετε, εισάγετε τα παρακάτω από το τερματικό:

sudo apt-get install samba samba-doc smbldap-tools

Υπό την αυστηρή έννοια, το πακέτο smbldap-tools δεν είναι απολύτως απαραίτητο, αλλά εκτός αν χρησιμοποιείτε άλλο πακέτο ή προσαρμοσμένα σενάρια, χρειάζεστε μία μέθοδο διαχείρισης χρηστών, ομάδων και λογαριασμών.

Ρύθμιση του OpenLDAP

Για να μπορέσει το Samba να χρησιμοποιήσει το OpenLDAP ως σύστημα υποστήριξης (backend) του passdb, τα αντικείμενα χρηστών του καταλόγου θα χρειαστούν ορισμένα επιπλέον γνωρίσματα. Στην ενότητα αυτή υποθέτουμε ότι επιθυμείτε να ρυθμίσετε το Samba ως ελεγκτή τομέα Windows NT και, άρα, προσθέτουμε τα απαιτούμενα αντικείμενα και γνωρίσματα LDAP.

  • Τα γνωρίσματα του Samba καθορίζονται στο αρχείο samba.schema, που ανήκει στο πακέτο samba-doc. Το αρχείο σχήματος πρέπει να αποσυμπιεστεί και να αντιγραφεί στο /etc/ldap/schema. Από το τερματικό, δίνετε:

    sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
    sudo gzip -d /etc/ldap/schema/samba.schema.gz
    
  • Το σχήμα του samba πρέπει να προστεθεί στο δέντρο του cn=config. Η διαδικασία προσθήκης νέου σχήματος στο slapd περιγράφεται και στο “Περαιτέρω ρυθμίσεις”.

    1. Καταρχάς, δημιουργήστε ένα αρχείο ρυθμίσεων με όνομα schema_convert.conf, ή κάτι εξίσου περιγραφικό, που θα περιέχει τις ακόλουθες γραμμές:

      include /etc/ldap/schema/core.schema
      include /etc/ldap/schema/collective.schema
      include /etc/ldap/schema/corba.schema
      include /etc/ldap/schema/cosine.schema
      include /etc/ldap/schema/duaconf.schema
      include /etc/ldap/schema/dyngroup.schema
      include /etc/ldap/schema/inetorgperson.schema
      include /etc/ldap/schema/java.schema
      include /etc/ldap/schema/misc.schema
      include /etc/ldap/schema/nis.schema
      include /etc/ldap/schema/openldap.schema
      include /etc/ldap/schema/ppolicy.schema
      include /etc/ldap/schema/samba.schema
      
    2. Στη συνέχεια, δημιουργήστε έναν προσωρινό κατάλογο για την έξοδο:

      mkdir /tmp/ldif_output
      
    3. Τώρα, χρησιμοποιήστε το slapcat για να μετατρέψετε τα αρχεία σχημάτων:

      slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/cn=samba.ldif
      

      Αλλάξτε τα ονόματα των αρχείων και διαδρομών αν έχετε χρησιμοποιήσει διαφορετικά.

    4. Τροποποιήστε το αρχείο /tmp/cn\=samba.ldif που προκύπτει, αλλάζοντας τα ακόλουθα γνωρίσματα:

      dn: cn=samba,cn=schema,cn=config
      ...
      cn: samba
      

      Και αφαιρέστε τις ακόλουθες γραμμές από το τέλος του αρχείου:

      structuralObjectClass: olcSchemaConfig
      entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
      creatorsName: cn=config
      createTimestamp: 20080827045234Z
      entryCSN: 20080827045234.341425Z#000000#000#000000
      modifiersName: cn=config
      modifyTimestamp: 20080827045234Z
      
      [Σημείωση]

      Οι τιμές των γνωρισμάτων μπορεί να διαφέρουν, εσείς απλά βεβαιωθείτε ότι αφαιρέθηκαν τα συγκεκριμένα γνωρίσματα.

    5. Τέλος, χρησιμοποιώντας το ldapadd, προσθέστε το νέο σχήμα στον κατάλογο:

      ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=samba.ldif
      

    Τώρα θα πρέπει να έχετε μία εγγραφή dn: cn={X}misc,cn=schema,cn=config, όπου "X" είναι το επόμενο σχήμα της ακολουθίας, στο δέντρο του cn=config.

  • Αντιγράψτε και επικολλήστε τα ακόλουθα σε αρχείο με όνομα samba_indexes.ldif:

    dn: olcDatabase={1}hdb,cn=config
    changetype: modify
    add: olcDbIndex
    olcDbIndex: uidNumber eq
    olcDbIndex: gidNumber eq
    olcDbIndex: loginShell eq
    olcDbIndex: uid eq,pres,sub
    olcDbIndex: memberUid eq,pres,sub
    olcDbIndex: uniqueMember eq,pres
    olcDbIndex: sambaSID eq
    olcDbIndex: sambaPrimaryGroupSID eq
    olcDbIndex: sambaGroupType eq
    olcDbIndex: sambaSIDList eq
    olcDbIndex: sambaDomainName eq
    olcDbIndex: default sub
    

    Χρησιμοποιώντας το εργαλείο ldapmodify, φορτώστε τα νέα ευρετήρια:

    ldapmodify -x -D cn=admin,cn=config -W -f samba_indexes.ldif
    

    Αν όλα πήγαν καλά, θα μπορείτε να δείτε τα νέα ευρετήρια μέσω του ldapsearch:

    ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb
    
  • Στη συνέχεια, ρυθμίστε το πακέτο smbldap-tools ανάλογα με το περιβάλλον σας. Το πακέτο περιλαμβάνει ένα σενάριο ρύθμισης που θα σας κάνει ορισμένες ερωτήσεις σχετικά με τις απαιτούμενες επιλογές. Για να το εκτελέσετε, δίνετε:

    sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
    sudo perl /usr/share/doc/smbldap-tools/configure.pl
    

    Αφού απαντήσετε στις ερωτήσεις, θα πρέπει να έχουν δημιουργηθεί τα αρχεία /etc/smbldap-tools/smbldap.conf και /etc/smbldap-tools/smbldap_bind.conf. Αυτά τα αρχεία δημιουργούνται από το σενάριο ρύθμισης, οπότε αν κάνατε λάθη κατά την εκτέλεση του σεναρίου, ίσως θα ήταν ευκολότερο να τα διορθώσετε από τα αρχεία αυτά.

  • Το σενάριο smbldap-populate προσθέτει τους απαιτούμενους για το Samba χρήστες, ομάδες και αντικείμενα LDAP. Καλό είναι να δημιουργήσετε ένα αντίγραφο ασφαλείας του αρχείου LDIF (LDAP Data Interchange Format) με το slapcat πριν εκτελέσετε την παραπάνω εντολή:

    sudo slapcat -l backup.ldif
    
  • Αφού δημιουργήσετε το αντίγραφο ασφαλείας, εκτελέστε το smbldap-populate, δίνοντας:

    sudo smbldap-populate
    
    [Σημείωση]

    Μπορείτε να δημιουργήσετε ένα αρχείο LDIF που θα περιέχει τα νέα αντικείμενα Samba, εκτελώντας sudo smbldap-populate -e samba.ldif. Έτσι, μπορείτε να επιθεωρήσετε τις αλλαγές σας για να διαπιστώσετε αν όλα είναι σωστά.

Τώρα, ο κατάλογος LDAP σας διαθέτει τις απαραίτητες πληροφορίες τομέα για να πιστοποιεί τους χρήστες Samba.

Ρύθμιση Samba

Υπάρχουν διάφοροι τρόποι ρύθμισης του Samba. Για πληροφορίες σχετικά με μερικές κοινές ρυθμίσεις, δείτε Κεφάλαιο 17, Δικτύωση των Windows. Για να ρυθμίσετε το Samba ώστε να χρησιμοποιεί το LDAP, επεξεργαστείτε το κύριο αρχείο ρυθμίσεων του Samba, το /etc/samba/smb.conf, απενεργοποιώντας με σχόλιο την επιλογή passdb backend και προσθέτοντας τα ακόλουθα:

#   passdb backend = tdbsam

# Ρυθμίσεις LDAP
   passdb backend = ldapsam:ldap://hostname
   ldap suffix = dc=example,dc=com
   ldap user suffix = ou=People
   ldap group suffix = ou=Groups
   ldap machine suffix = ou=Computers
   ldap idmap suffix = ou=Idmap
   ldap admin dn = cn=admin,dc=example,dc=com
   ldap ssl = start tls
   ldap passwd sync = yes
...
   add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"

Επανεκκινήστε το samba για να ενεργοποιήσετε τις νέες ρυθμίσεις:

sudo restart smbd
sudo restart nmbd

Τώρα, το Samba θα πρέπει να ενημερωθεί για τον κωδικό διαχειριστή του LDAP. Από το τερματικό, δίνετε:

sudo smbpasswd -w secret
[Σημείωση]

Αντικαταστήστε το secret με τον κωδικό διαχειριστή του LDAP.

Αν διαθέτετε χρήστες στο LDAP, και θέλετε να κάνουν πιστοποίηση μέσω Samba, θα πρέπει να οριστούν ορισμένα γνωρίσματα του Samba στο αρχείο samba.schema. Προσθέστε τα γνωρίσματα του Samba στους υπάρχοντες χρήστες χρησιμοποιώντας το smbpasswd, όπου αντικαθιστάτε το username με ένα υπάρχον όνομα χρήστη:

sudo smbpasswd -a username

Στη συνέχεια, θα σας ζητηθεί ο κωδικός του χρήστη.

Για να προσθέσετε νέους λογαριασμούς χρηστών, ομάδων και μηχανημάτων, χρησιμοποιήστε τα εργαλεία του πακέτου smbldap-tools. Παρακάτω βλέπετε ορισμένα παραδείγματα:

  • Για να προσθέσετε νέο χρήστη με γνωρίσματα Samba στο LDAP, εισάγετε τα ακόλουθα, αντικαθιστώντας το username με το πραγματικό όνομα χρήστη:

    sudo smbldap-useradd -a -P username
    

    Η επιλογή -a προσθέτει τα γνωρίσματα του Samba, ενώ οι επιλογή -P καλεί το εργαλείο smbldap-passwd αφού δημιουργηθεί ο χρήστης, για να μπορέσετε να εισάγετε τον κωδικό του.

  • Για να αφαιρέσετε έναν χρήστη από τον κατάλογο εισάγετε:

    sudo smbldap-userdel username
    

    Το εργαλείο smbldap-userdel διαθέτει και μία επιλογή -r που αφαιρεί τον προσωπικό κατάλογο του χρήστη.

  • Χρησιμοποιήστε το smbldap-groupadd για να προσθέσετε μία ομάδα, αντικαθιστώντας το groupname με το κατάλληλο όνομα ομάδας:

    sudo smbldap-groupadd -a groupname
    

    Όπως και στο smbldap-useradd, η επιλογή -a προσθέτει τα γνωρίσματα του Samba.

  • Για να προσθέσετε έναν χρήστη σε ομάδα, χρησιμοποιήστε το smbldap-groupmod:

    sudo smbldap-groupmod -m username groupname
    

    Θυμηθείτε να αντικαταστήσετε το username με το πραγματικό όνομα χρήστη. Επίσης, χρησιμοποιώντας την επιλογή -m, μπορείτε να προσθέσετε πολλαπλούς χρήστες μαζί, παραθέτοντάς τους στη σειρά, χωρισμένους με κόμματα.

  • Το smbldap-groupmod μπορεί να χρησιμοποιηθεί και για την αφαίρεση ενός χρήστη από ομάδα:

    sudo smbldap-groupmod -x username groupname
    
  • Επιπλέον, το smbldap-useradd μπορεί να προσθέσει λογαριασμούς μηχανημάτων Samba:

    sudo smbldap-useradd -t 0 -w username
    

    Αντικαταστήστε το username με το όνομα του σταθμού εργασίας. Η επιλογή -t 0 δημιουργεί το λογαριασμό του μηχανήματος χωρίς καθυστέρηση, ενώ η επιλογή -w ορίζει τον χρήστη ως λογαριασμό μηχανήματος. Επίσης, προσέξτε ότι η επιλογή add machine script του /etc/samba/smb.conf αλλάζει, και χρησιμοποιεί το smbldap-useradd.

Το πακέτο smbldap-tools περιλαμβάνει και άλλα χρήσιμα εργαλεία και επιλογές. Οι σελίδες τεκμηρίωσης (man) κάθε εργαλείου περιέχουν περισσότερες λεπτομέρειες.

Πόροι

  • Στο Samba HOWTO Collection υπάρχουν πολλά σημεία με τεκμηρίωση για το συνδυασμό LDAP και Samba.

  • Συγκεκριμένα, δείτε την ενότητα για το passdb.

  • Άλλος ένας καλός ιστότοπος είναι το Samba OpenLDAP HOWTO.

  • Και πάλι, για περισσότερες πληροφορίες σχετικά με το smbldap-tools, δείτε τις αντίστοιχες σελίδες τεκμηρίωσης (man): man smbldap-useradd, man smbldap-groupadd, man smbldap-populate, κτλ.

  • Also, there is a list of Ubuntu wiki articles with more information.