Αυτή η ενότητα καλύπτει τη διαδικασία ρύθμισης του 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 δεν είναι απολύτως απαραίτητο, αλλά εκτός αν χρησιμοποιείτε άλλο πακέτο ή προσαρμοσμένα σενάρια, χρειάζεστε μία μέθοδο διαχείρισης χρηστών, ομάδων και λογαριασμών.
Για να μπορέσει το 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 περιγράφεται και στο “Περαιτέρω ρυθμίσεις”.
-
Καταρχάς, δημιουργήστε ένα αρχείο ρυθμίσεων με όνομα
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
-
Στη συνέχεια, δημιουργήστε έναν προσωρινό κατάλογο για την έξοδο:
mkdir /tmp/ldif_output -
Τώρα, χρησιμοποιήστε το slapcat για να μετατρέψετε τα αρχεία σχημάτων:
slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/cn=samba.ldifΑλλάξτε τα ονόματα των αρχείων και διαδρομών αν έχετε χρησιμοποιήσει διαφορετικά.
-
Τροποποιήστε το αρχείο
/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
Οι τιμές των γνωρισμάτων μπορεί να διαφέρουν, εσείς απλά βεβαιωθείτε ότι αφαιρέθηκαν τα συγκεκριμένα γνωρίσματα.
-
Τέλος, χρησιμοποιώντας το 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. Για πληροφορίες σχετικά με μερικές κοινές ρυθμίσεις, δείτε Κεφάλαιο 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.

