Portál AbcLinuxu, 18. dubna 2024 20:10

Tlusté klienty ve školní učebně

2. 4. 2007 | Zdeněk Štěpánek
Články - Tlusté klienty ve školní učebně  

Článek lehce navazuje na návod k NIS+NFS+LTSP. Minule jsme nakonfigurovali Linuxový počítač tak, aby se na něj šlo přihlásit jménem a heslem ze serveru. Dnes tento počítač téměř bezpracně naklonujeme na prakticky neomezené množství stanic.

Co je vlastně tlustý klient?

Princip je velmi jednoduchý. Systém není uložen na lokálním pevném disku, ale na serveru v síti, a tak všechny stanice sdílejí jeden disk s jedním systémem. Použité protokoly a služby jsou jen DHCP, TFTP a NFS, takže nic složitého.

Start systému krok za krokem

  1. Start BIOSu a inicializace PXE stacku nebo etehrbootu uloženého v BIOSu, síťovce, floppy, HDD, CD nebo kdekoliv na lokálu.
  2. PXE stack si lízne z DHCP IP adresu, jméno etherboot souboru a přes TFTP ho stáhne. Pokud máte etherboot na lokálu, tento krok se nekoná. Zájemce o PXE odkáži na externí dokumentaci, já to testoval jen jednou.
  3. Etherboot se spustí, z DHCP si (opět) lízne IP adresu a jméno souboru s jádrem. To se přes TFTP stáhne a spustí.
  4. Jádro není klasické linuxové jádro, ale tzv. NBI jádro, tedy samotné jádro s přibaleným initramdiskem v jednom souboru.
  5. Jádro se spustí, rozbalí si initramdisk, nahraje ovladače pro síťovku a podle konfigurace, kterou si NBI jádro nese s sebou, nakonfiguruje síť (typicky opět přes DHCP) a přes NFS připojí kořenový svazek.
  6. Jakmile jádro běží a máme připojený kořen, už startuje distribuce, tedy typicky /sbin/init se svými barevnými výpisy nebarevných skriptů.
  7. V průběhu spouštění služeb přijde na řadu i tzv. "ThickScripts" systém, tedy moje sada prozaických skriptů s kryptickým názvem.
  8. ThickScripts se postarají o vytvoření ramdisku pro adresáře, které musí mít každá stanice jen pro sebe, které nelze sdílet.
  9. ThickScripts ještě provede rozmanité úkony vztahující se ke konkrétní stanici (konfigurace X, zavedení ovladačů pro lokální HW, nastavení zvuku, spuštění démonů atd) a dále pokračuje boot ostatních služeb v režii distribuce.
  10. Zobrazí se KDM nebo cokoliv jiného a voilà...

Jdeme na to

Etherboot

Etherboot je program, který obsahuje ovladač pro síťovku, DHCP klienta a TFTP klienta. Roste na adrese www.rom-o-matic.net. Je možné ho získat v mnoha variantách - podle toho, odkud bude startovat. Nejdůležitější jsou asi varianty pro floppy disk, LILO/GRUB/SYSLINUX formát a PXE formát. Pro test je nejvhodnější použít obraz pro disketu, stačí ho pomocí

dd if=etherboot.zdsk of=/dev/fd0

nahrát na disketu a nabootovat. Později si popíšeme elegantní řešení multibootu s Windows pomocí GRUBu. Na zmíněné webové stránce je potřeba zvolit konkrétní model síťové karty, formát etherbootu podle zvoleného média a je dobré ještě otevřít rozšířené vlastnosti, kde se první políčko ptá na timeout; je vhodné nastavit -1 a timeout vypnout, aby se ihned bootovalo ze sítě bez ptaní. Možnost výběru bootování z HDD/Floppy/Sítě není v etherbootu moc dobrá, protože je čistě textová a to by dnes při snaze prosadit Linux neuspělo. A navíc mi to moc nefungovalo.

Máme tedy etherboot na disketě. Zkuste z ní nabootovat. Etherboot se musí ohlásit, najít síťovku, ukázat MAC adresu a snažit se z DHCP získat IP adresu. Pokud používáte nejrozšířenější DHCP server, tedy linuxový ISC DHCPd, je nutné stanici definovat napevno, tedy svázat MAC a IP. Jinak se bude etherboot tvářit, že DHCP server nefunguje, jakoby stále vyhledává, až skončí na timeoutu. U DHCP serveru na Windows Server 2003 toto není nezbytně nutné: pokud definujeme jméno souboru a kořenovou cestu (probereme za chvíli) jako parametry pro celý obor, etherboot adresu dostane.

Do DHCP musíme přidat 3 informace. První je adresa TFTP serveru, druhá je jméno bootovacího souboru, tedy odkud má etherboot stáhnout linuxové jádro, a poslední je NFS adresa kořenového filesystému. Ukázky vydají za tisíc slov:

ISC DHCPd

