[linux] samba a win2k

Maros Klempa klempam na protherm.sk
Středa Květen 15 13:44:27 CEST 2002


> Urobil som sambu ako domenovy radic, 98 sa mi vediat konektnut do domeny
> a 2000 nie. Popozeral som nejake manu
> aly, ale nieje mi to celkom jasne, ako sa to robi.
> pre 2000 treba vytvorit nejaky trusted ucet (smbpasswd -a -m compn).
> Ked chcem 2000 nakonfigurovat, pyta to stale nejake meno a heslo, skusal
> som tam davat uz vselico, nic nazebralo
> .
> 
> Nejlepsie keby ste mi ukazat nejaky priklad.
> Diki.
> 
> SOva
> -- 

Toto je clanok podla ktoreho som to spravil ja.

maros klempa


Linux
jako Primary Domain Controller pro síť Winodws NT

  Linux je v dnešní době celosvětově na vzestupu. První opravdu velká firma,
která ho začala brát vážně, byla IBM, časem se k ní připojily další. V
Japonsku TurboLinux dokonce překonal prodejnost Windows NT, celkem nedávno
byl představen handheld Agenda VR3 napuštěný Linuxem a mohli bychom
pokračovat přes Linux ve vesmíru ještě dlouho. Já se ale v tomto článku budu
věnovat použití Linuxu v roli Primary Domain Controlleru pro síť Windows NT.
  Postup, jak zprovoznit Linux jako PDC není složitý, ale nějaké základní
znalosti na úrovni průměrného správce počítačové sítě potřebovat budete. Ve
svém popisu se budu zabývat sítí, kde klienty tvoří výhradně Windows NT 4.0
CZ (nebo nižší). Ideální je situace, kdy síť ještě žádný server nemá, ale i
nahrazení stávajícího Windows NT 4.0 US serveru Linuxem je možné.
Předpokládám, že od Linuxu budete požadovat stejné funkce, jaké nabízí
Windows server; tedy cestovní profily, sdílené adresáře, sdílené tiskárny (i
síťové), autorizaci uživatelů atd. To všechno Linux umí. Pojďme se podívat,
jak na to.

Instalace serveru
  Na vhodný počítač si nainstalujeme Linux. Výběr budoucího serveru nechám
na Vás; pokud nebudete používat grafické rozhraní, není k tomu potřeba nijak
zvlášť silný stroj. Má osobní zkušenost říká, že server PIII 1GHz, 512MB RAM
je při 100 připojených stanicích zatížen maximálně na 3%.
  Instalaci Linuxu zde popisovat nebudu, je to věc velmi snadná. Už při
instalaci máme možnost vybrat si balíčky (programy). Pokud instalujete Sambu
přímo při instalaci Linuxu, budete mít vše snazší. Pokud jste zkušenější,
máte možnost si Sambu nainstalovat později a často i ve vyšší verzi než
jakou obsahuje oficiální distribuce, pokud jste ještě zkušenější, můžete si
stáhnout zdrojové kódy a Sambu si zkompilovat sami.
  Po instalaci následuje restart počítače.

Konfigurace Samby
  Předpokládám, že máte nainstalovaný Linux a Sambu. Váš budoucí server je
provozuschopný a připojený k síti. Přistoupíme tedy přímo ke konfiguraci
Samby. V tomto bodě budu stručný a uvedu přímo smb.conf, který sám používám.
Všechny volby jsou důkladně popsány v rozsáhlé dokumentaci (man smb.conf,
man samba, Swat help etc.). Před editací smb.confu doporučuji jeho zálohu na
smb.conf.old, protože už samotný originální konfigurační soubor obsahuje
mnoho zajímavých informací. Soubor smb.conf najdeme jako všechny ostatní
konfigurační soubory v adresáři /etc případně /etc/samba podle verze Linuxu.

# ===== Global parameters =====

[global]
client code page = 852
workgroup = DOMAIN
netbios name = linux
server string = Windows NT Server 4.2 US
encrypt passwords = Yes
update encrypted = Yes
null passwords = Yes
passwd program = /usr/bin/passwd %u
passwd chat = viz vzor
username map = /etc/samba/smbusers
unix password sync = Yes
log file = /var/log/samba/%m.log
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
load printers = No
character set = ISO8859-2
domain admin group = @adm
logon script = mount.cmd
domain logons = Yes
os level = 65
preferred master = Yes
domain master = Yes
dns proxy = No
wins support = Yes
hosts allow = 127. 10.20.30.
printing = lprng

# ===== Share Definitions =====

[homes]
comment = Home Directories
writeable = Yes
browseable = No

[netlogon]
comment = Network Logon Service
path = /etc/samba/netlogon
write list = root
guest ok = Yes
share modes = No

