(You can read this post in English too.)
Az overlay forrása innen tölthető le, és tudomásom szerint a finn Opinsysnél dolgozó Veli-Matti műve. A használatát a világnak először ez a cikk mutatta be. Na, lássuk a fordítást.
A modul fordításához egy frissen fordított OpenLDAP kell, először ezt csináljuk meg. (A gépünkön nem az általunk fordított OpenLDAP-ot használjuk, hanem a hivatalos csomagból tesszük fel. Az általunk fordított csomag csak az overlay lefordításához kell.)
Elsőként telepítünk mindent, ami a slapd fordításához szükséges:
sudo apt-get build-dep slapdTelepül majd egy heimdal-dev csomag is, amivel a későbbiekben még összeveszünk... Ha ezzel megvagyunk, letöltjük és fordítjuk a forrást. A fordítás gyorsan megvan, a tesztelés viszont iiiiiiiilyen hosszú. (Hosszabb. Bő egy óra, vagy ilyesmi. Nem vicc.)
sudo apt-get -b source slapd
Kelleni fog egy unzip:sudo apt-get install unzipKicsomagolunk:
sudo unzip opinsys-smbkrb5pwd-19e5454.zip -d openldap-2.4.28/contrib/slapd-modules/Odamegyünk, átnevezünk, belemegyünk:
cd openldap-2.4.28/contrib/slapd-modules/ sudo mv opinsys-smbkrb5pwd-19e5454/ smbkrb5passwd cd smbkrb5passwd/A fordítás a make paranncsal történik, de egy pár helyen el fog szállni, mert nincs meg minden, ami kell. Menjünk elébe a problémának:
sudo apt-get install libkrb5-dev libssl-devKözben törlődik a heimdal-dev csomag, amibő pedig szintén kell majd egy fájl. Hogy pontosan mi és hova, az architektúrafüggő: a csomagbab lévő libgssapi.la kell a (64 biten) /usr/lib/x86_64-linux-gnu/libgssapi.la helyre. Először csak letöltjük a csomagot (figyelj a -d kapcsolóra)
sudo apt-get -d install heimdal-dev
Majd kiharapjuk belőle a nekünk kellő fájlt:sudo sh -c "dpkg --fsys-tarfile /var/cache/apt/archives/heimdal-dev_1.6~git20120311.dfsg.1-2_amd64.deb | tar xOf - ./usr/lib/x86_64-linux-gnu/libgssapi.la >/usr/lib/x86_64-linux-gnu/libgssapi.la"Jöhet a fordítás (pár pillanat):
sudo makeÉs helyére tesszük a szép új, csillogó modulunkat:
sudo cp .libs/* /usr/lib/ldap/
Akkor eddig kész. Mielőtt használatba vennénk, próbáljunk ki két dolgot. Az egyik, hogy LDAP-adminként megváltoztatjuk egy felhasználó jelszavát:
ldappasswd -D cn=admin,dc=itthon,dc=cucc -w titok -s ujjelszo uid=suser1,ou=People,dc=itthon,dc=cuccEbből a stats szinten loggoló slapd a /var/log/syslog-ban ennyit mond:
slapd[1287]: conn=1199 fd=24 ACCEPT from PATH=/var/run/slapd/ldapi (PATH=/var/run/slapd/ldapi) conn=1199 op=0 BIND dn="cn=admin,dc=itthon,dc=cucc" method=128 slapd[1287]: conn=1199 op=0 BIND dn="cn=admin,dc=itthon,dc=cucc" mech=SIMPLE ssf=0 slapd[1287]: conn=1199 op=0 RESULT tag=97 err=0 text= slapd[1287]: conn=1199 op=1 EXT oid=1.3.6.1.4.1.4203.1.11.1 slapd[1287]: conn=1199 op=1 PASSMOD id="uid=suser1,ou=People,dc=itthon,dc=cucc" new slapd[1287]: conn=1199 op=1 RESULT oid= err=0 text= slapd[1287]: conn=1199 op=2 UNBIND slapd[1287]: conn=1199 fd=24 closedMost jelentkezzünk be suser1-gyel (és az ujjelszo-val) egy Linux kliensre, és változtassunk jelszót a passwd parancs kiadásával. A szerveren a syslog-ban ennyi van:
slapd[1287]: conn=1207 op=2 BIND dn="uid=suser1,ou=People,dc=itthon,dc=cucc" method=128 slapd[1287]: conn=1207 op=2 BIND dn="uid=suser1,ou=People,dc=itthon,dc=cucc" mech=SIMPLE ssf=0 slapd[1287]: conn=1207 op=2 RESULT tag=97 err=0 text= slapd[1287]: conn=1207 op=3 BIND anonymous mech=implicit ssf=0 slapd[1287]: conn=1207 op=3 BIND dn="" method=128 slapd[1287]: conn=1207 op=3 RESULT tag=97 err=0 text= slapd[1287]: conn=1207 op=4 BIND dn="uid=suser1,ou=People,dc=itthon,dc=cucc" method=128 slapd[1287]: conn=1207 op=4 BIND dn="uid=suser1,ou=People,dc=itthon,dc=cucc" mech=SIMPLE ssf=0 slapd[1287]: conn=1207 op=4 RESULT tag=97 err=0 text= slapd[1287]: conn=1207 op=5 MOD dn="uid=suser1,ou=People,dc=itthon,dc=cucc" slapd[1287]: conn=1207 op=5 MOD attr=userPassword slapd[1287]: conn=1207 op=5 RESULT tag=103 err=0 text= slapd[1287]: conn=1207 op=6 MOD dn="uid=suser1,ou=People,dc=itthon,dc=cucc" slapd[1287]: conn=1207 op=6 MOD attr=shadowLastChange slapd[1287]: conn=1207 op=6 RESULT tag=103 err=0 text= slapd[1287]: conn=1207 op=7 UNBIND slapd[1287]: conn=1207 fd=27 closed slapd[1287]: conn=1206 op=4 UNBIND slapd[1287]: conn=1206 fd=26 closedA két eljárás közül egyik sem változtatja meg sem a sambaNTPassword jellemzőt, sem a Kerberos-jelszót. De az elsőben (vastaggal) van egy fontos dolog. Nem MOD, hanem PASSMOD szerepel, és előtte van egy EXT oid, azaz exop-id, azaz extended operation id. Az első eljárás nem közvetlenül az userPassword jellemző értékét írja át, hanem szól az LDAP-nak, hogy "változtasd meg a jelszót", és ilyenkor az LDAP a jelszóváltoztatáson kívül mást is képes megtenni. Például módosít más jelszavakat is. Ha szólunk neki. És most szólunk, beizzítjuk a jó kis frissen fordított modulunkat.
Készítsük el az smbkrb5pwd_betolt.ldif fájlt:
dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: smbkrb5pwdMajd adjuk hozzá az LDAP-hoz:
sudo ldapmodify -Y EXTERNAL -f smbkrb5pwd_betolt.ldifNézzük meg az eredményt:
sudo ldapsearch -Y EXTERNAL -b cn=module{0},cn=configKészítsük el az smbkrb5pwd_beallit.ldif fáljt (most csak Samba szinkronizálásra használjuk, a dolog a Kerberos-jelszónál egy fokkal bonyolultabb, és lesz még róla poszt):
dn: olcOverlay=smbkrb5pwd,olcDatabase={1}hdb,cn=config objectClass: olcOverlayConfig objectClass: olcSmbKrb5PwdConfig olcOverlay: {1}smbkrb5pwd olcSmbKrb5PwdEnable: samba olcSmbKrb5PwdMustChange: 2592000 olcSmbKrb5PwdRequiredClass: posixAccountMajd adjuk hozzá az LDAP-hoz:
sudo ldapadd -Y EXTERNAL -f smbkrb5pwd_beallit.ldifNézzük meg az eredményt:
sudo ldapsearch -Y EXTERNAL -b olcDatabase={1}hdb,cn=configHa most adjuk ki a fenti ldappaswd parancsot, akkor a syslog nem mutat újat, de az extended operation (exop) megtöténik, és a Samba jelszó is megváltozik. Kész van az userPassword - sambaNTPassword szinkronizáció! Éljen-éljen!
Na de épp az imént láttuk, hogy az exop nem fut le, ha kliensről, a passwd program használatával változtatunk jelszót. A megoldás, hogy a kliensen szerkesztjük az /etc/ldap.conf fájlt.
- Megjegyzéssé alakítjuk a pam_password md5 bejegyzést és
- Kivesszük a megjegyzésből a a pam_password exop bejegyzést.
Azaz a Linuxon megváltoztatott jelszót most már a Windows is tudja.
Kedvenc felhasználónk azonban most nem tud jelszót változtatni Windows-ban. Illetve a jelszó megváltozik, de a Windows hibaüzenetet ad: A felhasználónév vagy jelszó hibás. A jelszavakban a kis- és nagybetűk meg vannak különböztetve. (XP). A jelszó megváltozik ugyan, de ez a hibaüzenet zavaró. Mi ennek az oka?
Gondoljuk át: az smb.conf-ban az ldap passwd sync = yes beállítás miatt a Samba az userPassword-öt is meg akarja változtatni, amitől viszont az LDAP az smbkrb5pwd overlay miatt változtatni akar azon a sambaNTPassword jellemzőn, amit épp maga a Samba is ír.
A megoldás, hogy az ldap passwd sync = yes helyett ldap passwd sync = only kerül az smb.conf-ba, amit egy
sudo service smbd restartkövet.
Hú. De jó.
Irodalom:
http://easierbuntu.blogspot.com/2008/05/using-apt-get-to-compile-from-source.html
http://blogger.ziesemer.com/2011/01/ldap-authentication-for-samba.html
2 megjegyzés:
Gondolkodtam azon, hogy addig is, amíg nem jön ki a Samba4 stabil verziója, használatba venném a Kerberost Samba3-mal. Tudom, hogy létezik Kerberos kliens Windowsra. A kérdésem az volna, hogy e nélkül a kliens nélkül, és Windows AD szerver nélkül működne-e a dolog (Samba3+OpenLdap+Kerberos, Windows kliensekkel)?
Bocsi, nem voltam gépközelben. A válasz pedig az, hogy - ha jól értem a kérdést és neked Kerberos kell Win alól - akkor tudtommal nem. Az én kiépítésemben a Kerberos csak Linux alól fontos, és annyira kevés Win kliensem van, hogy nem igazán törődtem vele.
Megjegyzés küldése