V tomto článku shrnuji kompletní instalaci Samby s LDAPem v NT doméně. Vzorem mi byl dokument SAMBA3-LDAP-PDF Howto, který již není na internetu k nalezení. Dokument není vázán na žádnou distribuci, možná ale narazíte na rozdíly, takže mi prosím napište (kontakt) a já rád zanesu všechny připomínky.
Budou potřeba tyto balíčky:
Je nutné nakonfigurovat několik věcí: Samba schéma (obvykle je defaultně aktivováno), nastavit DN a nakonec zkontrolovat konfiguraci. První úkon je snadný, je třeba nechat načíst schémata core, cosine, inetorgperson, nis a samba. Toto se provede v konfiguraci /etc/openldap/slapd.conf.
Ještě jednou zkontrolujte, zda je includováno Samba schéma příkazem include (distribuce Red Hat inkludují vše, ale například SUSE jen základ). Musí být zavedeny minimálně schémata nis a samba3, naopak nesmí být zaveden modul rfc2307bis (jinak smbldap-populate hází chybu no global superior – v distribucích SUSE tento modul je implicitně zaveden). Nastavení indexů by mělo být:
index objectClass eq index cn pres,sub,eq index sn pres,sub,eq index uid pres,sub,eq index displayName pres,sub,eq index uidNumber eq index gidNumber eq index memberUid eq index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq index default sub
Na stejném místě je třeba také nastavit hodnoty rootdn a nastavit heslo rootpw. K tomuto účelu je nejvhodnější nechat si heslo vygenerovat v SSHA formátu příkazem
# slappasswd -h {SSHA} -s tajne_heslo
Všimněte si mezery na začátku příkazu (tak se řádek obvykle nedostane do historie).
V souboru slapd.access.conf (nebo slapd.acl – případně některé distribuce toto mají přímo v souboru slapd.conf) zkontrolovat, zda je povolen access to attrs=userPassword, SambaLMPassword, sambaNTPassword sám sobě pro zápis a administrátorovi pro zápis.
access to attrs=userpassword,sambaLMPassword,sambaNTPassword
by anonymous auth
by self write
by dn="cn=Manager,dc=firma,dc=cz" write
by * none
access to *
by dn="cn=Manager,dc=firma,dc=cz" write
by users read
by self write
by * read
V tomto souboru také opravte větve LDAPu, v tomto návodu používám Users pro uživatele (někdy bývá nastaveno na People), Computers pro počítače v doméně (bývá někdy Hosts) a Groups pro skupiny (bývá někdy jen Group). Tohoto se držte, vznikají pak nehezké chyby a ztratíte dost času zjišťováním, proč to vlastně nejde.
Nyní můžete spustit LDAP server a nainstalovat si nějaký grafický nástroj pro práci s LDAPem, například program luma.
Na systémech Red Hat je situace snadná, stačí spustit nástroj authconfig a nastavit LDAP (a volby jako je DN, use shadow passwords, use MD5 passwords, use LDAP, server IP).
Na jiných systémech je nutno konfigurovat soubor /etc/pam.d/system-auth (na systémech SUSE je to /etc/pam-d/common-*) a přidat tam následující řádky (ty obsahující „ldap“):
#%PAM-1.0 auth required pam_env.so auth sufficient pam_unix.so likeauth nullok auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account sufficient pam_unix.so account sufficient pam_ldap.so account required pam_deny.so password required pam_cracklib.so retry=3 minlen=2 dcredit=0 ucredit=0 password sufficient pam_unix.so nullok use_authtok md5 shadow password sufficient pam_ldap.so use_authtok password required pam_deny.so session required pam_limits.so session required pam_unix.so session required pam_ldap.so
Po každé akci nezapomeňte restartovat nscd, pokud jej používáte.
Nyní nakonfigurujeme soubor /etc/ldap.conf:
host 127.0.0.1 base dc=firma,dc=cz rootbinddn cn=Manager,dc=firma,dc=cz nss_base_passwd ou=Users,dc=firma,dc=cz?one nss_base_shadow ou=Users,dc=firma,dc=cz?one nss_base_group ou=Groups,dc=firma,dc=cz?one nss_base_hosts ou=Computers,dc=firma,dc=cz?one ssl off pam_password md5
Věnujte zvýšenou pozornost volbám nss_base_, protože někdy tam bývá přednastavena hodnota People místo Users. Již několikrát jsem se napápil, když pak klient hledal ve špatné větvi LDAPu. Musí tam být Users!
Do souboru /etc/ldap.secret napíšeme na jednom řádku heslo pro uživatele Manager, pod kterým se bude autorizivat root. Toto heslo později do LDAPu uložíme, mějte na paměti, že soubor musí mít práva 600 (root:root)!
A nyní musíte nastavit /etc/nsswitch.conf a přidat tam hodnoty pro ldap:
passwd: files compat ldap shadow: files ldap group: files compat ldap
Pro jistotu restartujte nscd a vyzkoušejte, zda NSS funguje:
# getent passwd tberan tberan:x:580:580:Tomas Beran:/home/tberan:/bin/csh
Probíhá v adresáři /etc/samba. Nejprve smb.conf, soubor projděte a upravte dle požadavků:
[global] # jmeno domeny workgroup = MYDOMAIN # jmeno stroje ve win siti netbios name = MYSERVER # mapovani uzivatelu (root=>Administrator) username map = /etc/samba/smbusers # zmena hesla ve LDAPU = zmena v UNIXu unix password sync = Yes # logovani log level = 2 syslog = 0 log file = /var/log/samba/log.%m max log size = 2000 # ponechte, pokud mate na serveru spravny cas time server = Yes # nutne nastaveni domeny domain logons = Yes domain master = Yes os level = 65 preferred master = Yes wins support = yes winbind nested groups = no socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192 logon script = logon.bat logon drive = H: logon home = \\%L\homes logon path = \\%L\profiles\%U # spravna cestina (prepokladam UTF-8 na strane serveru UNIX) mangling method = hash2 Dos charset = 852 Unix charset = UTF-8 # LDAP passdb backend = ldapsam:ldap://127.0.0.1/ ldap admin dn = cn=Manager,dc=firma,dc=cz ldap suffix = dc=firma,dc=cz ldap group suffix = ou=Groups ldap user suffix = ou=Users ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap # cesta k nastroji pro zmenu hesla passwd program = /usr/sbin/smbldap-passwd -u %u # opravte pro svou distribuci passwd chat = "Changing UNIX password for*\nNew password*" %n\n "*Retype new password*" %n\n" # cesty k dalsim nastrojum add user script = /usr/sbin/smbldap-useradd -m "%u" delete user script = /usr/sbin/smbldap-userdel "%u" add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%g" delete group script = /usr/sbin/smbldap-groupdel "%g" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u' dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd # guest uzivatel na UNIXu guest account = nobody # masky pro vytvyreni (je to komplement) #create mask = 0744 #directory mask = 0755 # printers configuration load printers = Yes printing = cups printcap name = cups show add printer wizard = yes [netlogon] path = /home/_samba/netlogon/ browseable = No read only = yes #valid users = %U @"Domain Admins" [profiles] path = /home/_samba/profiles read only = no create mask = 0600 directory mask = 0700 browseable = Yes guest ok = Yes profile acls = yes nt acl support = yes #valid users = %U @"Domain Admins" [printers] comment = Network Printers guest ok = yes printable = yes path = /home/_samba/spool/ browseable = No read only = Yes [print$] path = /home/_samba/printers guest ok = No browseable = Yes read only = Yes valid users = @"Print Operators" write list = @"Print Operators" create mask = 0664 directory mask = 0775 [public] path = /home/_samba/public comment = Public files writable = yes public = yes guest ok = yes guest only = yes browsable = yes [homes] comment = Home Directories browseable = yes writable = yes #vfs objects = vscan-clamav #vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
Poslední dva řádky odkomentujte jen když chcete aktivovat podporu antiviru ClamAV (může výrazně zpomalit výkon serveru). Nyní vytvořte příslušné adresáře v /home/_samba:
%U);Všechny adresáře musejí mít práva nastavena na 777 a adresář profiles dokonce 1777!
mkdir netlogon && chown root:"Domain Admins" netlogon && chmod 775 netlogon mkdir printers && chown root:"Domain Admins" printers && chmod 775 printers mkdir profiles && chown root:"Domain Admins" profiles && chmod 1777 profiles mkdir spool && chmod 777 spool
Zkontrolujte, zda v souboru /etc/samba/smbusers jsou tyto aliasy:
root = administrator admin nobody = guest pcguest smbguest
Do adresáře netlogon můžete umístit logon.bat, ve kterém můžete nadefinovat disky (pozor, soubor musí být CR/LF):
NET USE Q: \\MYSERVER\ISO9001_QA NET TIME \\MYSERVER /SET /YES
Nyní je třeba nastavit heslo pro účet manager, které jsme jsme ukládali výše v textu do souboru slapd.conf (tajne_heslo).
# smbpasswd -w tajne_heslo
Nyní můžete otestovat syntaxi konfigurace:
# testparm Load smb config files from /etc/samba/smb.conf Processing section "[netlogon]" Processing section "[profiles]" Processing section "[printers]" Processing section "[print$]" Processing section "[public]" Processing section "[homes]" Loaded services file OK. Server role: ROLE_DOMAIN_PDC
Nastartujte Sambu a počkejte pár minut, než se pustíte do další práce (to není vtip, fakt si dejte cígo nebo kafe).
Tyto nástroje zpřístupňují LDAP pro balík Samba. Nejprve si zjistíme unikátní SID identifikátor:
# net getlocalsid
Nastavte jej v konfiguračním souboru /etc/smbldap-tools/smbldap.conf do proměnné SID, nastavte také hodnoty sambaDomain, suffix, usersdn, computersdn, groupsdn (pozor abyste nezaměnili People za Users – používejte buď to nebo to). Ještě jednou připomínám, abyste vyplnili správné větve pro uživatele, skupiny a počítače – doporučuji hodnoty Users, Groups a Computers.
V tomto souboru také doporučuji nastavit volbu hash_encrypt na CRYPT, protože některé starší distribuce nezvládají novější SSHA.
Podobně v souboru smbldap_bind.conf nastavte heslo pro účet Manager. Pozor – zde nemůžete použít hashed hesla, pouze cleartext. Výše jsem uváděl tajne_heslo – to je ono.
Nyní vytvoříme struktury v LDAPu skriptem smbldap-populate. Ten vypíše několik hlášek o vytvoření struktur a zeptá se na heslo domain roota. Obvykle nastavuji stejné heslo, jako pro Managera.
# smbldap-populate
Nyní je třeba vytvořit hlavní účty sloužící ke správě. Vytvořte soubor smbldap-dsa.ldif:
dn: ou=DSA,dc=firma,dc=cz objectClass: top objectClass: organizationalUnit ou: DSA description: security accounts for LDAP clients dn: cn=samba,ou=DSA,dc=firma,dc=cz objectclass: organizationalRole objectClass: top objectClass: simpleSecurityObject userPassword: tajne_heslo cn: samba dn: cn=nssldap,ou=DSA,dc=firma,dc=cz objectclass: organizationalRole objectClass: top objectClass: simpleSecurityObject userPassword: tajne_heslo cn: nssldap dn: cn=smbldap-tools,ou=DSA,dc=firma,dc=cz objectclass: organizationalRole objectClass: top objectClass: simpleSecurityObject userPassword: tajne_heslo cn: smbldap-tools
Nyní proveďte (příkaz se zeptá na heslo roota, které jste nastavovali dříve)
# ldapadd -x -h localhost -D "cn=Manager,dc=firma,dc=cz" -f smbldap-dsa.ldif -W
a nastavte těmto účtům vlastní hesla. Pro přehlednost doporučuji pořád jedno a to samé heslo:
# ldappasswd -x -h localhost -D "cn=Manager,dc=firma,dc=cz" \ -s tajne_heslo -W cn=samba,ou=DSA,dc=firma,dc=cz
Je už snadné:
# smbldap-useradd -m user1 # smbldap-passwd user1
Otestujte, zda se můžete do systému přihlásit sshčkem na tohoto uživatele. Pokud nechcete, aby se uživatelé mohli přihlašovat, je nutné nastavit hodnotu loginShell na /bin/false.
Můžete také uživatele migrovat ze standardních unixových souborů passwd a shadow (včetně hesel). V adresáři /usr/share/doc/smbldap-tools najdete skripty pro migraci z passwd/shadow souborů. Užití je snadné, jen snad podotknu, že musíte přidat parametr -a, aby nástroj vytvořil Samba classy. Příklad:
# ./smbldap-migrate-unix-accounts -a -P ./passwd -S ./shadow -v
Má to však jednu nevýhodu, hesla se importují jen pro PAM, hesla do Samby nejsou tímto nástrojem nastavena. Tudíž je nutné pro všechny uživatele nastavit hesla pomocí smbldap-passwd! Stejně tak musíte vytvořit uživatelské adresáře v /home/Users a nastavit jim správná práva.
Můžete například využít tento skript:
USERS=(
user1
user2
atd
)
PASSWORD=test
for USER in "${USERS[@]}"; do
echo "Setting user $USER"
# password
echo -e "qcm\nqcm\n"|smbldap-passwd $USER >/dev/null
# group
smbldap-usermod -g "Domain Users" $USER
# homedir
mkdir /home/Users/$USER 2>/dev/null
chown -R $USER:"Domain Users" /home/Users/$USER
chmod -R 755 /home/Users/$USER
done
Nezapomeňte vždy restartovat Sambu a LDAP, pokud změníte konfiguraci. Pakliže něco zkazíte a potřebujete znovu zinicializovat databázi, vypněte LDAP server a smažte obsah adresáře /var/lib/ldap.
Pokračovat můžete v konfiguraci pošty, antispamu a antiviru.
Diskuze