host tlustoch1 {
 hardware ethernet 00:01:02:B1:43:A3;
 fixed-address     192.168.10.10;
 next-server 192.168.10.2;
 filename "/tftpboot/lts/zavadec.nbi";
 option root-path "192.168.10.2:/";
}

Direktiva next-server určuje adresu TFTP serveru pro případ, že by byla odlišná od adresy brány. Filename je jméno NBI jádra a root-path je cesta, odkud si Linux připojí root filesystém. Není nezbytně nutné použít přímo / ze serveru, je možné mít v adresáři připravenou nějakou jinou distribuci.

Jako perličku k samostudiu přikládám rezervaci pro klienta používajícího PXE. Princip je stejný, jen se nejprve stáhne samotný etherboot a ten až potom stáhne NBI jádro.

host xltest {
 hardware ethernet 00:04:76:9B:99:2E;
 fixed-address     192.168.10.11;
 next-server 192.168.1.10;
 if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
  filename "/tftpboot/lts/etherboot.zpxe";
 } else if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
   filename "/tftpboot/lts/zavadec.nbi";
 }
}

Windows Server

tluste klienty: windhcp

Důležité jsou parametry 17, 66 a 67. Parametr 66 je analogií k next-server. Možnosti je možné definovat jak pro celý obor (ozubená kolečka), tak pro každého klienta zvlášť (ozubený počítač). Já osobně mám celý obor nastaven pro tenké klienty a tlustým klientům přenastavím parametr 17 a 67. Jestli jde pomocí Windows serveru bootovat klienty pomocí PXE, jsem nezjistil, ale podle toho, co jsem naklikal, to zřejmě nejde; nikde není k vidění možnost odesílat různá jména souborů podle toho, kdo se ptá. Případně mě prosím v diskuzi opravte, tenhle systém používám jen z donucení.

Pokud máme konfiguraci DHCP hotovou, etherboot musí dostat z DHCP IP adresu a začít pomocí TFTP stahovat soubor, což se mu ze zjevných příčin zatím nepodaří.

TFTP server

TFTP je věc vcelku jednoduchá. Je potřeba mít TFTP server nainstalovaný a spustit:

in.tftpd -l /tftpboot/lts/ -r blksize

Uvedená cesta definuje adresář, ze kterého lze stahovat soubory. Vzhledem k absenci jakékoliv bezpečnosti u TFTP nedávejte do adresáře zbytečnosti. V konfiguraci DHCP ale musí být absolutní cesta, tedy včetně /tftpboot/lts/. Parametrem -r lze zapnout různé workaroundy pro bugovité implementace TFTP klienta. To sice není problém etherbootu, ale zůstalo mi to tam po testech PXE se síťovkami od Intelu a 3comu.

NBI jádro

Zde se již dostáváme k distribučně závislým věcem. Já jedu na Arch Linuxu a jedno z přání při implementaci tlustých klientů bylo použití distribučního jádra bez jakýchkoliv úprav. Jádro z Archu splnilo mé požadavky na výbornou. Neručím tedy za to, že to bude fungovat i s výchozími jádry jiných distribucí. Jak jsem již předeslal, NBI jádro je vlastně běžné linuxové jádro slepené s initramdiskem. Nejprve si tedy vyrobíme initramdisk tak, aby obsahoval ovladače pro všechen možný hardware.

Konfigurace pro mkinitcpio - mkinitcpio-kernel26.conf:

MODULES=""
FILES=""
HOOKS="base net udev ide scsi sata usbinput raid filesystems"

A initramdisk vytvoříme:

mkinitcpio -c mkinitcpio-kernel26.conf -g init.cpio.gz

Jádro použijeme výchozí z distribuce, tedy /boot/vmlinuz26 a výsledné NBI jádro nasypeme rovnou, kam patří. NBI jádro vytvoříme tímto příkazem:

mkelf-linux /boot/vmlinuz26 init.cpio.gz \
 --append="ip=:::::eth0:dhcp vga=773 quiet" \
 --output=/tftpboot/lts/zavadec.nbi

Soubor init.cpio.gz můžeme teď klidně smazat. Vysvětlení určitě zaslouží direktiva --append. Především říká jádru, že si má nakonfigurovat síťovku eth0 pomocí dhcp. Zárověň to implikuje snahu o připojení kořenového filesystému přes NFS. Že jádro použije mód s vyšším rozlišením a při bootu nebude ukecané, jsou už věci vcelku podružné. K dalšímu studiu doporučuji soubor /usr/src/linux/Documentation/nfsroot.txt.

V tuto chvíli by mělo jádro na klientech startovat, získat IP adresu (konfigurace se vypíše na monitor) a snažit se připojit kořenový filesystém přes NFS, na čemž dojede. Pokud tedy nedojede poněkud dříve, můžeme přikročit ke konfiguraci NFS.

NFS server

