Kategória: Linux a sieť

Zmenené: 25. september 2012

PDC pomocou Samba

Súborový a tlačový server Samba môže plniť úlohu primárneho radiča domény (PDCPrimary domain controller). To nie je žiadna novinka, ktorá by mnohých prekvapila. No napriek tomu nie každý vie ako takýto PDC pomocou Samby nastaviť. A práve postup nastavenia PDC na systéme Debian v podmienkach školy sa v tomto článku pokúsim priblížiť.

Úvod

Schéma siete

Schéma siete

V úvode sa nechystám zahltiť Vás informáciami o tom, čo všetko Samba dokáže. Jednoducho predstavím sieť, v ktorej budem jednotlivé nastavenia popisovať. Ako môžete vidieť, schéma siete je jednoduchá. Jedná sa o sieť s niekoľkými stanicami s rôznymi verziami operačného systému Windows, jednou stanicou s operačným systémom Linux a jeden server s našou Sambou. Aby sme sa v tom ľahko vyznali, mená staníc popisujú operačný systém, ktorý na nich beží.

Pri písaní tohoto postupu predpokladám, že viete čo je to sieť, viete ako sa upravujú v Linuxe súbory a viete nastaviť sieť v systéme Windows. So Sambou nemusíte mať žiadne skúsenosti.

Nastavenie sieťovej vrstvy

Naša skúšobná sieť bude mať adresu 172.16.1.0/24 a bude pripojená do internetu prostredníctvom nejakého smerovača, ktorého nastavením sa tu nebudem zaoberať. Jednotlivé stroje v sieti budú pracovať s týmito nastaveniami siete:

Nastavenie IP

Hostname IP adresa Maska Brána DNS
GW 172.16.1.1 - - -
PDC 172.16.1.2 255.255.255.0 172.16.1.1 -
W98 172.16.1.11 255.255.255.0 172.16.1.1 172.16.1.2
W2k 172.16.1.12 255.255.255.0 172.16.1.1 172.16.1.2
WXP 172.16.1.13 255.255.255.0 172.16.1.1 172.16.1.2
WVi 172.16.1.14 255.255.255.0 172.16.1.1 172.16.1.2
Lin 172.16.1.15 255.255.255.0 172.16.1.1 172.16.1.2

Ako ste si iste všimli, stroj s našou Sambou plní zároveň úlohu servera DNS. Je možné nastaviť DNS aj tak, aby poznal aj NetBIOS mená staníc, ale tomu sa tu venovať nebudem. Ani nastavením smerovača sa tu nebudem vôbec zdržiavať a v ďalšom texte ho budem považovať za správne nastavený a poskytujúci prístup na internet. Všetky adresy budem nastavovať staticky, ale nič Vám nebráni použiť nejaký DHCP server. No a to je na úvod všetko, tak hurá do práce!

Inštalácia

Nie, netreba sa báť, nezačnem teraz písať o sťahovaní zdrojových kódov a kompilácii Samby, hoci nikomu v tom nebránim. Samba je súčasťou úložiska Debianu, takže ju nainštalujeme prostredníctvom systému apt. Pred tým sa však pozrime, čo všetko nám Debian vo vzťahu k Sambe ponúka:

aptitude search ^samba
p samba           - súborový a tlačový server pre Unix, obdoba LanManager
v samba-client    -
p samba-common    - spoločné súbory pre Samba, používané serverom i klientom
p samba-dbg       - ladiace symboly Samba
p samba-doc       - dokumentácia Samba
p samba-doc-pdf   - PDF dokumentácia Samba
p samba-tools     - nástroje poskytované sadou Samba

Ale to nie je všetko:

aptitude search ^smb
p smb-nat         - nástroj na kontrolu Netbios Auditing Tool
p smb2www         - sieťový klient SMB/CIFS s webovým rozhraním
p smb4k           - prehliadač zdieľaní Samba (SMB) pre KDE
p smbc            - samba-commander - curses prehliadač siete samba
p smbclient       - ako LanManager, jednoduchý klient pre Unix
p smbfs           - príkazy mount a umount pre smbfs (pre jadrá >= ako 2.2.x
p smbget          - downloader pre protokol SMB/CIFS
p smbind          - na PHP založený nástroj pre správu DNS zón v BINDe
p smbldap-tools   - skripty pre správu Unixových a Samba účtov v LDAP
p smbnetfs        - User-space súborový systém pre SMB/NMB (Windows) sieťové servery a zdieľania

Tých balíkov, ako sami vidíte, je dosť, ale pre samotnú funkčnosť ich netreba všetky. Samotnú inštaláciu dosiahneme zadaním inštalácie balíka samba, ktorý prostredníctvom závislostí nainštaluje aj všetky ostatné, ktoré sú potrebné:

aptitude install samba

Tento príkaz nainštaluje aj nasledujúce balíky:

  • libcups2
  • libtalloc1
  • libwbclient0
  • samba-common
  • ucf

V závislosti od Vášho nastavenia môže ešte pridať aj odporúčané balíčky, ale ako vyplýva z názvu, sú len odporúčané, nie však potrebné. Počas inštalácie sa inštalátor spýta na meno pracovnej skupiny, tak zadajte podľa vlastnej potreby, ja budem používať pracovnú skupinu MYSKUPINA. Inštalátor sa spýta aj na to, či chcete používať nastavenie WINS serverov cez DHCP, keďže som však spomínal statické nastavenie, netrápi ma spolupráca s klientom DHCP a pokojne odpoviem nie. Ak inštalácia prebehne úspešne (a neviem prečo by nemala), je Samba pripravená na používanie.

Základné nastavenie

Začneme stručným popisom syntaxe konfiguračného súboru a potom základným nastavením, v ktorom bude Samba vystupovať ako ďalší počítač v sieti M$, ktorý bude poskytovať zdieľané adresáre.

Konfiguračný súbor

Konfigurácia servera Samba je umiestnená v adresári /etc/samba, samotný konfiguračný súbor sa volá smb.conf a je bohato komentovaný, čo má však negatívny vplyv na jeho prehľadnosť. Avšak prísť o tie komentáre a vzorovú konfiguráciu by bola škoda, preto si hneď na začiatku urobme jeho zálohu, ku ktorej sa budeme môcť neskôr vrátiť:

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Syntax konfiguračného súboru je jednoduchá a konfiguračný súbor môže obsahovať:

  • prázdne riadky, ktoré sú ignorované,
  • komentáre, teda riadky začínajúce sa znakom mriežka (#) alebo bodkočiarka (;),
  • mená sekcií v lomených zátvorkách, napr. [global],
  • konfiguračné parametre, ktoré sú dvojicami meno a hodnota, oddelené znakom rovná sa (=).

Konfiguračné parametre sú dvoch typov:

  • logické, ktoré nadobúdajú hodnotu 0 alebo 1 (true/false, yes/no)
  • textové, ktoré majú ako hodnotu nejaký text.

Základná konfigurácia

Začneme jednoduchou konfiguráciou, ktorá zaistí, že náš server so Sambou bude dostupný zo staníc s Windows prostredníctvom prehliadania okolitých počítačov v sieti. Predpokladám, že nastaviť pracovnú skupinu a IP adresu vo Windows viete, takže tým sa zdržiavať nebudem. Aby sme teda dostali zo Samby základné funkcie, vytvoríme si nový konfiguračný súbor s menom, podľa odporúčaní Samba Teamu, smb.conf.master stýmto obsahom (pripomínam, urobte si zálohu vzorového konfiguračného súboru, informácie v ňom iste oceníte):

[global]
## Browsing/Identification ##
 netbios name          = pdc
  workgroup             = MYSKUPINA
 server string         = %h server

## Debugging/Accounting ##
 log file              = /var/log/samba/log.%m
 max log size          = 1000
 syslog                = 0
 panic action          = /usr/share/samba/panic-action %d

## Authentication ##
 security              = user
 encrypt passwords     = yes
 passdb backend        = tdbsam

#======================= Share Definitions =======================
[homes]
 comment               = Domovský adresár
 browseable            = no
 create mask           = 0700
 directory mask        = 0700
  writeable             = yes
 valid users           = %S

No dobre, pripúšťam, že to nie je celkom minimum, dá sa ešte ubrať, ale nič netreba preháňať. A čo sme to vlastne nastavili? Všimnite si, že konfiguračný súbor je rozdelený na dve sekcie, [global] a [homes]. Sekcia global obsahuje nastavenia platné pre celý systém a sekcia homes je predvolené zdieľanie domovského adresára prihláseného používateľa.

V globálnej časti nastavujeme najprv meno počítača platné v sieti M$ (pdc), pracovnú skupinu (MYSKUPINA) a popis počítača (%h server). V popise počítača si všimnite %h, je to takzvaná premenná a bude nahradená platným hostname počítača. Použitie netbios name nie je povinné, ak ho vynecháte je použité práve hostname. Potom nasleduje časť venovaná logovacím záznamom, kde nastavujeme umiestnenie, veľkosť súborov záznamov (v kB) a akciu pri páde Samby. No a nakoniec nastavujeme parametre prihlásenia. Security nastavená na user je východzou hodnotou, môže byť vynechaná, ale nech viem čo mám nastavené, tak dávam aj túto voľbu. Nasleduje určenie používania šifrovaných hesiel, čo je dnes už potrebné. Pokračuje nastavenie umiestnenia databázy používateľov, tu nezabudnite, že ak zmeníte tdbsam na iné úložisko, stratíte všetky nastavenia používateľov.

Keď máme súbor pripravený, najprv urobíme kontrolu, či sme sa niekde nepomýlili (preklepy), a to pomocou nástroja testparm, ktorý je súčasťou balíka samba. Aby sme nemuseli vypisovať celú cestu, zmeňte pracovný adresár na /etc/samba a potom spustite:

testparm smb.conf.master
Load smb config files from smb.conf.master
Processing section "[homes]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

Všimnite si, že príkazu zadávame ako parameter meno nášho konfiguračného súboru, pretože sa líši od mena, ktoré má Samba prednastavené (smb.conf). Ak výpis vyzerá tak ako na príklade vyššie, znamená to, že je konfiguračný súbor v poriadku a môžeme použiť rovnaký nástroj na vygenerovanie konfiguračného súboru, ktorý bude mať odstránené všetky nepotrebné časti, čo má mať kladný vplyv na výkon Samby. Najprv však musíme stlačiť kláves enter (ako je napísané v poslednom riadku) a príkaz ešte vypíše všetky konfiguračné voľby zo zadného súboru. Práve túto vlastnosť využijeme na vygenerovanie skutočného konfiguračného súboru:

testparm -s smb.conf.master > smb.conf
Load smb config files from smb.conf.master
Processing section "[homes]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Výpis vyzerá podobne, ale nástroj už nečaká na stlačenie enter a výpis konfigurácie presmeruje do zadaného súboru. Teraz ešte reštartovať Sambu:

invoke-rc.d samba restart
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.

Ak meníte len niektoré hodnoty, nie je potrebné server reštartovať, ale stačí mu nariadiť znovanačítanie konfigurácie:

invoke-rc.d samba reload
Reloading /etc/samba/smb.conf: smbd only.

A môžete skontrolovať, či je náš stroj s menom pdc zobrazený medzi okolitými počítačmi (nezabudnite, že je potrebná trpezlivosť, pretože zmeny v sieti M$ sa prejavia až po chvíli aj 15 min).

Správa používateľov

Trochu teórie

Ak teda všetko vyšlo tak ako malo, je naša stanica so Sambou viditeľná v okolitých počítačoch Windows, ale ak sa pokúsite k nej pristúpiť, aby ste videli zdieľané adresáre, zistíte, že systém po Vás chce zadať meno a heslo. Je to preto, že sme nastavili bezpečnostnú úroveň na user, čiže Samba bude autentifikovať každého pristupujúceho používateľa, a to na základe mena a hesla. Na zaistenie autentifikácie si Samba uchováva vlastnú databázu používateľov, ktorá však (pri tomto stupni zabezpečenia) vyžaduje aj systémové účty. Inými slovami, potrebujete mať vytvorený účet aj v systéme aj v Sambe.

Databáza používateľov Samby môže byť uložená rôznymi spôsobmi a nastavuje sa pomocou voľby passdb backend v súbore smb.conf. Východzou hodnotou je smbpasswd, ale ak ste pozorne skúmali náš vzorový konfiguračný súbor, videli ste nastavenie tdbsam. Ukladanie do smbpasswd je spôsob ukladania informácií o účtoch so bežného textového súboru, naproti tomu ukladanie pomocou tdbsam ukladá informácie do TDB databázy (trivial database). Tento spôsob je vhodný pre siete s maximálne 250 používateľmi (odporúčanie Samba tímu potom je vhodné ldapsam) a oproti štandardnému smbpasswd poskytuje dodatočné možnosti nastavenia (prispôsobenia) účtu.

Pridávanie používateľov

Takže nastal čas pripraviť používateľov. Ale kým sa bezhlavo pustíme do ich pridávania, je dobré si premyslieť niekoľko vecí. Najprv, či sa budeme k Sambe (do domény) pripájať aj počítače s Windows 95/98. Ak áno, je potrebné do globálnej časti smb.conf pridať riadok:

lanman auth = yes

Toto nastavenie nepoužívajte, ak nepotrebujete pristupovať zo spomínaných starých systémoch Windows, pretože má mnoho nevýhod a v dnešnej dobe je už určite prekonané. Ak ste už mali v Sambe pridaných nejakých používateľov pred nastavením LANMAN autentifikácie, bude potrebné ich heslá nastaviť znova, inak bude prístup z Win95/98 odopretý.

Ďalšou vecou, ktorú je dobré si premyslieť dopredu je rozdelenie používateľov do skupín. Správne zoskupenie používateľov určite znižuje náročnosť správy servera Samba a pre potreby tohoto návodu použijem rozdelenie na štyri skupiny:

  • admini – úplný prístup;
  • trucitelia – pokročilý prístup triednych učiteľov;
  • ucitelia – štandardný prístup učiteľov;
  • studenti – obmedzený prístup žiakov.

Nič Vám však nebráni rozdeliť používateľov aj podrobnejšie, či úplne inak. Takže najprv pristúpime k vytvoreniu týchto skupín. Jedná sa o štandardné používateľské skupiny v systéme, preto aj na nich vytvorenie použijeme štandardný systémový nástroj groupadd:

groupadd admini
groupadd trucitelia
groupadd ucitelia
groupadd studenti

Po vytvorení skupín možno pristúpiť k vytváraniu účtov a ich následnému priradeniu do skupín. Pre tento príklad vytvoríme po jednom účte, ktorý bude zaradený do príslušnej skupiny (ešte nič nepridávajte, najprv prečítajte celú kapitolu):

useradd -m -s /bin/false -c "Samba administrátor" -G admini administrator
useradd -m -s /bin/false -c "Samba triedny učiteľ" -G trucitelia trucitel
useradd -m -s /bin/false -c "Samba základný učiteľ" -G ucitelia ucitel
useradd -m -s /bin/false -c "Samba základný študent" -G studenti student

Čo tento siahodlhý príkaz vlastne robí? Samozrejme pridáva do systému používateľa, ktorého prihlasovacie meno je celkom na konci príkazu. Pomocou voľby -m nariaďujem vytvoriť domovský adresár (predvolene v /home), voľbou -s nastavujem neexistujúci prihlasovací shell (používatelia nepotrebujú systémový prístup, len účet), voľbou -c nastavujem komentár a voľbou -G priraďujem účet aj do príslušnej skupiny. Tento spôsob vytvorenia účtov ponechá heslo používateľa nenastavené a kvôli Sambe ho nastavovať netreba, iba ak by používateľ potreboval z nejakého iného dôvodu (email, ftp, či shell).

Po vytvorení systémových účtov možno začať pridávať účty do databázy Samby. K tomu si môžete vybrať z dvoch nástrojov, a to smbpasswd alebo pdbedit. S oboma nástrojmi dosiahnete rovnaký výsledok, pričom druhý z nich je prednostne určený pre správu databázy tdbsam (spomínal som pokročilé možnosti), ale pre pridanie účtov si vystačíme so smbpasswd (pretože pdbedit vypisuje dodatočné informácie):

smbpasswd -a administrator
smbpasswd -a trucitel
smbpasswd -a ucitel
smbpasswd -a student

Ak chcete používať pdbedit, jednoducho zmeňte meno príkazu, syntax je rovnaká. Na rozdiel od pridávania systémových používateľov, teraz už je potrebné aj heslo, ktoré si príkaz vždy dva krát (na overenie) vyžiada. Po pridaní používateľov a nastavení hesiel môžme vyskúšať zo staníc s Windows prístup na zdieľaný počítač PDC. Teraz by ste mali mať možnosť vidieť jeden zdieľaný prostriedok domovský adresár prihláseného používateľa.

Odstraňovanie používateľov

Pri správe používateľských účtov si s ich pridávaním nevystačím, pretože ľudia prichádzajú i odchádzajú, potrebujem účty aj odstraňovať. Odstraňovanie si môžeme hneď aj vyskúšať pretože pri inštalácii si Samba importovala všetky existujúce systémové účty, môžeme všetky nepotrebné odstrániť. začneme teda výpisom všetkých existujúcich účtov pomocou nástroja pdbedit:

# pdbedit -L
backup:34:backup
nobody:65534:nobody
lp:7:lp
Debian-exim:101:
root:0:root
daemon:1:daemon
mail:8:mail
statd:102:
news:9:news
bin:2:bin
uucp:10:uucp
identd:103:
proxy:13:proxy
sys:3:sys
dnsmasq:105:dnsmasq
sshd:104:
sync:4:sync
list:38:Mailing List Manager
games:5:games
irc:39:ircd
www-data:33:www-data
gnats:41:Gnats Bug-Reporting System (admin)
man:6:man
libuuid:100:

Ak sa poriadne pozriete na tieto účty, iste prídete na to, že odobrať možno všetky (okrem účtu root, ktorý neskôr bude treba). Existencia týchto účtov v Sambe nie je nijako nebezpečná, len zbytočná. Zo Samby tieto účty odstránime pomocou príkazu smbpasswd alebo pdbedit. V tomto prípade je stručnejší pdbedit, ale opäť je syntax rovnaká, parameter -x nasledovaný menom účtu:

pdbedit -x libuuid

Odstránenie účtu si môžete skontrolovať opätovným vypísaním všetkých účtov. Rovnako ako tieto účty, je možné odstrániť aj účty, ktoré sme už do Samby pridali my sami, lenže pribúda ešte jedna úloha. Tou úlohou je odstránenie účtu aj zo systémovej databázy. Pamätáte sa? Na vytvorenie účtu v Sambe sme museli najprv vytvoriť účet v systéme. Samozrejme vyššie spomínané účty chcem v systéme ponechať, tak ich mazať nebudem, ale ak odíde nejaký zamestnanec, budem ho chcieť zo systému odstrániť úplne. K tomu použijeme príkaz userdel, ktorému pridám ešte voľbu -r, aby odstránil aj domovský priečinok používateľa, ktorého odstraňujeme:

userdel -r meno_účtu

Niekedy je vhodné si pred samotným odstránením účtu poznačiť UID odstraňovaného používateľa a po odstránení účtu (a domovského adresára) si nechať vypísať všetky súbory, ktoré vlastní tento (vlastne už neexistujúci) používateľ. Možno už nebudú potrebné. Ale tomuto sa tu venovať nebudem.

Zmena hesla

Ďalšou často používanou úlohou správy používateľov je zmena hesla účtu. Poznáte to, používateľ sa začne sťažovať, že niekto v jeho mene robí zmeny (prezradené heslo) alebo prosto svoje heslo zabudol… Zmena (nastavenie) hesla je potrebná aj pre všetky importované účty (ak si ich ponecháte), pretože ich import prebehol bez hesla.

Zmena hesla existujúceho účtu je veľmi jednoduchá, tu nám už ostáva iba nástroj smbpasswd. Jeho použitie je jednoduché, stačí mu zadať meno používateľa, ktorému chceme heslo zmeniť:

smbpasswd student
New SMB password:
Retype new SMB password:

a rovnako ako pri vytváraní účtu, dva krát zadať nové heslo. Pre ďalšie podrobnosti vás odkážem na manuálové stránky nástrojov smbpasswd a pdbedit.

Nastavenie zdieľania

Pred tým ako sa pustím do nastavenia samotného primárneho radiča domény (PDC) si ešte pripravíme zdieľané adresáre, ktoré budem v sieti zdieľať prostredníctvom našej Samby. Pri ich nastavovaní vám zároveň ukážem základné postupy ich nastavenia, ako aj spôsoby riadenia prístupu k nim. Celý tento postup bude zodpovedať nami zvolenej schéme prístupu (administrator, triedny učiteľ, učiteľ žiak).

Najprv si v systéme pripravím adresáre, ktoré budem zdieľať. Aby aj ich názvy vypovedali o prístupe nazvem ich takto:

  • adminsky – tu budú mať prístup len členovia skupiny admini;
  • verejny – tu budú mať prístup každý;
  • triedny – tu budú mať prístup členovia skupiny ucitelia a trucitelia, ale právo zápisu len trucetelia;
  • ucitelsky – tu budú mať prístup všetci, okrem členov skupiny studenti.

Nastavenie v systéme

Osvedčilo sa mi vytvoriť pre zdieľanie v sieti samostatnú partíciu (nie je podmienkou) alebo aspoň samostatný adresár, aby to bolo všetko pekne pohromade, takže napríklad vytvorím adresár /home/sambadir, do ktorého budem jednotlivé zdieľané adresáre ukladať a aby sa mi zatiaľ neplietli práva súborového systému, nastavím ich na 777:

mkdir /home/sambadir
chmod 777 /home/sambadir

Vstúpim do tohoto adresára a vytvorím si adresáre:

cd /home/sambadir
mkdir adminisky
mkdir verejny
mkdir triedny
mkdir ucitelsky
chmod 777 *

Po dokončení nastavení a správnom rozdelení používateľov do skupín, je vhodné zmeniť tieto práva na niečo striktnejšie. Podstata spočíva v tom, že pri prístupe na disk používa Samba práva aktuálne prihláseného používateľa, povolené v súborovom systéme.

Nastavenie v Sambe

Na začiatku som spomenul, že konfiguračný súbor má nejaké sekcie. V mojom vzorovom základnom to boli sekcie [global] a [home]. V oboch prípadoch sa jedná o špeciálne (systémové) mená, ktorým Samba rozumie. Ak vytvoríme akúkoľvek sekciu s iným menom ako tieto (sú ešte aj ďalšie systémové), bude ich Samba považovať za názov zdieľaného prostriedku (adresára). Takže začnem tým, že vytvorím sekcie pre každé zdieľanie a do každej sekcie zatiaľ dám len dve konfiguračné voľby jedna určí umiestnenie poskytovaného adresára (path) a druhá mu nastaví komentár:

[administrac]
  comment = Adresár pre adminov
  path = /home/sambadir/adminisky

[triedniucit]
  comment = Adresár triednych
  path = /home/sambadir/triedny

[ucitelia]
  comment = Adresár učiteľov
  path = /home/sambadir/ucitelsky

[ziaci]
  comment = Verejný adresár
  path = /home/sambadir/verejny

Všimnite si, že mená sekcií sa nemusia zhodovať s menom zdieľaného adresára. Ak však máte v sieti stroje s Windows 95/98/ME, zaistite aby neboli dlhšie ako 12 znakov, inak nebudú z týchto strojov dostupné. Pre istotu nepoužívam medzery, ale problém by v mene sekcie nemali byť ani medzery ani interpunkcia. Postupom, ktorý som popisoval v časti o konfiguračnom súbore vygenerujeme konfiguračný súbor a znova načítame konfiguráciu.

Nastavenie kódovania

Pravdepodobne bude vhodné nastaviť správne kódovanie textu, pretože narazíte na problémy so zobrazovaním (na strojoch s Windows 95/98). Aby ste sa tomuto vyhli, nastavte v globálnej sekcii:

## Charset settings ##
 dos charset = CP852

Ak chcete ladiť ďalej, hľadajte v manuálovej stránke smb.conf aj parametre unix charset, či display charset.

Nastavenie prístupu

Povolenie zápisu

Pri tomto nastavení zistíte, že môžete všetky moje zdieľané priečinky prezerať, ale zatiaľ nikto nemá právo do nich zapisovať. Začnem teda verejným priečinkom (ziaci), do definície ktorého pridám parameter writeable nastavený na yes:

[ziaci]
   comment = Verejný adresár
   path = /home/sambadir/verejny
   writeable = yes

Obmedzenie prístupu

Týmto nastavením povolím zápis pre všetkých používateľov, ktorí sa prihlásia k nášmu serveru. Ak by som povolil writeable pre všetky zdieľania, mohol by každý zapisovať všade, a teda aj študenti. A toto iste nechcem a ako tomu zabrániť ukážem práve na zdieľaní ucitelia. Do tohoto adresára chcem povoliť prístup všetkých, okrem študentov. Keďže všetci ostatní majú mať aj právo zápisu, povolím zápis pomocou parametra writeable, ale zakážeme prístup všetkým členom skupiny studenti pomocou parametra invalid users:

[ucitelia]
 comment = Adresár učiteľov
 path = /home/sambadir/ucitelsky
 writeable = yes
 invalid users = +studenti

Voľba invalid users môže obsahovať mená jednotlivých používateľov alebo mená skupín, pričom v mojom príklade vidíte, že menu skupiny predchádza znamienko +, ktoré udáva, že mám na mysli systémovú skupinu (ďalšie možnosti sú & a @).

Obmedzenie zápisu

Ďalšou úlohou, ktorá predo mnou stojí, je nastavenie prístupu do adresára triednych učiteľov. Jeho zmyslom je uchovávať dokumentáciu, do ktorej by mali mať prístup všetci učitelia, ale zapisovať by mali len triedni učitelia. Samozrejme, ani do tohoto adresára nemajú žiadni prístup žiaci. Tu si pomôžem voľbou read list:

[triedniucit]
   comment = Adresár triednych
   path = /home/sambadir/triedny
   writeable = yes
   invalid users = +studenti
   read list = @ucitelia

Z tohoto nastavenia vidíte, že do adresára je možné zapisovať, ale členovia skupiny studenti majú prístup zakázaný (teda aj zápis) a členovia skupiny ucitelia majú zakázaný zápis. Ostatní, teda admini a triedni učitelia majú právo prístupu i zápisu. Rovnaký výsledok môžete dosiahnuť aj použitím voľby write list, ktorá bude obsahovať zoznam skupín (používateľov), ktorých členovia majú právo zápisu:

[triedniucit]
 comment = Adresár triednych
 path = /home/sambadir/triedny
 invalid users = +studenti
  writeable = no
  write list = @trucitelia, @admini

Ktorý spôsob použijete nechám na vás, ja dávam prednosť tomu prvému, avšak druhý sa zíde pri komplexnom nastavení servera, ktorý používa viac rôznych skupín.

Povolenie vyvoleným

Ostal mi posledný adresár môjho príkladu. Je to adresár administrátorov, kde budú mať prístup iba oni. V tomto prípade využijem voľbu valid users. Táto voľba obsahuje zoznam skupín (používateľov), ktorých členovia môžu vstupovať do adresára. Takže môžem povoliť zápis všeobecne, veď zapisovať môžu len tí, čo sa do adresára dostanú:

[administrac]
 comment = Adresár pre adminov
 path = /home/sambadir/adminisky
 writeable = yes
 valid users = +admini

Na záver už len malá poznámka: nezabudnite povoliť používateľom zápis do ich domovského adresára (sekcia homes), pretože v našom východzom príklade si nemôžu do neho nič uložiť, a tak je vlastne zbytočný. A keď už povoľujete zápis, určite nezabudnite použiť kvóty, pretože skôr alebo neskôr spoznáte, že objem uložených dát rastie do obludných rozmerov a dohováranie je nekonečný a málo účinný proces.

Tu považujem za vhodné spomenúť konfiguračnú voľbu admin users, ktorá určuje administrátorov servera a dáva sa buď do globálnej sekcie (pre celý server) alebo do sekcie príslušného zdieľania, v ktorom ich chceme nastaviť. Títo používatelia v prostredí Samby vystupujú ako obdoba root, súbory (aj adresáre) nimi vytvorené bude vlastniť root (so skupinou príslušného používateľa) a budú môcť manipulovať so súbormi a adresármi bez ohľadu na nastavené prístupové práva (vrátane pridávania počítačov do domény):

admin users = @admini

Práva súborového systému

Nespomenul som ešte jeden problém, a tým sú práva súborového systému novovytvorených súborov a adresárov. Nové súbory sú vytvorené s právami na čítanie pre všetkých, ale pre zápis len pre vlastníka súboru. Toto správanie môže byť niekedy želané, pretože súbor bude môcť zmeniť len jeho vlastník. Horšie je to s právami nových adresárov. Tie sú nastavené podobne, čiže každý môže zobrazovať obsah a prechádzať adresárom, ale zapisovať do neho môže len vlastník. Týmto spôsobom by nové adresáre vlastne neboli prístupné pre verejný zápis. Ak teda toto východzie nastavenie nevyhovuje, môžme to zmeniť pomocou volieb create mask (práva nových súborov) a directory mask (práva nových adresárov). Ich hodnota je klasický osmičkový mód práv, napríklad:

create mask = 0666
directory mask = 0777

Týmto nastavujem súborom práva čítania a zápisu pre všetky kategórie používateľov (rw-rw-rw-) a adresárom práva čítania, zápisu a prechádzania tiež pre všetky kategórie používateľov (rwxrwxrwx). Tieto voľby môžem dať do sekcie, v ktorej majú platiť, alebo ich môžeme dať do globálnej sekcie, a potom budú platiť pre celý server.

Nastavenie PDC

V tomto okamžiku máme nastavený súborový server tak, že rozlišuje rôzne úrovne prístupu používateľov a nastal čas, nastaviť ho aby vystupoval ako radič domény. Premena samostatného servera na radič domény nie je nijako zložitá.

Prvou vecou, ktorú musíme urobiť, je pridanie nastavení doménového radiča do globálnej časti konfiguračného súboru:

## Primary domain controller ##
   domain logons = yes

## Browsing ##
   domain master = yes
   local master = yes
   preferred master = yes
   os level = 34

To, že bude Samba vystupovať ako primárny radič domény (PDCPrimary Domain Controller) zaistí voľba domain logons. Zvyšné štyri voľby nastavujú prechádzanie siete a nebudem sa tu nimi zdržiavať.

Druhou vecou, ktorú musím urobiť, je pripravenie nezapisovateľného, neverejného a neprehliadateľného zdieľania s názvom [netlogon]:

[netlogon]
  comment = Prihlasovacie služby
  path = /home/sambadir/logon
  public = no
  writeable = no
  browsable = no

Nezabudnite vytvoriť adresár /home/sambadir/logon s právami nastavenými tak, aby z neho mohla Samba čítať. Tento adresár slúži na umiestnenie prihlasovacích skriptov, súborov skupinovej politiky a ďalších nástrojov potrebných pre prihlasovacie skripty, (dávkové súbory MS-DOS, ktoré budú spustené pri každom prihlásení do domény, ale o nich neskôr). Aby sa tieto nastavenia aplikovali je potrebné Sambu reštartovať, len nezabudnite pred reštartom skontrolovať a vygenerovať nový konfiguračný súbor.

V tomto okamžiku môžem nastaviť stroje s Windows 98/ME do svojej domény MYSKUPINA. Aby som to mohol urobiť aj s Windows 2k/XP/Vista, bude treba ešte niekoľko dodatočných krokov, takže nastavte Windows 98 na prihlasovanie do domény a tešte sa (samozrejme ešte nemáme prihlasovacie skripty).

Nastavenie pre Windows 2k a novšie

Keďže operačné systémy Windows 2k, XP a Vista majú riešené prihlasovanie do domény trochu inak a sú na prácu v doméne lepšie pripravené, je treba urobiť jeden krok naviac. Tým krokom je vytvorenie tzv. dôveryhodných účtov (trusted accounts) pre počítače. Dôveryhodný účet nie je účet používateľa, ale účet počítača, ktorý má rovnaké meno ako je NetBIOS meno počítača, pridávaného do domény, aby však boli odlíšené od bežných používateľských mien, majú na konci znak dolár ($). Pre tento účel je dobré vytvoriť samostatnú systémovú skupinu, aby boli účty počítačov pekne spolu, ktorú nazvime povedzme smbcomp:

groupadd --system smbcomp

Teraz môžme vytvoriť účet počítaču, postup bude podobný ako pri bežnom používateľovi, len na koniec mena pridáme dolár a príkazu smbpasswd pridám parameter -m, aby vedel, že vytváram počítačový účet. Celé vám to ukážem na príklade počítača s menom W2k:

useradd -g smbcomp -d /dev/null -c "účet počítača" -s /bin/false W2k$
smbpasswd -a -m W2k$

Pre tento účet som nastavil domovský priečinok na /dev/null, pretože počítač domovský priečinok nepotrebuje, rovnako ako shell (/bin/false) a okrem komentára (-c …) som mu nastavil aj primárnu skupinu na skupinu smbcomp. Všimnite si, že v pri vytváraní dôveryhodného účtu sa smbpasswd nepýta na heslo pre účet.

Chyba načítania profilu

Chyba načítania profilu

Keď som toto všetko urobil pre všetky svoje stroje s Windows 2k, nastal čas všetky ich prihlásiť do domény. Pri nastavovaní domény sa objaví prihlasovací dialóg na zadanie používateľského mena a hesla, tam zadám údaje účtu, ktorý je zahrnutý vo voľbe admin users (teda niektorý z členov skupiny admini). Po reštarte nezabudnite v prihlasovacom dialógu nastaviť prihlásenie do domény. Ak boli v počítači vytvorené lokálne účty používateľov, pokojne ich odstráňte, už nie sú potrebné. Po prihlásení používateľa do domény sa zatiaľ objaví informačné okno so správou o neexistencii adresára s profilom používateľa, je to preto, že si profily nechávam na neskôr, takže to nevzdávajte.

Windows 7 a Samba 3

Vo Windows 7 je potrebné urobiť zmenu v registri (ešte pred prihlásením do domény), ktorá sa postará o správne nastavenie parametrov prihlásenia tak, aby si Windows 7 a Samba 3 rozumeli:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters]
"DNSNameResolutionRequired"=dword:00000000
"DomainCompatibilityMode"=dword:00000001

Uložte si to ako súbor .reg a potom z kontextového menu prieskumníka zvoľte Zlúčiť (Merge).

Cestovné profily

Cestovné profily sú vymoženosťou, ktorá má zvýšiť používateľské pohodlie. Ich podstatou je, že nastavenie používateľského účtu nie je uložené lokálne, ale na radiči domény, odkiaľ sa po prihlásení prekopíruje do počítača. Myšlienka je to krásna a viem si to predstaviť v heterogénnej sieti. Ale vôbec si to neviem predstaviť v sieti, kde sú nie len rôzne operačné systémy (rôzne verzie Windows) ale aj rôzne HW vybavenie (napr. veľkosť a rozlíšenie monitora). Pravdou je, že v Sambe je možné vytvoriť rôzne profily pre rôzne operačné systémy a dokonca i pre rôzne počítače, ale nikdy som to neskúšal. Uspokojil som sa vždy s vypnutím cestovných profilov, pomocou konfiguračnej voľby v globálnej sekcii:

logon path =

Táto voľba vypne použitie cestovných profilov, vynúti vytvorenie lokálneho profilu pri prvom prihlásení z počítača, a tento lokálny profil pri odhlásení vymazaný nebude, teda bude k dispozícii aj pri ďalšom prihlásení. Zdôrazňujem, že za rovná sa nemá byť nič, ani prázdne úvodzovky v hodnote voľby.

Prihlasovacie skripty

Posledná vec, na ktorú sa spolu pozrieme sú prihlasovacie skripty. Prihlasovací skript je dávkový súbor MS-DOS (*.bat), ktorý je spustený pri každom prihlásení používateľa do domény. Ešte raz poznamenám, že súbor MS-DOS, takže aj jeho riadky musia byť ukončené znakmi CR/LF, nie len LF ako je to v Linuxe. Je niekoľko možností ako to dosiahnuť, len tak námatkovo ma napadá editor KWrite, prekódovanie pomocou recode, či napísanie vo Windows a následné prekopírovanie hotového súboru na správne miesto.

Najväčšia výhoda prihlasovacích skriptov spočíva v ich spúšťaní (vykonávaní) pri prihlasovaní používateľa, pretože to môžeme využiť napríklad na mapovanie sieťových diskov, či nastavenie času (áno, Samba môže plniť úlohu časového servera) v počítači a rôzne ďalšie úlohy. Prihlasovacie skripty sú umiestnené v zdieľaní netlogon, ktoré sme si už vytvorili. Nastavenie cesty ku skriptu určuje hodnoty konfiguračnej voľby logon script, ktorá je predvolene prázdna, teda nie je nastavený žiadny prihlasovací skript:

logon script =

Podobne ako profily, aj prihlasovacie skripty možno rozlíšiť podľa rôznych hodnôt. Ako príklad si ukážme nastavenie tak, že každý používateľ bude mať svoj vlastný prihlasovací skript. O to sa postará premenná Samby %U, ktorá bude nahradená menom práve prihlasujúceho sa používateľa:

logon script = %U.bat

Inou možnosťou, podľa mňa veľmi užitočnou, je použitie rôznych skriptov pre rôzne operačné systémy prihlasovanej stanice. Samba rozpoznáva Sambu (Samba), súborový systém Linux CIFS (CIFSFS), OS/2 (OS2), Windows for Workgroups (WfWg), Windows 9x/ME (Win95), Windows NT (WinNT), Windows 2000 (Win2K), Windows XP (WinXP), Windows XP 64-bit (WinXP64), Windows 2003 (Win2K3) a Windows Vista (Vista). Všetky ostatné systémy sú označené ako neznáme (UNKNOWN), takže premenná %a je nahradená príslušnou tučne zvýraznenou hodnotu:

logon script = %a.bat

Existujú aj ďalšie premenné, ktoré Samba používa, ich popis nájdete v manuáli. Ale iste budete so mnou súhlasiť, že by bolo dosť pracné, a teda náchylné na chyby, udržiavať prihlasovací skript pre každého používateľa (či stroj) zvlášť. Jednym zo spôsobov, ako si to zjednodušiť je vytvoriť jeden (prípadne niekoľko) prihlasovací skript a v adresári [netlogon] vytvoriť pre jednotlivých používateľov (stroje) symbolické odkazy na tento skript. Týmto spôsobom možno znížiť náročnosť správy skriptov a zároveň odlíšiť rôzne skupiny používateľov. Ja tu uvediem príklad použitia jedného spoločného prihlasovacieho skriptu, ktorý nazvem povedzme netlogon.bat, s týmto obsahom:

net time \\PDC /set /y
net use m: /home
net use n: \\PDC\ziaci

Tento skript najprv nastaví čas podľa času na doménovom radiči, potom namapuje domovský adresár ako disk M: a zdieľaný adresár ziaci ako disk N:. Toto riešenie má jednu nevýhodu a to, že na systémoch Windows 2k a novších bude domovský priečinok namapovaný dva krát, ale to jednoducho vyriešime, ak si nastavíme prihlasovacie skripty pomocou %a.bat a tento uložíme s menom Win95.bat, ďalší (bez mapovania /home) napr.:file:` Win2K.bat` a symbolické odkazy na neho pre WinXP.bat, Vista.bat atď. Všetky v adresári [netlogon].

Mapovanie používateľských skupín

Poslednou vecou, o ktorej sa zmienim, je mapovanie používateľských skupín. Ak ste sa už prihlásili do domény z nejakej vzdialenej stanice, určite ste si všimli, že všetci používatelia majú rovnakú, obmedzenú, pracovnú skupinu (samozrejme na Windows 2k a novších). Aby ste rozlíšili práva používateľov, umožňuje Samba namapovať Unixové používateľské skupiny na skupiny vo Windows, použijeme na to príkaz net groupmap add pre pridanie mapovania alebo modify pre jeho zmenu. Kompletný výpis dostanete zadaním net groupmap.

Menším problémom pre neznalých môže byť fakt, že Samba od verzie 3.0.11 nevytvára mapovanie štandardných skupín, a tak si ho musíme vyrobiť sami. Ak viete čo je treba vytvoriť, tak nemáte problém, ak nie, pomôžeme si dokumentáciou. Konkrétne v dokumente Samba 3 v príkladoch je uvedený skript initGrps.sh, ktorý sa stará o vytvorenie potrebných skupín. Ja si tento skript upravím podľa svojej potreby:

head=initGrps.sh
#!/bin/bash

## initGrps.sh

## Mapovanie Doménových skupín Windows na UNIXové skupiny
net groupmap add rid=512 ntgroup="Domain Admins" unixgroup=admini type=d
net groupmap add rid=513 ntgroup="Domain Users" unixgroup=users type=d

## Pridanie vlastných Doménových skupín
net groupmap add ntgroup="TrUčitelia" unixgroup=trucitelia type=d
net groupmap add ntgroup="Učitelia" unixgroup=ucitelia type=d
net groupmap add ntgroup="Študenti" unixgroup=studenti type=d

Celá zmena spočíva v odstránení časti pre vytváranie systémových skupín (UNIX groups), ktoré už predsa vytvorené máme a v nahradení mien skupín podľa nášho nastavenia. V prvej časti skriptu je vytvorené mapovanie štandardných doménových skupín Windows, v druhej časti vytvárame naše tri vlastné doménové skupiny. Keďže Windows nerozoznáva skupiny podľa mena (nakoniec ani Linux) ale podľa čísla, priraďujeme štandardným skupinám aj RID, teda identifikátor, podľa ktorého Windows skupinu rozpozná.

Pridávanie doménových skupín

Pridávanie doménových skupín

V tomto okamžiku majú členovia skupiny admini automaticky práva administrátora. Ak chceme prideliť rôzne práva členom rôznych skupín, je to treba urobiť manuálne (alebo pomocou dávkového súboru) na každej stanici, najlepšie pri jej prihlasovaní do domény, aby sme ich nemuseli obchádzať viac krát. Postup pridania doménovej skupiny do štandardnej lokálnej skupiny je rovnaký ako pri pridávaní lokálnych skupín, len je potrebné zvoliť doménu, tak ako to vidno na obrázku.

Ja napríklad priraďujem skupiny TrUčitelia a Učitelia do skupiny Power Users, a Studenti do skupiny Users (ale pre niektoré predmety potrebujú kvôli programom práva Power users). Tu sa žiadne medze tvorivosti nekladú a môžete si urobiť vlastnú bezpečnostnú politiku, to však nie je cieľom tohoto môjho pojednania. Každopádne uvedené rozdelenie túto tvorivosť umožňuje.

Firewall

Možno nezaškodí spomenúť aj nastavenie firewallu. Pre svoju činnosť Samba potrebuje otvorené porty 137, 138 a 139. Ak sa pozriete do súboru /etc/services, nájdete tam:

netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
netbios-ssn 139/udp

Neviem celkom presne, prečo sú tieto porty vymenované aj pre TCP aj pre UDP. Možno práve tieto informácie vedú mnohých k ich otváraniu pre oba prenosové protokoly. Keď však podrobnejšie nazriete do dokumentácie SMB/CIFS, dočítate sa, že potrebuje pre svoju činnosť tieto porty:

  • 137/UDP – preklad mien (NETBIOS name service);
  • 138/UDP – prehliadanie počítačov v sieti (NETBIOS datagram service);
  • 139/TCP – samotné zdieľanie súborov a tlačiarní (NETBIOS session service).

Píšem o portoch, ktoré sú nutné pre funkčnosť zdieľania v sieti so starými Windows 9x. Novšie verzie už nepotrebujú tieto porty a vystačia si s portom 445/TCP priame zdieľanie súborov (SMB Direct), SMB/CIFS priamo cez TCP, bez NETBIOS. Tu len poznamenám, že toto riešenie potrebuje funkčné riešenie DNS a neposkytuje zoznam počítačov v sieti. Ak povoľujete tieto porty, nezabudnite, že bez použitia servera WINS (alebo zlom nastavení jeho použitia) sú okolité počítače zisťované broadcastmi, preto je potrebné povoliť aj broadcasty pre danú podsieť. Dajte aj pozor, že nie vždy musí byť port odosielateľa a prijímateľa rovnaký.

Záver

Tak a sme na konci. Mali by ste teraz mať funkčnú MS Windows doménu, vytvorenú pomocou súborového servera Samba. Máte používateľov rozdelených do skupín, ktoré majú rôzne prístupové práva k zdieľaným prostriedkom servera, ako aj rôzne práva na lokálnych staniciach.

Postup tu popísaný nie je jediné správne riešenie a nie je dokonca ani najlepšie riešenie. Cieľom bolo naviesť čitateľa na vytvorenie funkčného riešenia, na ktorom možno naznačiť princípy nastavenia rôznych úrovní prístupu a nastavovania domény. Určite by sa dalo nastavenie vylepšiť, napríklad použitím rôznych skriptov, napríklad na automatické pridávanie strojov do domény a podobne. Ale to ponechám na samostatné štúdium. Rovnako som sa nezmienil o nastavovaní prehliadania sete (browsing), o použití servera WINS, či o nastavení DNS tak, aby na IP adresy prekladal aj NetBIOSové mená počítačov. Úplne som vynechal prácu s tlačiarňami, hoci i to je silná stránka Śamby. Ale i tak dúfam, že tento návod niekomu pomôže.