Keďže tento další diel vychádza po dosť dlhej prestávke od poslednej časti, za čo sa ospravedlňujem, rozhodol som sa pridať do článku začlenenie Samba servera do AD domény. Zmenil som aj distribúciu, z Gentoo som prešiel na Arch, takže niektoré veci ako cesty k súborom a pod. sa môžu líšiť.
Konfigurácia smb.conf
Konfiguračný súbor pre Sambu sa nachádza globálne v adresári /etc. Tento súbor je rozdelený do sekcií uzavretých v hranatých zátvorkách []. Komentáre sa začínajú znakom #, prípadne ;.
Jednoduché nazdieľanie adresárov (/etc/samba/smb.conf)
[global] workgroup = WORKGROUP server string = Hole Samba Server :P security = share hosts allow = 192.168.1. 192.168.2. 127. 192.167.2. >> povolené počítače load printers = yes >> načítanie ovládačov tlačiarne only guest = yes >> globálne sú povolení hostia log file = /var/log/samba/%m.log >> umiestnenie log súboru, %m zabezpečí samostatný súbor pre každý počítač, ktorý sa na vás pripojí max log size = 2500 >> veľkosť log súboru udaná v KB [homes] comment = Homes browseable = yes writable = no [films] public = yes >> synonymum pre voľbu "guest ok", zabezpečí prezeranie adr. bez hesla create mask = 0766 >> nastavenie masky writable = no >> zápis do adresára je zakázaný path = /home/dr34m/films >> cesta k adresáru [music] public = yes create mask = 0766 writable = no path = /home/dr34m/music
Tento príklad je na ukážku jednoduchého nazdieľania adresárov, ktoré sa dá takisto nastaviť grafickým klikátkom v oboch najznámenjších prostrediach KDE aj Gnome, no tým sa tu zaoberať nebudem. Tiež opis všetkých nastavení by bol na príliš dlhý článok :). Doporučujem si preto prejsť manuálovú stránku smb.conf, kde by ste sa po podrobnom prebádani mali dopracovať k tomu, čo potrebujete.
Arch Linux ako člen Active Directory
Čo tým získame?
- Užívatelia Windows AD a užívatelia Archu budú rovnako akceptovaný serverom
- Užívatelia Windows AD budú môcť používať Samba shares rovnako ako Windows shares
Požiadavky
- Windows Active Directory
- Byť Windows administrátor
- Mať root oprávnenia
Jediná vec, ktorú je potrebné na Windowse nastaviť je zakázať Digital Sign Communication (Always) v skupinovej politike AD.
Inštalácia
Na Archu potrebujeme mať nainštalované nasledujúce balíky:
- samba
- heimdal
- ntp
- pam_krb5.so
Prvé tri si nainštalujeme jednoducho príkazom:
pacman -S samba ntp heimdal
Knižnicu pam_krb5 je potrebné doinštalovať ručne alebo z AUR (Arch User Repository). Nájdete ju na stránke http://www.css-security.com/. Stačí ju niekam rozbaliť a z daného adresára vykonať ako root príkaz:
./install.sh
Následne sa knižnica nainštaluje do adresára /lib/security/cssi/.
Konfigurácia
Je nutné skontrolovať súbor /etc/hosts. Ak máte dual-boot systém je potrebné mať nastavený rozdielny hostname a netbios name na linuxe.
V tomto príklade vyzerá /etc/hosts nasledovne:
127.0.0.1 MASINA.EXAMPLE.COM MASINA 192.167.2.50 ADAM.EXAMPLE.COM ADA 192.167.2.51 EVA.EXAMPLE.COM EVA
Štart Samby a Winbindd
V Archu je Samba a winbind implementovaná ako jediný skript /etc/rc.d/samba. Jeho nastavenie sa nachádza v /etc/conf.d/samba, kde by ste mali mať nasledovný riadok:
SAMBA_DAEMONS=(smbd nmbd winbindd)
Nastavenie Heimdal / Kerberos (/etc/krb5.conf)
Predpokladáme, že AD doména je example.com. Další predpoklad je, že AD doména je spravovaná dvoma doménovými kontrolermi, primárnym a sekundárnym, z ktorých prvý je adam (adam.example.com) a druhý eva (eva.example.com). IP adresy majú 192.167.2.50 (adam) a 192.167.2.51 (eva).
/etc/krb5.conf
[libdefaults] default_realm = EXAMPLE.COM clockskew = 300 ticket_lifetime = 1d [realms] EXAMPLE.COM = { kdc = 192.167.2.50 kdc = 192.167.2.51 default_domain = EXAMPLE.COM } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM example = EXAMPLE.COM [appdefaults] pam = { ticket_lifetime = 1d renew_lifetime = 1d forwardable = true proxiable = false retain_after_close = false minimum_uid = 0 debug = false } [logging] default = SYSLOG:NOTICE:DAEMON kdc = FILE:/var/log/kdc.log
O jednotlivých nastaveniach sa znova dočítate v manuálovej stránke krb5.conf ;).
Vo vnútri AD je dôležité, aby všetky počítače mali nastavený rovnaký systémový čas. Synchronizáciu uskutočníme príkazom:
/usr/bin/ntpdate adam.example.com
Teraz si môžeme vyžiadať query na tiket od doménového kontrolera AD nasl. príkazom (kapitálky sú dôležité!) :
# kinit ADMINISTRATOR@EXAMPLE.COM
Následne budete požiadaný zadať heslo.
Konfigurácia PAM
Na tomto mieste musíme zmeniť /etc/pam.d/login, aby nám posielalo requesty k AD kontrolerom. PAM si najprv kontroluje AD účty a ak žiaden nenájde kontroluje účty lokálne. Zahrnieme preto do autentifikačného procesu knižnicu pam_winbindd.so. Ešte pridáme pam_mkhomedir.so, čo nám zabezpečí automatické vytvorenie adresára /home/example/uzivatel, pri prihlásení sa AD užívateľa.
Príklad /etc/pam.d/login
#%PAM-1.0 auth sufficient pam_unix2.so auth required pam_winbind.so use_first_pass use_authtok auth required pam_securetty.so auth required pam_nologin.so auth required pam_mail.so account sufficient pam_unix2.so account sufficient pam_winbind.so use_first_pass use_authtok password required pam_pwcheck.so password sufficient pam_unix2.so password sufficient pam_winbind.so use_first_pass use_authtok session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 session sufficient pam_unix2.so session sufficient pam_winbind.so use_first_pass use_authtok session required pam_limits.so
Konfigurácia Samby
Jeden z viacerých možných konfigurácií smb.conf:
[global] netbios name = hole workgroup = EXAMPLE realm = EXAMPLE server string = hole linux map to guest = Bad User idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes winbind gid = 10000-20000 winbind use default domain = Yes winbind separator =+ os level = 20 # Defaultný shell, kvôli tomu, že užívatelia AD nemajú nastavený žiaden template shell = /bin/bash encrypt passwords = yes security = ads password server = adam.example.com preferred master = no dns proxy = no wins server = eve.example.com wins proxy = no admin users = @"NET+domain admins" force group = "EXAMPLE+domain admins" inherit acls = Yes map acl inherit = Yes acl group control = yes load printers = no debug level = 3 use sendfile = no [homes] comment = Homes path =/home/%U valid users = %S NET+%S browseable = no read only = no [data] comment = Data valid users = %S net+%S path = /data read only = no browseable = yes [Back-up] comment = Backup filer path = /backup read only = no browseable = yes valid users = @"NET+Domain Admins"
Je na mieste spomenúť, že Samba používa databázu PDC pre autentifikačné požiadavky. K tomuto účelu slúži winbindd, ktorý je súčasťou balíku Samby. Winbind mapuje UID a GID našej AD pre linuxový stroj. Využíva volania RPC, PAM a tiež Name Service Switch (NSS), čím povoľuje Windows AD, užívateľský prístup a udeľuje im oprávnenia na linuxovom stroji. Dobrá vec na winbindd je to, že nemusíme definovať mapovanie samého seba, stačí mu vyčleniť rozsah UID a GID, tak ako sme to urobili v našom smb.conf. V tomto kroku si zahrnieme Winbindd do NSS volaní, aby nám všetko fungovalo tak ako má.
/etc/nsswitch.conf
passwd: files winbind shadow: files winbind group: files winbind
Štart a testovanie služieb
Ako prvé si naštartujeme Sambu, no predtým je vhodné spustiť príkaz testparm pod rootom, aby nám skontroloval nastavenie smb.conf:
/etc/rc.d/samba start
Skontrolujeme si aj to, či je winbind schopný vykonať query (dotaz) na AD. Nasledujúci príkaz by mal vrátiť zoznam užívateľov AD:
wbinfo -u
prípadne skupín v AD:
wbinfo -g
Testovanie prihlásenia
Predpokladáme, že sa nachádzate v konzole, X-ká sú vypnuté. Otvoríme si nové sedenie a pokúsime sa prihlásiť s AD účtom. Uvedené sú 2 príklady prihlásenia užívateľa jozo:
jozo EXAMPLE+jozo
Oba spôsoby by mali fungovať bez problémov. Mal by nám vzniknúť nový adresár /home/example/jozo. Teraz sa prihlásime do iného sedenia, no nie s AD účtom ale tým linuxovým. Skúste sa prihlásiť ako root a nechajte si toto rootovské sedenie otvorené.
Testovanie Samba príkazov
Týmito príkazmi si otestujeme či naša Samba pracuje správne s AD:
net ads info net ads lookup net ads status
Mali by sme získať výpis informácií o AD.
V tomto momente sa náš Arch chystá stať členom AD domény! Potrebujete k tomu administrátorský účet, v tomto príklade s typickým menom Administrátor :)
# net ads join -U Administrator Administrator's password: xxxxx Using short domain name -- EXAMPLE Joined 'MASINA' to realm 'EXAMPLE.COM'
Ak nám všetko funguje, tak, ako má, jediné, čo ostáva je reštartovať náš server a modliť sa, aby to fungovalo aj po ňom :).
Na záver článku
Dúfam, že clánok nie je príliš chaotický na pochopenie, mnoho vecí som mohol podrobnejšie rozpísať a pod., ale to už nechám na samoštúdium. Cieľom bolo uviesť jeden z príkladov nastavenia Samby ako člena AD domény. V tejto chvíli zatiaľ neviem povedať, či bude aj ďalšie pokračovanie tohto seriálu, resp. ak áno, čo všetko mám doň zahrnúť. Potreboval by som nejakú odozvu od vás užívateľov, preto ak chcete ďalší diel, napíšte to do komentárov a kľudne tam pripíšte aj to, čo by ste chceli, aby ďalši diel obsahoval. Takže vyjadrite prosím svoj názor! ;)
Ako spominal kolega vyssie, opisat nastavenie samby ako PDC by bolo fajn, u nas vo firme to hoci bezi, ale ktovie, mozno sa naucim nieco nove :)
Pripadne potom plynule prejst na to, ako zviazat Sambu s LDAPom, (cize aj nejaky strucny uvod do LDAPu, co to je, (da sa to jest??), ako sa v tom vyhladava, co su schemy a pod... kedze je to celkom uzitocna a multifunkcna vec :) )
1. nemam admin prava na upravu politik domeny a podobnych admin veci, ale som v skupine,ktora moze zaradit a odobrat pc z/do domeny. maly problem pri prikaze net ads join je ze ucet pre pc si musim vytvorit predom cez konzolu na pdc. potom zaradenie funguje. horsie je to ked dam net ads leave. ten mi po odpojeni zmaze tento ucet, nechapem preco je to povolene, ked vytvaranie je zakazane, ale to je jedno. windows stroje vraj maju politikami zakazane aby pri odpajani z domeny zmazali aj svoj ucet. ako to teda urobim aj v linuxe?
2. wbinfo -u obcas nevypise nic, prikaz sa spusti a neskonci, iba po ctrl c. pritom kinit mi pekne prideli ticket a aj pripojenie do domeny je uspesne.
3. net ads join ma sice pripoji do domeny ale na konci napise ze zlyhal dns update, ale na win pocitadle sa po pripojeni aktualizuje aj dns, ked ho pripajam pod mojim uctom. ?
4. po uprave pam konfigurakov sa musim prihlasovat 2x: zadam heslo, po enteri sa znova objavi promt zadaj heslo a po zadani hesla ma uz prihlasi ?
5. asi mi chybaju zakladne informacie o tom ako to cele vlastne funguje: winbind je zaklad na spojenie s domenou a obsluhuje vsetky poziadavky s nou suvisiace. kerberos je protokol na komunikaciu s domenou (prihlasovanie, sifrovanie). samba zabezpecuje zdielanie, ale moze byt aj v roli pdb/bdc. je to nejako takto? no a este pam, to netusim aku ulohu v tejto scheme hra... :(
ak sa to niekomu chcelo citat a vie odpoved na niektoru z otazok, budem mu VELMI vdacny za odpoved
- nakonfiguroval som a pripojil som samba server do domeny, testy dokazuju ze Samba pracuje s AD spravne ale ako pridam uzivatela ktory je v AD tak, aby tento uzivatel mohol citat, resp. zapisovat iba v jeho zdielanom adresari?
napr. zdielanie adresara pre uzivatela
Uvedeny zapis by mal sposobit, ze k zdielanemu priestoru sa pripoji iba uzivatel ktory je zapisany v AD a jeho uzivatelske meno je patko - ako ho spravne v smb.conf zapisem?
bolo by mozne vysvetlit tuto sekciu co znamena? Nejak mi nie je uplne jasna jej funkcia:
admin users = @"NET+domain admins"
force group = "EXAMPLE+domain admins"
inherit acls = Yes
map acl inherit = Yes
acl group control = yes
Dakujem.