O připojování NFS oddílů jsem již něco napsal v prvním dílu seriálu o NIS+NFS, takže jen stručně. U tlustých klientů je nesmírně důležitá rychlost komunikace mezi klientem a serverem, protože pomalý disk je katastrofa a pomalé NFS je katastrofa ještě horší.

/etc/exports:

/ 192.168.0.0/255.255.0.0(rw,no_root_squash,sync,subtree_check)

9 z 10 zarytých linuxáků se nyní musí ježit vlasy hrůzou na hlavě a ježí se správně. Pokud by si někdo do sítě připojil počítač s vlastním rootem a připojil se na naše NFS, má roota i na serveru. Pokud pomineme omezení na hardwarové úrovni, tak správným řešením je jednak omezit povolené IP adresy na co nejmenší rozsah, (případně nesdílet kořenový oddíl serveru, ale mít distribuci v adresáři a sdílet ten), squashovat roota a v této distribuci mít roota s UID 65535. Nedokážu si představit, co by se dělo, kdyby se démony pod rootem na stanici nemohly dostat ke svým datům na serveru. Potenciální útočník bude moci zkompromitovat distribuci v adresáři, ale ne hlavní systém. Je možné také adresář nasdílet jen pro čtení, ale to by vyřešilo z části jeden problém a přineslo jiné. Nápady na zabezpečení jsou vítány.

S NFS sice nejsme moc spokojeni, ale funguje. V tuto chvíli by měla již distribuce nabootovat až k loginu, i když je možné, že to během bootu zakřičí několik chyb. To proto, že se teď 2 instance téhož systému perou o adresáře /var/run apod. Jedna na serveru a druhá na klientu. Proto přichází na scénu sada skriptů s názvem ThickScripts.

ThickScripts

Principy a cíle

Obecně platí, že každý linuxový systém musí mít adresář /var připojen i pro zápis a nemůže být sdílený. Toto pravidlo není nutné, ba ani vhodné aplikovat na celý /var, ale jen na některé podadresáře, např /var/log, /var/run atd. Nabízejí se 2 řešení. Jednak můžeme mít soubor obsahující filesystém a ten mít extra pro každou stanici a vždy si ho připojit, nebo použít ramdisk a vždy při startu systému v ramdisku vytvořit potřebnou adresářovou strukturu. Já jsem zvolil řešení s ramdiskem. Výhodou je jednodušší implementace, nevýhodou zase to, že vše v ramdisku se při vypnutí ztratí - ale mrzet by nás mohly leda tak logy. ThickScripts vytvoří ramdisk v adresáři /thickramdisk, uvnitř připraví adresářovou strukturu a jednotlivé adresáře se bindují na svá místa ve /var, kde přebijí sdílené adresáře ze serveru.

Další důležité věci, které ThickScripts řeší, je např. pokus o nalezení SWAP oddílu na HDD a jeho připojení, zkopírování správného xorg.conf do /etc/X11/, nastavení hostname na tvar 192-168-22-33, nastavení zvuku, atd.

All, host, default - skripty

ThickScripts v principu není nic jiného než několik málo bashových skriptů. Jako první se zavádí skript all. V něm je právě již zmíněné vytvoření ramdisku, připojení SWAPu atd. Následuje zjištění IP adresy klienta a pokus o nalezení skriptu, který je pojmenován stejně jako zjištěná IP adresa. Pokud ho najde, tak ho spustí. Pokud ho nenajde, spustí skript s názvem default. Já tyto skripty spouštím i na serveru; mám tím zaručené jednotné prostředí a jistotu, že to funguje.

Jak jsem již předeslal, používám distribuci Arch Linux, tak je ThickScripts postaven pro Arch. Ale po drobných úpravách není problém to spustit i na jakékoliv jiné distribuci. Distribučně závislé jsou v podstatě 2 věci. Jednak prvotní skript thickscripts, který je v adresáři /etc/rc.d a chová se jako služba. Systém ho spustí hned po inicializaci sítě. Tam jsou příkazy stat_busy a stat_done, která zajistí obarvení výstupu dle zvyklostí distribuce. Lze je klidně vypustit, stejně tak jako includování konfiguračních souborů Arch Linuxu.

/etc/rc.conf:

...
#   - prefix a daemon with a @ to start it up in the background
#
DAEMONS=(syslog-ng network thickscripts portmap ...

# End of file
...

/etc/rc.d/thickscripts:

#!/bin/bash

. /etc/rc.conf #arch-specific
. /etc/rc.d/functions #arch-specific

TSPATH="/thickscripts"

case "$1" in
  start)

    stat_busy "Starting ThickScripts" #arch-specific
    echo "ThickScripts: loadings system settings for all hosts"
    $TSPATH/all
    echo "done"
    echo
    IP=`ip a s eth0 | grep -m 1 "inet " | cut -d " " -f 6 | cut -d / -f 1`
    if [ -f $TSPATH/$IP ]; then
     echo "ThickScripts: loading system settings for $IP"
     $TSPATH/$IP
    else
     echo "ThickScripts: system settings for $IP not found, using defaults"
     $TSPATH/default
    fi
    echo "done"
    stat_done #arch-specific
    ;;
  stop)
    stat_busy "Stopping ThickScripts" #arch-specific
    echo "Nothing to stop..."
    stat_done #arch-specific
    ;;
  *)
    echo "usage: $0 {start|stop}"
