czyli sieć tanich, bezdyskowych terminali graficznych LTSP

Transkrypt

czyli sieć tanich, bezdyskowych terminali graficznych LTSP
Wilk w owczej skórze – czyli sieć tanich, bezdyskowych
terminali graficznych LTSP
Rajmund Radziewicz
Niezbyt nowoczesne komputery, które w wielu szkołach masowo oddawane są do wymiany –
mogą posłużyć jako graficzne, wydajne terminale. Właśnie z racji oszczędności i ze względu na
fakt, że sieć taką można skonfigurować w prosty sposób, LTSP został wdrożony
w płockim Technikum Uzupełniającym dla Dorosłych SIMP...
LTSP (Linux Terminal Server Project) jest oprogramowaniem pozwalającym na uruchomienie sieci
terminali w oparciu o kilka usług, m.in DHCP, NFS i TFTP. Postaram się przybliżyć konfigurację
LTSP w tym konkretnym przypadku, a także opisać kilka przydatnych czynności, które mogą
ułatwić pracę z siecią terminali.
Zasada funkcjonowania LTSP polega na tym, że wszystkie aplikacje są faktycznie
uruchamiane na serwerze. Użytkownik logujący się na danym terminalu, faktycznie loguje się za
pośrednictwem protokołu XDMCP na konto założone na serwerze – natomiast sam terminal nie
musi być nawet wyposażony w twardy dysk czy jakiekolwiek napędy. W płockim technikum serwer
o parametrach Pentium IV 1700 Mhz i 1 GB RAM obsługuje jedenaście X-terminali i komputer
pełniący funkcję lokalnego serwera bazy danych. Twórcy LTSP wspominają nawet o instalacji z
użyciem serwera o zbliżonych parametrach, obsługującego 40 stacji roboczych. Myślę, że nie
trzeba tu wspominać o oszczędnościach, jakie niesie ze sobą wykorzystanie tej technologii.
Podobne rozwiązania są zresztą bardzo popularne w wewnętrznych sieciach bankowych czy też
uczelnianych.
Poza wspomnianymi oszczędnościami, pozwalają one przede wszystkim zwiększyć kontrolę nad
pracą każdej jednostki i znacznie ułatwić administrowanie całą siecią. W końcu zarówno aplikacje,
jak i użytkownicy korzystają de facto z jednej maszyny. Oczywiście, żeby mechanizm zadziałał, na
serwerze musi działać DHCP – czyli dynamiczne przydzielanie adresów IP. Terminale uruchamiają
się przez sieć za pomocą bootrom-ów znajdujących się na kartach sieciowych lub dyskietkach,
otrzymują od serwera adres IP i za pomocą TFTP ściągają specjalnie przygotowane jądro.
Kiedy jądro zostanie ściągnięte – przejmuje kontrolę nad całym procesem, montuje sobie drzewo
katalogów z serwera przy pomocy NFS i uruchamia X-serwer. Następnie komunikuje się z
demonem logowania na serwerze (np. KDM) za pomocą protokołu XDMCP i pozwala zalogować
się użytkownikowi na konto. Tak w dużym uproszczeniu wygląda zasada uruchamiania terminali.
W przypadku opisywanej przeze mnie sieci, wykorzystana została edukacyjna dystrybucja
bazująca na Debianie oraz Knoppiksie – Linux-EduCD 0.3.2. Zawiera ona już zaimplementowany i
wstępnie skonfigurowany serwer LTSP. Nic nie stoi jednak na przeszkodzie, żeby zainstalować
odpowiednie pakiety w dowolnej innej dystrybucji. W tej chwili na stronie projektu wszelkie
wymagane składniki dostępne są zarówno w postaci pakietów RPM, DEB, jak również tgz.
Gdybyśmy
decydowali się na instalację w systemie, który nie jest wyposażony w LTSP, musimy pamiętać, że
do poprawnego działania całości wymagane są skonfigurowane i działające usługi NFS, TFTP i
DHCP. Zanim przejdę do opisu uruchamiania LTSP w Linux-EduCD, kilka słów na temat
samodzielnej instalacji.
INSTALACJA
Jeżeli nie mamy jeszcze zainstalowanego serwera dhcp, nfs lub tftp, należy dodać
odpowiednie pakiety. To standardowe usługi sieciowe, dostępne praktycznie w każdej większej
dystrybucji, więc nie powinno sprawić to nikomu problemu. Serwer tftpd należy ustawić w inetd lub
xinetd, w zależności od tego, co jest wykorzystywane przez naszą odmianę Linuksa.
Przykładowo w Debianie i pochodnych wpis w /etc/inetd.conf powinien wyglądać tak
jak poniżej:
tftp dgram udp wait root
/usr/sbin/in.tftpd in.tftpd -s /tftpboot
Parametr -s oznacza, że serwer tftpd uruchamiany będzie w bezpiecznym środowisku chroot.
Wszelkie jego działania będą się odnosiły wyłącznie do katalogu /tftpboot, który po uruchomieniu
będzie stanowił główne drzewo katalogów dla tej usługi. W /tftpd/lts znajdzie się również jądro
LTSP, które będzie przesyłane na stacje robocze. No właśnie... jądrem i samym LTSP zajmiemy
się już za chwilę. Ze strony projektu musimy pobrać następujące pakiety:
●
●
●
●
lts_core – główny pakiet LTSP
lts_kernel – dedykowane jądro dla LTSP
lts_x_core – środowisko XFree86 dla LTSP
ltsp-x-fonts-i386 – pakiet czcionek
Opisywana wersja LTSP nosi numer 3.0. Jest już co prawda dostępna edycja 4.0, ale nie
posiada jeszcze dedykowanego jądra i wykorzystuje pakiet z wcześniejszej wersji. Z tego
względu brak tutaj większych różnic w samej funkcjonalności.
Po zainstalowaniu powyższych paczek należy uruchomić skrypt lstp_initialize, znajdujący
się w /opt/ltsp/templates. Skrypt automatycznie skonfiguruje odpowiednie usługi i dokona
niezbędnych zmian w systemowych plikach konfiguracyjnych. Te zmiany to między
innymi:
/etc/dhcpd.conf.example
Przykładowy plik konfiguracyjny serwera DHCP
/etc/exports
Plik ze zdefiniowanymi zasobami udostępniamymi poprzez NFS
/etc/kde3/kdm/kdmrc
Plik konfiguracyjny demona KDM (K Display Manager)
/etc/X11/xdm/ltsp.gif
Logo graficzne widoczne podczas logowania do LTSP
/etc/rc?.d/*nfs-*
Dowiązania do skryptów startowych uruchamiających NFS
/etc/rc?.d/*portmap
Dowiązania do skryptów startowych uruchamiających portmappera
/etc/init.d/sysklogd
Dowiązania do skryptów startowych uruchamiających demona sysklog
Kiedy powyższe pliki zostały już utworzone lub zmodyfikowane, powinniśmy skonfigurować
jeszcze serwer DHCP, dokonać wpisów w pliku /etc/hosts oraz głównym pliku konfiguracyjnym
LTSP – lts.conf. W wyniku działania ltsp_initialize otrzymujemy przykładowy plik
dhcpd.conf.example.
Jeśli nie potrzebujemy przydzielać numerów IP na podstawie adresów sprzętowych (MAC) kart
sieciowych, wystarczy to, co zostało wygenerowane przez skrypt. Możemy także zdefiniować
dodatkowo zakres adresów przydzielanych przez serwer DHCP. W Linux-EduCD są to adresy z
przedziału 192.168.0.100 – 253. Odpowiada za to poniższy fragment pliku /etc/dhcp3/dhcpd.conf.
W pliku /etc/hosts/ powinny znajdować się następujące wpisy:
192.168.0.1 ws001.Knoppix ws001
192.168.0.2 ws002.Knoppix ws002
192.168.0.3 ws003.Knoppix ws003
Są to adresy IP i nazwy poszczególnych stacji roboczych-terminali. Wpisy te nie są obowiązkowe,
jeśli mamy skonfigurowany w sieci serwer DNS. W praktyce okazują się jednak niezwykle
przydatne, gdyż znacznie przyśpieszają montowanie katalogów systemowych poprzez NFS na
terminalach. Wystarczy zresztą wykomentować na próbę wpisy z /etc/hosts i porównać czas
uruchamiania stacji roboczych bez nich. Kiedy w /etc/hosts znajduje się już odpowiednio długa lista
nazw i adresów, powinniśmy ustawić główny plik konfiguracyjny śro dowiska terminali – lts.conf.
Znajduje się on w /opt/ltsp/i386/etc/, czyli specjalnym drzewie katalogów, które jak już
wspominałem, jądro załadowane na terminal zamontuje sobie poprzez NFS. Plik lts.conf składa się
z globalnej sekcji oznaczonej jako: [Default] oraz opcjonalnych sekcji oznaczonych kolejno:
[ws001], [ws002], [ws003] – czyli sekcji specyficznych dla poszczególnych stacji. Jest to niejako
odpowiednik XF86Config w przypadku typowego serwera X. Definiujemy tutaj sterownik karty
graficznej, w jaką wyposażone są nasze terminale (jeżeli każdy z terminali posiada inną
konfigurację sprzętową – wykorzystujemy kolejne sekcje ws), typ myszy, odświeżanie. Jeśli nie
zdefiniujemy żadnej sekcji ws, wpisy Default będą dotyczyły wszystkich stacji. W Linux-EduCD
/opt/ltsp/i386/etc/lts.conf wygląda następująco:
[Default]
SERVER = 192.168.0.254
XSERVER = auto
X_MOUSE_PROTOCOL = „PS/2”
X_MOUSE_DEVICE = „/dev/psaux”
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
X_VERTREFRESH = 60
#
USE_XFS = N
LOCAL_APPS = N
XkbSymbols = „pl(pc101)”
XkbLayout = „pl”
RUNLEVEL = 5
#
[ws001]
XSERVER = auto
LOCAL_APPS = N
USE_NFS_SWAP = N
SWAPFILE_SIZE = 48m
RUNLEVEL = 5
Parametr XSERVER ustawiony jest na auto. Oznacza to, że system sam dokona autodetekcji karty
graficznej, w jaką wyposażone są terminale. W pakiecie lts_x_core znajdują się praktycznie
wszystkie sterowniki kart wspieranych przez XFree86 w wersji 4.1. Jeśli zatem posiadamy taką
kartę, z powodzeniem możemy to ustawienie zostawić bez zmian. Jeśli nie chcemy korzystać z
opcji auto, możemy sami wpisać tutaj odpowiednią wartość, przykładowo:
XSERVER = sis
Parametr X_MOUSE_DEVICE definiuje urządzenie, do którego podłączona jest mysz. Dla myszy
PS/2 będzie to /dev/psaux. Gdybyśmy posiadali mysz szeregową, wpiszemy tutaj /dev/ttyS0 lub
/dev/ttyS1. X_VERTREFRESH to odświeżanie pionowe naszego monitora. Ustawienie 60 jest
optymalną wartością, szczególnie dla starszych modeli. USE_XFS informuje, czy korzystamy z
serwera czcionek. LOCAL_APPS to możliwość uruchamiania niektórych aplikacji lokalnie przez
terminal. Jeśli ustawimy na Y, musimy skonfigurować w sieci serwer NIS i dopisać dwa kolejne
parametry do lts.conf: NIS_DOMAIN, w którym wpiszemy nazwę domeny NIS oraz NIS_SERVER,
gdzie wpiszemy jego adres. Zalecaną metodą jest oczywiście uruchamianie aplikacji na serwerze.
Ponadto lokalne uruchamianie nawet niezbyt pamięciożernego programu wymaga już maszyny
o trochę lepszych parametrach sprzętowych. XkbSymbols i XkbLayout to definicje klawiatury,
natomiast RUNLEVEL oznacza poziom startowy naszych stacji. W LTSP standardowo mamy do
dyspozycji poziomy: 3, 4 i 5. Poziom oznaczony numerem 3 uruchamia stacje w trybie tekstowym,
poziom 4 oznacza sesję telnet, natomiast domyślnie ustawiony jest poziom 5. Jest to tryb
graficzny, w którym po uruchomieniu każdy terminal (w tym wypadku można go już nazwać X
terminalem) pozwoli zalogować się do systemu za pośrednictwem uruchomionego na serwerze
demona XDM, GDM lub KDM.
Ciekawą opcją LTSP jest możliwość korzystania z pliku wymiany. Informuje o tym parametr
SWAPFILE_SIZE w sekcji przykładowego terminala ws001. Możemy utworzyć na serwerze plik
wymiany dla naszych stacji, który będzie im udostępniony poprzez NFS. Domyślnie katalog
/var/opt/ltsp/swapfiles jest wówczas montowany jako /tmp/swapfiles. Jeżeli nie mamy pliku
wymiany, zostanie on utworzony automatycznie, a jego wielkość określi właśnie parametr
SWAPFILE_SIZE.
Plik wymiany może istnieć również na zupełnie innej maszynie w sieci. Jeśli taka sytuacja ma
miejsce, musimy dopisać do naszego pliku lts.conf dodatkowy parametr SWAP_SERVER, w
którym podamy adres tego komputera. Jeśli wszystko ustawiliśmy poprawnie, nie powinna nas w
zasadzie spotkać żadna niemiła niespodzianka przy uruchamianiu stacji.
URUCHAMIANIE TERMINALA
Jeśli mamy już zainstalowane odpowiednie pakiety, ustawiony lts.conf i działające usługi
DHCP, NFS oraz TFTP, możemy przejść do uruchamiania stacji roboczych. Do tego celu
wykorzystamy narzędziem o nazwie Etherboot. Służy ono do tworzenia obrazów ROM, na których
umieszczany jest specjalny program umożliwiający uruchomienie komputera przez sieć. Możemy
co prawda zaopatrzyć się w karty sieciowe, które są już wyposażone w tzw. bootromy i wówczas
nasze terminale przy każdym starcie będą domyślnie próbowały uruchomić się przez sieć i
uzyskać dane od rozgłaszającego się serwera DHCP. Jako że jednak nie wszystkie starsze
komputery, przeznaczane na terminale LTSP, posiadają takie karty, możemy wygenerować
dyskietkę z bootromem, za pomocą której uruchomimy stacje.
Ze strony http://www.rom-omatic.net powinniśmy pobrać plik odpowiadający chipsetowi naszej
karty sieciowej. Należy nagrać go na dyskietkę, np. poleceniem:
cat plik.lzdsk > /dev/fd0
oraz uruchomić za jej pomocą terminal. W BIOS terminala kolejność uruchamiania napędów
powinna być oczywiście tak ustawiona, żeby w pierwszej kolejności sprawdzany był napęd
dyskietek.
Jeśli posiadamy starszy komputer, bez twardego dysku i napędu CD-ROM, zadanie to staje się
wręcz jedyną możliwością. Dyskietka nie będzie oczywiście potrzebna przez cały czas pracy
terminala. Kiedy ten komputer zainicjuje już program rozruchowy, otrzyma adres od serwera DHCP
i zacznie ściągać jądro – możemy śmiało wyjąć ją z napędu i uruchamiać już kolejne maszyny
(o ile oczywiście posiadają taką samą kartę sieciową). Jeżeli w lts.conf ustawiliśmy RUNLEVEL na
5, po chwili powinien uruchomić się tryb graficzny. Stacja robocza przekaże zapytanie do demona
logowania na serwerze przy pomocy wspomnianego już XDMCP i wyświetli znajome okienko
GDM, KDM lub XDM, w zależności od tego, z jakiego środowiska korzystamy.
W przypadku Linux-EduCD jest to KDM. Logujemy się oczywiście na konto, które musi istnieć na
serwerze. Jeśli po uruchomieniu terminala serwer X nie chce się uruchomić, a jedynie restartuje co
chwila ekran i ostatecznie zostaje w trybie tekstowym, należy sprawdzić ustawienia w lts.conf, w
szczególności opcję XSERVER. Często przy słabszych kartach i monitorach, które nie potrafią
uruchomić się w rozdzielczości 1024x768, wystarczy dopisać do sekcji terminali:
X_MODE_0 = 800x600
Jeśli po uruchomieniu i pomyślnym wystartowaniu serwera X na terminalu mamy jedynie szare tło i
kursor na jego tle (nie uruchamia się KDM) – najczęściej oznacza to problemy z protokołem
XDMCP. Należy sprawdzić wówczas, czy w pliku /etc/kde/kdm3/kdmrc mamy odkomentowany
wpis:
[XDMCP]
Enable = true
To wszystko, jeśli chodzi o samodzielną instalację i uruchamianie LTSP. W przypadku dystrybucji
Linux-EduCD oprogramowanie jest już zaimplementowane, więc przy konfiguracji sieci w płockim
technikum większość z tych kroków można było pominąć. Wszystkie dostępne chipsety kart
sieciowych, potrzebne do wygenerowania dyskietek, znajdują się w katalogu: /opt/bootroms.
Dystrybucja pozwala na uruchamianie LTSP nawet podczas pracy z płyty CD, jednak zalecane jest
oczywiście korzystanie z tego oprogramowania już po instalacji na dysku. Po zainstalowaniu na
dysku Linux-EduCD otrzymujemy wstępnie skonfigurowany, oparty na Debianie system, który
pracuje oczywiście dużo szybciej i wydajniej niż w przypadku działania z płyty. Po instalacji
systemu operacyjnego na serwerze i założeniu odpowiedniej ilości kont ustawione zostały
wspomniane opcje w pliku konfiguracyjnym lts.conf. Terminale w sieci to jedenaście jednakowych
pecetów o parametrach AMD-K6 200 Mhz i 8 MB RAM. Wyposażone są w karty graficzne S3 Virge
i karty sieciowe na chipsecie Realtek 8139. Poza napędem dyskietek, nie posiadają twardych
dysków ani urządzeń CDROM.
Należy pamiętać – że w Linux-EduCD LTSP nie uruchamia się automatycznie. Żeby to zmienić,
należy uruchomić skrypt start_ltsp, do którego dowiązanie znajduje się w katalogu domowym
użytkownika root. Istotne jest to, że pierwsze (i wyłącznie pierwsze) uruchomienie, wprost po
instalacji dystrybucji na dysku, należy zainicjować innym skryptem – hdd_ltsp. Usługę możemy w
dowolnej chwili zatrzymać, wykonując z kolei stop_ltsp lub wybierając z menu KDE opcję LTSP ->
Zatrzymaj LTSP. Wszystkie wspomniane skrypty znajdują się w katalogu /opt, a ich dowiązania w
/root. W pliku start_ltsp znajdują się w zasadzie polecenia uruchamiające takie usługi jak: DHCP,
NFS, portmap i KDM, czyli dokładnie to, co jest potrzebne do zaistnienia komunikacji pomiędzy
serwerem a stacjami roboczymi. W pliku /etc/exports zdefiniowane są wymagane zasoby. W LinuxEduCD zawartość tego pliku wygląda następująco:
/opt/ltsp/i386
192.168.0.0/255.255.255.0
(ro,no_root_squash,sync)
/var/opt/ltsp/swapfiles
192.168.0.0/255.255.255.0
(rw,no_root_squash,async)
/home 192.168.0.0/255.255.255.0
(rw,no_root_squash,sync)
Powyższe opcje w zupełności wystarczają do sprawnego udostępniania głównego drzewa
katalogów dla terminali, pliku wymiany (o ile jest stosowany) i katalogów domowych.
Możemy analogiczne wpisy ustawić także w przypadku instalacji LTSP w innym systemie.
FIREWALL
W zasadzie najbardziej optymalna konfiguracja serwera terminali to taka, w której ten
stoi już za firewallem i sam nie udostępnia takich usług jak WWW, SMTP czy też DNS. Taki układ
ma miejsce w przypadku płockiej sieci. W momencie, kiedy jednak to on jest bramą sieciową dla
pozostałych komputerów, warto pamiętać, by poza maskaradą (NAT) odpowiednio ustawić reguły
filtrowania pakietów. Wskazane jest, żeby wymagane przez LTSP demony – NFS, portmap i inne,
mogące stanowić potencjalną lukę w bezpieczeństwie systemu, nie były dostępne z zewnątrz.
Konfigurację firewalla możemy przeprowadzić na dwa sposoby. Jako że popularniejszy w
nowszych wersjach jądra Linuksa jest iptables – posłużymy się właśnie nim. Pierwszy sposób to
blokowanie określonych portów przez dodawanie kolejnych reguł odrzucających pakiety:
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 2049 -j DROP
iptables -A INPUT -p udp -s 0/0 -d 0/0 --dport 2049 -j DROP
Powyższe reguły blokują np. port 2049 dla tcp i udp, wykorzystywany przez NFS. Posługując się
taką metodą, będziemy musieli dla każdego portu, który chcemy zablokować, zdefiniować
analogiczny wpis. Można też zastosować inną politykę – domyślnie blokować wszystkie pakiety i
dodawać reguły dopuszczające tylko poszczególne usługi:
iptables -F
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT – Akceptowanie
połączeń nawiązanych
iptables -A INPUT -p tcp --tcp-option! 2 -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT – Otwieramy port FTP
iptables -A INPUT -p udp -i eth0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT – Otwieramy port SSH
iptables -A INPUT -p udp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT – Otwieramy port HTTP
iptables -A INPUT -p udp -i eth0 --dport 80 -j ACCEPT
iptables -P INPUT DROP – Domyślnie reszta jest blokowana
Czasami zbyt restrykcyjnie zdefiniowane reguły mogą zablokować potrzebną do działania usługę
(np. serwer DHCP). Po włączeniu reguł możemy w każdej chwili wyświetlić zastosowane zasady
filtrowania pakietów poleceniem iptables -L -v. Poniżej przedstawiam kilka przydatnych sposobów
na ułatwienie pracy administratora w opisywanej sieci terminali, są to: tworzenie kopii zapasowych,
wsadowe zakładanie kont użytkowników, kontrola procesów oraz korzystanie z lokalnych napędów
dyskietek na stacjach roboczych. Oczywiście możliwości jest o wiele więcej i wszystko zależy od
konkretnych wymagań i potrzeb.
KOPIE ZAPASOWE
Niezbędną czynnością w sieci, w której terminale pracują jako stacje robocze, jest rzecz
jasna wykonywanie kopii zapasowych. Pomimo że dane składowane są w zasadzie wyłącznie na
dysku serwera LTSP, wskazane jest, aby tym bardziej dbać o ich bezpieczeństwo. W przypadku
omawianej sieci - okresowo uruchamiany jest prosty skrypt, który wykonuje kopie katalogów
domowych wszystkich użytkowników, archiwizuje je do /opt/kopie_zapasowe i przesyła na
oddzielny komputer w sieci o adresie 192.168.1.10. Na komputerze tym, w katalogu /opt, znajduje
się podkatalog terminale_kopie, do którego wędrują spakowane paczki. Nie jest to oczywiście
wykonywanie kopii przyrostowych, a jedynie prosty sposób na pełne zarchiwizowanie danych.
Skrypt kopiuje całą zawartość katalogów domowych, poza katalogiem tymczasowe. Jeśli
użytkownicy mają jakieś mało istotne dane, które nie muszą być archiwizowane, mogą umieszczać
je właśnie w tym katalogu:
#!/bin/bash
# najpierw tworzymy katalog /opt/terminale_kopie na zdalnym hoście
mkdir /opt/kopie_zapasowe
cd /home
users=`ls`
for x in $users
do
tar zcvf /opt/kopie_zapasowe/${
x}.tgz /home/${x} --exclude=tymczasowe
done
scp -r /opt/kopie_zapasowe
192.168.1.10:/opt/terminale_kopie
Jeśli istnieje potrzeba wykonywania kopii przyrostowych, należy synchronizować zawartość
zdalnego /opt/terminale_kopie z lokalnym /opt/kopie_zapasowe. Można posłużyć się w tym celu
programem rsync. W przeciwieństwie do programu tar, rsync przesyła zmiany, jakie zaszły od
czasu wykonania ostatniej kopii. Polecenie:
rsync -ave ssh 192.168.1.10:/opt/terminale_kopie/ /opt/kopie_zapasowe/
spowoduje, że kopia przed wysłaniem będzie odpowiednio zsynchronizowana.
WSADOWE TWORZENIE KONT UŻYTKOWNIKÓW
Wbrew pozorom, zakładanie kont systemowych w szkolnej lub uczelnianej pracowni wcale
nie musi być sprawą łatwą. Przy założeniu, że z pracowni ma korzystać np. pięć średniej wielkości
grup/klas, a każdy student/uczeń ma mieć własne konto, wychodzi nam przynajmniej setka
użytkowników. Oczywiście wpisywanie dla każdego konta polecenia useradd i dwukrotne
powtarzanie hasła nie jest najciekawszym rozwiązaniem w takiej sytuacji. Z pomocą może nam
przyjść program newusers. Służy on do wsadowej aktualizacji i tworzenia kont nowych
użytkowników. Wystarczy, że dysponujemy listą zawierającą pary: użytkownik:hasło, dopiszemy
do każdej linii informacje na temat katalogu domowego i możemy jednym poleceniem załatwić
resztę „formalności”. Hasło powinno być podane jawnym tekstem, ponieważ newusers sam zajmie
się jego zaszyfrowaniem. Na serwerze technikum użyliśmy listy users z wpisami:
uczen1:password::::/home/uczen1:
testowe1:password2::::/home/testowe1
Należy pamiętać o odpowiedniej ilości znaków „:”. W zasadzie format tego zapisu jest analogiczny
do wpisów w /etc/passwd. Jeśli lista jest gotowa, wykonujemy polecenie newusers users. Po chwili
konta są już założone, a za pomocą polecenia chpasswd można aktualizować zbiorowo hasła.
AUTOMATYCZNE WYLOGOWYWANIE
Wszystkie aplikacje i procesy uruchamiane przez terminale rezydują na serwerze. Daje to
dużą kontrolę nad wszelkimi działaniami użytkowników. W momencie kiedy są zalogowani,
możemy sprawdzać, jak długo pracują i z jakich korzystają aktualnie programów. Wiemy, że w
pliku /etc/hosts nasze terminale nazwane są kolejno: ws001, ws002. Wystarczy więc przefiltrować
odpowiednio procesy, żeby sprawdzić, ile takich terminali aktualnie pracuje:
ps ax | grep ws
Możemy w analogiczny sposób sprawdzić, jakie aplikacje są wykorzystywane oraz czy pracują
wszystkie usługi odpowiedzialne za LTSP. Użytkowników możemy wylogować z serwera w każdej
chwili, posługując się prostym skryptem i nazwą użytkownika, podaną jako parametr. Skrypt o
nazwie wyloguj znajduje się poniżej:
#!/bin/sh
# skrypt do wylogowania użytkowników LTSP
if [ $1!= 'root' ]
then
for i in $(pgrep -u $1)
do
kill -9 $i
done
else
clear
echo 'Nie można zabić sesji roota'
fi
Po utworzeniu takiego skryptu należy oczywiście nadać mu atrybut wykonywalności. Jeśli
zalogowany jest np. użytkownik rajmund, wystarczy jako root wykonać polecenie:
./wyloguj rajmund
LTSP jest z pewnością bardzo użytecznym oprogramowaniem. Sprawdza się znakomicie jako
niezwykle wydajny system terminali, drobiazgowo przemyślany zarówno pod kątem
funkcjonalności, jak i łatwości obsługi. Po więcej szczegółowych informacji odsyłam do oficjalnej
dokumentacji.
Strona projektu LTSP: http://www.ltsp.org
Strona projektu Etherboot: http://www.rom-o-matic.net
Dystrybucja Linux-EduCD: http://www.linux-educd.pl

Podobne dokumenty