[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No

[pchome]
comment = PC Directories
path = /home/machine/%m
writeable = Yes

[public]
comment = For all users
path = /pub/public
writeable = Yes
guest ok = Yes

[install]
comment = Software and Drivers
path = /pub/install
write list = @adm, root

[Dokumenty]
comment = Share Dokument's
path = /pub/Dokumenty
writeable = Yes

[HPLJ2100]
comment = Hewlett Packard LaserJet 2100 TN
path = /var/spool/samba
printable = Yes
postscript = Yes
printer = lp0
printer driver = HP LaserJet 2100 Series PS

[HPLJ5]
comment = Hewlett Packard LaserJet 5Si
path = /var/spool/samba
printable = Yes
printer = lp1
printer driver = HP LaserJet 5Si
printer driver location = \\linux\install\WinNT\i386

[HPLJ4]
comment = Hewlett Packard LaserJet 4 Plus
path = /var/spool/samba
printable = Yes
printer = lp2
printer driver = HP LaserJet 4 Plus
printer driver location = \\linux\install\WinNT\i386

[Xerox]
comment = Canon GP160
path = /var/spool/samba
printable = Yes
printer = lp3


Zajímavé parametry
client code page = 852 nastavuje kódovou stránku klienta
character set = ISO8859-2 kódová stránka serveru (čeština v názvech)
domain admin group = @adm skupina s právy administrátora
security = user určuje, že Linux bude ověřovat NT uživatele

Konfiguraci si na závěr necháme zkontrolovat programem testparm

Spuštění serveru
  Nyní můžeme spustit náš nový Primary Domain Controller. Spouštěcí script
najdeme v adresáři /etc/rc.d/init.d. Napíšeme ./smb start a po potvrzení
můžeme nechat Windows náš nový server vyhledat na síti. Spuštění Samby lze
provést také příkazem samba start, vypnutí samba stop, samba restart ukončí
Sambu a znovu ji nastartuje. To je vhodné, pokud chceme uvést v platnost
nějaké změny v konfiguraci.
  Server nám tedy běží, vidíme ho v okolních počítačích, ale když na něj
klikneme, dozvíme se, že je chybné heslo nebo neznámé uživatelské jméno. To
je v pořádku, protože jsme ještě nezaložili žádné uživatele.




Založení uživatelů
  Samba, pokud sama ověřuje uživatele, používá svůj vlastní soubor hesel,
jiný než je v /etc/passwd. Nic jiného jí totiž nezbývá, hesla ve Windows a v
Linuxu nejsou vzájemně kompatibilní. Tento soubor má jméno smbpasswd a
najdeme ho v adresáři /etc případně jinde.
  My tedy musíme založit uživatele v samotném Linuxu a také v Sambě. Navíc
budeme muset založit účty počítačů. Uživatelské účty se v Linuxu zakládají
příkazem useradd, v Sambě smbadduser a pro založení účtů počítačů použijeme
příkaz smbpasswd.

  Na příkladu si ukážeme založení účtu počítače PC01 a uživatele pana
Nováka.


  a.. useradd -u 1000 -g 1000 PC01$ -d /home/machine/pc01 -m -k /dev/null -c
"machine account" -s /bin/false
  b.. smbpasswd -a -m PC01$
  c.. useradd -u 500 -g 100 -G 705,710 -s /bin/false -c "Jan Novak" novak
  d.. smbadduser novak:novak

  První příkaz useradd založí v Linuxu účet počítače PC01 s UID 1000, GID
1000, vytvoří mu home adresář v /home/machine/pc01, do něj nenakopíruje nic,
dá mu komentář machine account a jako shell nenastaví nic. Home adresář není
v případě účtů počítačů potřeba zakládat vůbec, ale prázdné adresáře
nezabírají na disku téměř žádné místo, Samba je podporuje, tak proč je
nevytvořit?
  Příkaz smbpasswd založí účet počítače PC01 pro Sambu s příznakem, že jde o
účet počítače. V souboru smbpasswd ho poznáte podle W v hranatých závorkách.
  Další příkaz useradd založí v /etc/passwd účet uživatele pana Nováka, dá
mu UID 500, zařadí ho do skupiny 100 (users) a dalších skupin 705, 710
(které si volitelně vytvoříte příkazem groupadd -g 705 název_skupiny),
nastaví mu shell na žádný a přidá jeho jméno a příjmení jako komentář.
Poslední příkaz smbadduser přidá pana Nováka do souboru smbusers.
  Možná Vás na první pohled zarazí nastavení shellu na /bin/false, ale to se
vzhledem k předpokládanému použití serveru jako PDC z důvodu bezpečnosti
silně doporučuje. Navíc nepředpokládáme, že by si pan Novák chtěl
programovat v příkazové řádce. Pokud by tomu někdy bylo jinak, lze to
kdykoli dodatečně změnit.
  Více se těmto příkazům věnovat nehodlám, všechny mají své manuálové
stránky a konkrétní použití si tedy můžete upravit podle svých vlastních
potřeb.

  Předpokládám, že budete zakládat (stejně jako já) větší než malé množství
účtů a tak by Vám mohly přijít vhod scripty pro ulehčení práce.

Zde jsou:

Script pro založení účtů počítačů v Linuxu i Sambě

POCET=0
while [ $POCET -le 98 ]
do
  POCET=`expr $POCET + 1`
  if [ $POCET -lt 10 ]
  then
     POCET="0"$POCET
  fi
  POM=`echo "PC$POCET$"`
     useradd -u 10$POCET -g 1000 $POM -d /home/machine/pc$POCET -m -k
/dev/null -c "machine account" -s /bin/false
#    userdel -r $POM
     smbpasswd -a -m $POM
#    smbpasswd -x $POM
#    chown -R $POM:machine /home/machine/pc$POCET
done
#exit 0

Script předpokládá existenci adresáře /home/machine
Bystří čtenáři si povšimnou zakomentovaných řádků a napadne je, že script má
širší použití.


Jednorázový script pro založení uživatelů v Linuxu

bbb="aa"
POCET=0
exec < users.sort
while [ "$bbb"x != "x" ]
do
  read bbb
  if [ "$bbb"x != "x" ]
  then
    POCET=`expr $POCET + 1`
    if [ $POCET -lt 10 ]
    then
      POCET="0"$POCET
    fi
     p1=`echo $bbb | cut -f1 -d':'`
     p2=`echo $bbb | cut -f2 -d':'`
     echo $p1
     echo $p2
     echo $POCET
     useradd -u 5$POCET -g 100 -G 705,710 -s /bin/false -c "$p2" $p1
  fi
done

  Tento script automaticky založí všechny uživatele v Linuxu. Parametr –G u
příkazu useradd přidá uživatele do dalších skupin než je skupina users (GID
100). Doporučuji tedy před projetím scriptu poeditovat vhodně soubor
/etc/group.
  Script předpokládá existenci souboru users.sort ve stejném adresáři.
Soubor users.sort je setříděný textový soubor se jmény uživatelů ve tvaru
login:jméno příjmení (další řádka).

Např.
novak: Jan Novak
blazkova: Helena Blazkova
dolezal: Karel Dolezal
atd.


Script pro přidání uživatelů do souboru smbpasswd

POCET=0
LOGNAME=`cat users.sort | awk -F":" '{printf $1 "\n"}'`
    for USER in $LOGNAME
 do
 POCET=`expr $POCET + 1`
 if [ $POCET -lt 10 ]
 then
     POCET="0"$POCET
 fi
# userdel -r $USER
  smbadduser $USER:$USER
# chown -R $USER:users /home/$USER
done

  Script požaduje pro každého uživatele zadání hesla. Máte-li uživatelů
hodně, neobtěžujte se s tím a klidně každému nastavte jako heslo jakýkoli
jeden znak. Uživatelé si mohou své heslo potom změnit přímo z Windows. Pro
hesla ale platí jistá bezpečností pravidla, takže Linux např. prázdné heslo
neakceptuje.

Na závěr přidáme uživatele root a nobody
smbadduser root:root
smbadduser nobody:nobody

Připojení počítače do domény
  Všimněte si, že poslední restart serveru jsme provedli po instalaci
Linuxu. No tak to byla jen taková vtipná poznámka pro fandy Windows, pojďme
dál. Takže v tomto okamžiku máme plně funkční server, ke kterému se můžeme
připojit z Windows. Pro připojení po nás však bude vyžadovat heslo. Nastává
druhá část naší práce a tou je zařazení Windows stanice do domény, kterou
spravuje náš nový linuxový server.




  Na počítači s operačním systémem Windows NT se přihlásíme jako
administrator, klikneme na tlačítko Start, vybereme nastavení, ovládací
panely. V nově otevřeném okně klikneme na ikonku síť. První záložka
identifikace obsahuje kolonky název počítače a doména. Klikneme na tlačítko
změnit. Zapíšeme údaje o názvu počítače a domény v souladu s těmi, které
jsme předtím zadali do Linuxu. Počkáme na přivítání domény, restart, hotovo.




Bonus: Swat
  Samba umožňuje i konfiguraci via www. K tomu byl napsán program swat
(Samba Web Administration Tool). Většina distribucí má po instalaci Swat
zakázaný, takže budete-li ho chtít používat, musíte ho povolit. To se dělá v
souboru inetd.conf prostým umazáním komentáře na začátku řádku. U novějších
distribucí ho uvolníte v souboru /etc/xinetd.d/swat. Aby se změny projevily,
musíte restartovat síť (/etc/rc.d/init.d/inet stop/start).
  Potom již ve svém oblíbeném www prohlížeči (doufám, že to není ten děravý
MSIE) nastavíte adresu svého linuxového serveru s portem 901 a vesele
konfigurujete, sledujete provoz atd. Navíc zde máte bohatou nápovědu k celé
Sambě, prostě pohoda.

FAQ
Jak mám editovat soubor smb.conf?
Editaci souboru smb.conf můžete provést editorem vi nebo v Midnight
Commanderu (obdoba Norton Commanderu pro Linux). Můžete si také můj smb.conf
zkopírovat přímo ze stránky a přenést ho s použitím ftp na místo vzorového.


Nemohu připojit počítač s Windows95...
Pokud jste udělal vše přesně podle mého popisu, je to tak. Pro připojení
počítače s Windows95 je nutné do smb.confu přidat řádky
password level = 8
username level = 8
Ty zajistí, že Samba bude při autorizaci počítače zkoušet zaměňovat malá a
velká písmenka v uživatelském jménu a heslu. Je to proto, že Linux odjakživa
rozeznával malá a velká písmenka zatímco Windows ve svých různých verzích
zkoušely různé postupy autorizace. Tyto řádky jsem do svého smb.confu
nezařadil, neboť se tím výrazně snižuje bezpečnost systému a navíc sám
naštěstí žádné počítače s W9x ve své síti nemám. Více informací Vám jistě
rádi poskytnou na hotline Microsoftu.

Je nutné při změně konfigurace Samby restartovat server?
Ne. Viz samba restart.

Mají účty počítačů na konci opravdu dolar nebo jsem moc pil?
Ano, účty počítačů mají na konci znak $. Podle toho Samba rozeznává
uživatelské a počítačové účty. Při výpisu uživatelů ve Windows se pak účty
počítačů nezobrazí.

Nemohu najít soubor smb.conf...
Různé distribuce se od sebe mohou lišit, soubory mohou být na jiných místech
než zde uvádím, ale logika zůstává vždy stejná. Pokud nebudete moci najít
jakýkoli soubor, můžete si ho nechat vyhledat příkazem find.
Např.: find / -name *smb*conf* -print

Nefungují mi souborová práva NTFS.
Mě také ne a nevadí mi to. S právy RWX si docela dobře vystačím. Jinak mám
pocit, že se Linux nechá zlomit pro NT práva; podívejte se na nt acl
support.

Chtěl bych do domény připojit i počítače s Windows2000.
Tak na to Vám můj návod nestačí. Win2K mají totiž opět nový způsob
přihlašování do domény. Měla by ho zvládat nedávno nově vydaná Samba 2.2.0.
Zajímavý je i tento link.

K čemu je ve Vašem smb.confu sdílení netlogon?
Tam si nakopírujte svůj vlastní script, který budete chtít spouštět při
každém přihlášení stanice do sítě. Šikovně tak lze zautomatizovat kopírování
různých nových verzí SW pro Windows. Také tam můžete umístit soubor
Ntconfig.pol a tak nastavit zabezpečení Windows. A nebo můžete všechny
položky kolem netlogon zakomentovat a nechat to plavat.

Mohu Linux používat jako printserver?
Ano a to celkem snadno. Popis jak připojit a sdílet síťové tiskárny jsem
uveřejnil již dříve na hardware.penguin.cz - tiskárny - Hewlett Packard -
LaserJet 5Si

Funguje mi to a mám další vychytávky...
Napište mi o tom, rád se na to podívám.

Vůbec mi to nefunguje!!!
Mě to funguje. Chyba bude mezi klávesnicí a židlí.

Mohu v Linuxu spustit svůj oblíbený M$ Word?
Linux není Windows a ani to, že umí zastoupit Windows NT server z něj o nic
víc Windows nedělá. Word v něm přesto spustit můžete, podívejte se na Wine;
ale to sem jaksi nepatří.

Nemohu vyhodit Windows NT server, běží mi na něm Exchange...
Ale můžete. Pro Linux existuje celá řada velmi kvalitních mail serverů jako
např. Qmail, umí dělat firewall, www server, DNS server, má dobrý databázový
program MySQL a řadu dalších. Navíc je docela zdarma.

Mohu mít na Vás nějaký dotaz?
Ano, pokud jste na svůj dotaz nenašel odpověď v manuálech, dokumentaci,
knížce Začínáme s Linuxem, konferenci o Linuxu nebo jinde. Je však velmi
pravděpodobné, že pak Vám asi neporadím ani já...

Tento návod byl testovaný na Sambě 2.0.7 a WinNT.


Poděkování
Jirkovi Kubištovi za scripty.
Týmu programátorů Samby a všem vývojářům Linuxu.
Lidem z konference cz.comp.linux za rady a pomoc.
Radiu1 za dobrou hudbu k práci a Microsoftu za jejich štvavou kampaň, která
mne definitivně přesvědčila.






Další informace o konferenci linux