esac
exit 0

Druhá distribučně závislá věc je samotný skript all, protože tam je nutné vypsat jaké adresáře se budou připojovat z ramdisku. Pokud si nainstalujete nějaký program a ten bude vyžadovat adresář /var/log/program, je nutné provést změnu v tomto skriptu.

/thickscripts/all:

#!/bin/bash

#do not remove this entry, only edit, please
TSPATH="/thickscripts"
RAMDISK="/thickramdisk"

swapdsk=`fdisk -l | grep -m 1 "Linux swap" | cut -d " " -f 1`

if [ ! $swapdsk == "" ]; then
echo "Activating swap $swapdsk"
/sbin/swapon $swapdsk
fi

IP=`ip a s eth0 | grep -m 1 "inet " | cut -d " " -f 6 | \
    cut -d / -f 1 | sed 's/\./-/g'`
hostname $IP

mkdir -p $RAMDISK
mount -t tmpfs none $RAMDISK


cp -f $TSPATH/xorg.conf-default $RAMDISK/xorg.conf
rm -f /etc/X11/xorg.conf
ln $RAMDISK/xorg.conf /etc/X11/xorg.conf -s


mkdir -p $RAMDISK/var/run/
mount -o bind $RAMDISK/var/run/ /var/run/
mkdir /var/run/avahi-daemon
mkdir /var/run/cups
...
...

Nakonec se spustí skript s názvem jako IP adresa, případně skript default. Zde je příklad. Za zmínku stojí nastavení konfiguračního souboru xorg.conf. Skript all vezme výchozí konfigurační soubor (měl by tak nějak fungovat všude) a pod jménem xorg.conf ho nakopíruje do ramdisku, smaže soubor nebo symlink v /etc/X11/ a z tohoto adresáře udělá symlink na právě zkopírovaný soubor. Pokud chceme použít jinou než výchozí konfiguraci, stačí přepsat soubor v ramdisku. Jelikož symlink vede do lokálního ramdisku, není třeba se obávat restartu X na klientovi, použije se vždy správný soubor.

/thickscripts/192.168.3.19:

#!/bin/bash

#do not remove this entry, only edit, please
TSPATH="/thickscripts"
RAMDISK="/thickramdisk"

# ### ---insert your own rules bellow this line--- ###

/sbin/modprobe floppy

cp -f $TSPATH/xorg.conf-nv $RAMDISK/xorg.conf

Kde získat

Domovskou stránku projekt nemá. Balík ThickScripts je ve stavu, jak teď funguje (čili včetně konfigurace mých klientů), ke stažení zde: thickscripts.tar.bz2.

Multiboot s GRUB

Systém funguje, ale má jednu zásadní nevýhodu, bootuje pořád z diskety, což není vždy ideální; navíc u tlustých klientů lze disketovku normálně používat. Bohužel ve školním prostředí bychom asi tvrdě narazili na nepochopení z řad vedení, kdyby na počítačích nebyl systém Windows, proto nakonfigurujeme multiboot. Přítomnost harddisku v počítači je výhoda, mimo jiné na něm můžeme mít SWAP. Při instalaci Windows stačí myslet a nechat na disku 500 MB volných.

Já jsem si modifikoval SLAX Linux na CD, přidal jsem oficiální balíček s Grubem a ještě vytvořil vlastní balíček, ve kterém byl /boot/grub z Arch Linuxu, včetně konfiguračního souboru. Ten byl pozměněný, aby primárně startoval Windows a na druhém místě byl Linux. Timeout jsem zvolil 20 sekund. Etherboot se startuje stejně jako linuxové jádro, jen nemá žádné parametry ani initramdisk. Po běžné instalaci Windows jsem tedy nabootoval SLAX, s pomocí skriptu vytvořil 50MB ext2 oddíl a zbytek jako swap. Typicky hda1 - Win, hda2 - ext2 a hda3 - swap. Na ext2 oddíl jsem pak nakopíroval /boot/grub a do /boot nakopíroval etherboot. Nezapomeňte, že etherboot musí být vytvořen jako LILO/GRUB/SYSLINUX typ a pro síťovku, která je zrovna v počítači. Nakonec stačilo:

grub-install --root-directory=/mnt/hda2 /dev/hda

Modul pro SLAX obsahující etherboot pro "3c90x" a "tulip" mohu poskytnout. Jinak stačí využít linux-live, kde jsou skripty pro převod adresáře na SLAX balíček a opačně.

Skript pro zjednodušení instalace:

umount /mnt/hda*
echo "hda2 - Linux"
echo "hda3 - Linux swap"
fdisk /dev/hda
mke2fs /dev/hda2
mkswap -v1 /dev/hda3
mkdir /mnt/hda2
mount /dev/hda2 /mnt/hda2
mkdir /mnt/hda2/boot
mc

Rozšíření systému

V současné chvíli se distribuce ze serveru duplikuje na klienty, ale to v řadě případů nestačí. Museli bychom mít uživatele na serveru, což sice můžeme, ale lze použít i NIS+NFS popsané v odkazovaném seriálu. Prima věc je, že pokud to rozjedeme na serveru, ypbind a připojení /home se bez práce provede i na klientech - ale nezapomeňte, že od teď se na hlavní server bude připojovat ne jeden klient, ale celá řada. Tentýž server lze zároveň použít jako LTSP server a v podstatě bezpracně zlinuxovat jak učebnu se starými počítači, tak i novou od Indoše, což je typická situace na řadě škol.

Související články

NFS+NIS+LTSP - přihlašování na server
NFS+NIS+LTSP - přihlašování na server - II
Seriál: Domácí síť
Seriál: Linuxové DMZ
Seriál: Soukromá síť
Seriál: Stavíme bezdrátovou síť
Linux Terminal Server Project - I
Linux Terminal Server Project - II
Chroot prostředí - I
Chroot prostředí - II
Čo keď nechodí sieť?
Ako funguje e-mail
Mailserver s odvirováním pošty
Jemný úvod do adresace v protokolu IP verze 4

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

Diskuse k tomuto článku

2.4.2007 01:04 Michal
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Odpovědět | Sbalit | Link | Blokovat | Admin
Pri pouziti zivotne formy klientu by clanek vypadal mnohem interesantneji. Uz jenom ten nadpis "Tlusti klienti ve skolni ucebne" by vypadal naprosto uchvatne. Skoda no...
2.4.2007 09:43 ondrasheq | skóre: 1
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
...by vypadal uchvatne, za to ted vypada dost debilne - vypada to, jak ctvrty pad
3.4.2007 17:09 Leoš Literák | skóre: 74 | blog: LL | Praha
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Zato nadpis Tlusti hradi by se vyjímal :-)

PS uznavám, že to bije do očí
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
2.4.2007 07:25 CET
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Odpovědět | Sbalit | Link | Blokovat | Admin
"Obecně platí, že každý linuxový systém musí mít adresář /var připojen i pro zápis a nemůže být sdílený. Toto pravidlo není nutné, ba ani vhodné aplikovat na celý /var, ale jen na některé podadresáře, např /var/log, /var/run atd. Nabízejí se 2 řešení. Jednak můžeme mít soubor obsahující filesystém a ten mít extra pro každou stanici a vždy si ho připojit, nebo použít ramdisk a vždy při startu systému v ramdisku vytvořit potřebnou adresářovou strukturu. Já jsem zvolil řešení s ramdiskem."

Nabizeji se celkem 3 reseni, dve jak pises a dalsi pomoci UnionFS, ktery je IMO nejlepsi. Take jsem zkousel delat v ramdisku adresare, do nich pak mountit prislusne adresare ze serveru pres NFS (protoze ne vsechny ruzne adresare je mozne jen tak potom smazat), ale nebylo to ono, protoze pri dalsim pridanim adresare jsem musel menit linuxrc v initrd (reseni se souborem to sice trosku zjednodusuje), navic soubor asi pres NFS nepripojis (ted nevim, nezkousel jsem -o bind na NFS) a pokud jsem mountil adresar do ramdisku a pak delal symlinky, tak to zase nedelalo dobre nekterym init skriptum, ktery chtely pracovat primo se souborem.

Ja osobne jsem to resil tim UnionFS, kde jsem zmenovy adresar (RW) vytvarel pro kazdou MAC adresu zvlast (samozrejme automaticky pri startu initrd na NFS readwrite oblast). Vyhoda je, ze nemusim nic menit v zakladni distribuci sdilene pres NFS, nechal jsem i originalni init skripty, pritom jsem ale pro kazdou stanici mohl mit uplne jine nastaveni (kazda stanice mela v UnionFS vlastni konfiguracni soubory pouze ty, ktere byly ruzne a pripadne mely pozapinane/povypinane jine sluzby). Vyhoda 100%=zadna ztrata dat, vlastni konfigurace stanice, originalni zpusob spousteni. Muzes mit i 3 stupnovy UnionFS=originalni distro (Readonly), tvoje konfigurace (readonly), uzivatelske zmeny v systemu (read-write). Pak si i uzivatel na stanici muze delat bordel, do puvodniho distra nezasahne (readonly NFS), a kdyz se ti ty uzivatelske zmeny nelibi, nebo to rozhodi startovani ty stanice, tak ten adresar proste smaznes. Popremyslej jeste o tom UnionFS, urcite by ti to hodne veci ulehcilo.

"V současné chvíli se distribuce ze serveru duplikuje na klienty, ale to v řadě případů nestačí. Museli bychom mít uživatele na serveru, což sice můžeme, ale lze použít i NIS+NFS popsané v odkazovaném seriálu."

No, pokud mas pres NFS pripojeny cely "/", tak nepotrebujes NIS, protoze mas pristupny i uzivatele (ja jsem mel teda na Gentoo distru sdilenej debian, tak /etc/passwd byl jiny). Ovsem pak se pres sit zrejme posila i /etc/shadow, coz neni tak super, a pokud na stanici muzou useri na roota, tak je to blby. Lepsi by bylo pouzit nejakej jinej system na auth, treba LDAP, ten se mi zda jako jednoduse nastavitelnej a dobre pracujici.
2.4.2007 11:20 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Diky za napad, vypada to velmi zajimave, nicmene nevim jestli se dostanu k pokusovani s UnionFS.

Tu zminka o NISu jsi pochopil zrejme spatne. Jde o to ze moji klienti neberou uzivatele z terminaloveho serveru ale z jinyho serveru kde je /home sdileny pres NFS a uzivatele pres NIS. Klient se tak pta primo datoveho serveru bez spoluprace terminaloveho serveru. Pokud bych mel uzivatele i data na terminalovem serveru, neni NIS potreba.

S LDAPem jsem si hral, chtel jsem ho pro sambu, mel jsem ovsem pocit velmi maleho mozku a za par dni jsem to vzdal. Slozitejsi system jsem jeste nevidel.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
2.4.2007 11:40 CET
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
"Diky za napad, vypada to velmi zajimave, nicmene nevim jestli se dostanu k pokusovani s UnionFS."

UnionFS urcite zkus, neni na tom nic tezkyho a pritom to ma upravdu super vyhody (samozrejme take svoje nevyhody, jako napr. kdyz se v /tmp zacnou hromadit soubory nulove delky, ktere oznacuji smazany realny soubor a pak jejich pocet muzes prerust velkeho poctu a ls v /tmp je hodne pomale, aspon na ext3fs, takze to chce promazavat, nebo mozna spis na /tmp pouzvat ramdisk?). Jinak je ale unionfs dobrej i pres sit. UnionFS je pouzivanej na Knoppixu i ve Slaxu (ve Slaxu o neco elegantneji nez v Knoppixu), takze vyhodny urcite bude.

"Tu zminka o NISu jsi pochopil zrejme spatne."

Aha, tak to jo, to jsem nejak asi minul. To pak samozrejme NIS.

"S LDAPem jsem si hral, chtel jsem ho pro sambu, mel jsem ovsem pocit velmi maleho mozku a za par dni jsem to vzdal."

LDAP se sambou je trosku neco jineho, pletou se tam do toho jeste ptakoviny od M$:) SamAccount, ruzny ty jejich trapny ID:) ale i tak to neni slozite. LDAP pro linux autentizaci je uplne v pohode, proste nastavit nss-ldap a pam-ldap, pak zmena v /etc/nsswitch.conf, ve LDAP strome PosixUser a PosixGroup objekty a jede to. Jednoduse se daji v bashi udelat skriptiky na pridavani uzivatelu a skupin, mozna by to slo i primo pres useradd a groupadd, ale to jsem nezkousel (pam-ldap a nss-ldap mi do LDAPu leze jako anonymous [neni potreba davat heslo k read-write useru na FS linuxu] takze by ani nemohl tvorit uzivatele, ale asi to prubnu).
2.4.2007 17:30 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
A není lepší používat AuFS? Já myslel, že UnionFS je deprecated.
2.4.2007 22:42 franta
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Vam pres NFS exportovany unionfs funguje? Zkousel jsem to asi pred pul rokem a shodilo to server (bug v unionfs). Ted jsem to chtel vyzkouset pres funionfs, ale zatim jsem se k tomu nedostal.

Useradd a groupadd s LDAPem urcite nefunguje (aspon ne v sargi, pokud se to nezmenilo, coz nepredpokladam - PAM nema na tuhle administrativu snad ani rozhrani), akorat jedine co muze fungovat je passwd, pokud ale se prihlasuje do LDAPu jako admin (nastavuje se to nekde, uz si nevzpominam).

Ano, LDAP mi taky nakonec prijde jednoduchy, ale pridavani uzivatelu atd, to je opravdu hruza. Psal jsem to s python-ldap, doporucuju (format ldif je nechutnej; a bash obcas taky... ;-) ).
xxx avatar 3.4.2007 21:13 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně

Jj souhlasim. Jakmile ma clovek jednou uzivatele v ldapu, je dobre velmi rychle zapomenout na vsechy ty groupadd atp. Ty totiz pracuji primo se soubory v /etc. Ja si nakonec zvykl na praci s webovym phpldapadminem. Dalsi moznosti je napsat si nejake vlastni skripty.

Co se tyce passwd. Tak to funguje. Pokud je ale potreba pomoci passwd menit hesla jinym uzivatelum, je nutne v nastaveni LDAP modulu pro PAM, rict, aby se root bindoval s jinou "identitou" a to s takovou, ktera ma pristup k posixPasswordu ostatnich useru. Normalne je user bindlej jako on sam, tudiz smi menit jen sam sebe.

Jinak LDAP je hezkej, ale obcas je to velkej boj s nastavenim. Hlavne s pravama :-)

Please rise for the Futurama theme song.
2.4.2007 15:52 Noname
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Slozitost OpenLDAPu souvisi s tim, ze schazi rozumna dokumentace a nastroje pro jednoduchou spravu. Nastesti se uz situace zacina menit. Napriklad v openSUSE 10.2 zprovoznite OpenLDAP pomoci nekolika kliknuti v YaSTu. Ale i tak to ma do idealniho stavu hodne daleko.
2.4.2007 17:09 CEST
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
No, osobne mi taky jeden cas pripadal LDAP (ale obecne jako takovy) strasne slozity. Kdyz jsem to pochopil, myslenka je trivialni.

Dalsi vec je konfigurace prislusneho serveru, nikdo nikoho nenuti pouzivat OpenLDAP (ikdyz se mi zda hodne jednoduchy na jednoduche veci typu jeden server), muzete pouzit Sun DirServer nebo Fedora DirServer, ktery je samozrejme slozitejsi, nabizi vice funkci, ale take obsahuje Java administratorskou konzoli, takze relativne jednoduse clovek naklika. Samozrejme chapani zakladu replikace master-master je nutne, aby i to clovek dobre naklikal. Taky zalezi na zkusenostech, osobne bych rekl, ze jednoduchy LDAP server se da rychle rozbehnout na OpenLDAP jednoduchou upravou konfiguraku, misto instalace molocha SunDS/FedoraDS, konfigurace+nastaveni pres Java konzoli. Naopak replikace, SSL a nastaveni pristupovych prav se rychleji udela v SunDS/FedoraDS+java konzoli.
2.4.2007 08:28 Bazin | skóre: 10 | Velvary
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkný článek , ale chtěl jsem se optat jak se tam řeší svapování protože mě to doma nejde :( . Ten kus skriptíku , kterej obsahuje swap jsem moc nepochopil :)
2.4.2007 11:25 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Viz skript "default".

Swapuju na lokalni disk. V tom skriptu je "fdisk -l" a nekolik grepu co vycucnou prvni swap oddil (s vice swapy to nepocita). Pokud tedy najde nejaky swap oddil tak ho aktivuje a hotovo. Pokud nenajde, tak neswapuje.

Swap pres sit jsem neresil, vsichni mi klienti maji disk nebo 512MB ramky.

Velmi jednoduse lze swapovat do souboru kterej bude sdilenej pres jiz pripojene NFS, nicmene swap pres NFS se moc nedoporucuje, pry je lepsi nbd, ale s tim neporadim.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
m$ lipo $m avatar 2.4.2007 11:41 m$ lipo $m | skóre: 19 | blog: čaj o páté | Redmond
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
vybornej clanek jen tak dal
Albuquerque, New Mexico (April 4, 1975)
2.4.2007 11:49 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Odpovědět | Sbalit | Link | Blokovat | Admin
Zapomel jsem jeste na jednu vec, Arch Linux pri vypinani schazuje sit, coz tedy v nasem pripade neni moc dobry napad. Vyresil jsem to quick&dirty, ve skriptu network jsem schazovani site pri shutdownu proste zakazal. Ono by asi slo ten skript zakazat cely, jelikoz sit nastavuje jadro samo podle parametru predanych pri startu. Jadro musi obsahovat AutoIPConfig a ROOT_NFS, kdyby si nekdo chtel vyrabet vlastni jadro.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
2.4.2007 12:08 Bazin | skóre: 10 | Velvary
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
No s tím jádrem botuju krása . ale povolím moduly ale když daám modproe tak my to píše že QM_Modules not implemented a nevím proč :( .
freshmouse avatar 2.4.2007 18:23 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
Odpovědět | Sbalit | Link | Blokovat | Admin
Preferuji tenké klientky. ;-)
emorjino avatar 2.4.2007 22:49 emorjino | skóre: 3
Rozbalit Rozbalit vše Re: Tlusté klienty ve školní učebně
jo, já taky :)
Mám rád Kubuntu, KDE (AmaroK obzvlášť), Firefox, Jabber, Wikipedii, Last.fm, Frozen Bubble.
xkucf03 avatar 2.4.2007 23:52 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Bezpečnost především
Odpovědět | Sbalit | Link | Blokovat | Admin
< žádný flame > jestli nepotřebujete mít data v bezpečí a tohle vám stačí, tak mne prosím nekamenujte za kritiku, nenutím vás číst dál :-) < / žádný flame>

Když použijeme NFS pro připojení celého /home adresáře, má to jednu zásadní chybu: adresář se připojí ještě před tím, než se někdo k počítači vůbec přihlásí, navíc jsou připojeny (a potenciálně přístupné) adresáře všech uživatelů, ne jen toho jednoho, který s počítačem bude pracovat. To je IMHO architektonicky špatně a je to velká bezpečnostní mezera* Server neví, kdo u počítače (klienta) sedí, prostě jen slepě poskytuje data a věří klientskému počítači, že se o autorizaci postaral.

Za správné bych považoval to, že by se nepřipojoval celý /home, ale pouze adresář jednoho konkrétního uživatele, a to na základě jeho jména a hesla. Jenže když si domácí adresář bude připojovat sám uživatel, musí být přihlášený, jenže háček je v tom, že ve chvíli kdy je přihlášený, už musí být domácí adresář dostupný, tedy připojený.

Chtělo by to tedy, aby se po zadání jména a hesla v GDM/KDM připojil domácí adresář daného uživatele a potom mohlo naběhnout uživatelovo oblíbené KDE/Gnome.

Napadá mne použít SSHFS pro připojení ~/ Používám ho třeba pro on-line editaci www stránek a je to docela použitelné. Výkonnostně je to někde jinde než NFS nebo SAMBA, ale bezpečnostně taky :-) Navíc "velká data" by si mohl uživatel zpracovávat na nějakém lokálním disku a až nakonec je nahrát do svého síťového domácího adresáře. Pro ty ostatní věci (nastavení programů, textové dokumenty...) by i tenhle FS měl stačit.

Takže pár otázek nakonec: Je SSHFS příliš pomalý nebo by šel použít? Víte o něčem lepším? Jak nacpat skript pro připojení disku mezi správce přihlášení a start KDE/Gnome (skript musí mít k dispozici heslo uživatele)? Neexistuje už nějaké hotové řešení tohohle všeho?

*) asi řeknete, že se mají počítače zabezpečit fyzicky, nebo že NFS serveru má být povolený přístup jen z některých IP adres. Ale to je podobně děravé řešení, jako když ve windows šlo shodit zaheslovaný spořič obrazovky vložením zvláštního CD.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
3.4.2007 08:44 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: Bezpečnost především
Do urcite miry mas pravdu, ale sdileni celeho /home je asi tak stejne nebezpecne jako kdyz si sednes k pocitaci kde maj ucty i jini uzivatele.

SSHFS bych dotoho opravdu netahal, pouzivam to v Konqueroru na pristup na jiny kompy, na to je to moc prima, ale na velky pouziti tezko...

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
3.4.2007 09:56 miso | skóre: 36 | blog: iSCSI_initiator_howto | Praha
Rozbalit Rozbalit vše Re: Bezpečnost především
S nazorom sa stotoznujem. Nieco take sa da spravit s automount
Project Satan infects Calculon with Werecar virus
3.4.2007 10:06 vencas | skóre: 32
Rozbalit Rozbalit vše Re: Bezpečnost především
3.4.2007 12:13 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Autorizace k homum
Silna autorizace k jednotlivym domovskym adresarum existuje. Jedna se o NFS verze 4, ktera umi pres GSS Kerberos.

Nic o tom ale nevim, takze by me zajimalo, jestli se o to uz nekdo pokousel.
6.4.2007 22:22 Ondar
Rozbalit Rozbalit vše Proc tak slozite?
Odpovědět | Sbalit | Link | Blokovat | Admin
Par poznamek: 1. Nac se trapit s necim, co uz davno funguje. Viz muj predchozi clanek http://www.abclinuxu.cz/clanky/navody/jak-nabootovat-linux-po-siti Pokud pouzivate RedHat, nemusite nic delat, vse uz je pripraveno (cela moje serverovna bezi bezdiskove - jedna radost) 2. Pripojit korenovy adresar s rw a no_squash mi pripada jako vysmech, to by me zajimalo, jak dlouho vam to bude fachcit. 3. Automounter je bomba 4. Ldap ja taky bomba 5. Kerberos + Ldap je uplne nejvetsi bomba, ale ten kdo to spolehlive rozbeha pomoci OSS nastroju s NFS v.4 a GSS, tak je u me frajer. Me se to jeste nepodarilo, takze jsem pouzil komercni produkt Centrify. 5 ze 4 psychologu doporucuje ladeni Kerberosu. 6. Na swap je mozno take pouzit NBD nebo GFS (v podstate to same) Ondar
7.4.2007 22:45 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: Proc tak slozite?
Mas tam neco co neco co neni bomba?
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.