SuSE Linux: Od verze 7.0
/sbin/SuSEconfig
, který jej využívá. Zmíníme také další
mechanismy, které distribuce používá k přizpůsobení svým uživatelům.
lo
(loopback),
jak vlastně funguje mechanismus centrální konfigurace.
Nejprve však trošku teorie. Lokální rozhraní lo
, neboli
loopback, slouží zejména pro komunikaci s počítačem samým. Pokud např.
chceme na svém domácím počítači, který nemá síťovou kartu ani jiné
síťové rozhraní (např. pod VMware apod.) odlaďovat své webové stránky,
použijeme k tomu webový server Apache, který necháme poslouchat
právě na tomto rozhraní. Téměř všechny linuxové distribuce standardně
definují toto rozhraní ihned při startu. SuSE Linux samozřejmě není
výjimkou:
pavel@snowwhite:~ > /sbin/ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:340 errors:0 dropped:0 overruns:0 frame:0 TX packets:340 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 pavel@snowwhite:~ >Toto virtuální rozhraní je používáno mnoha programy, které potřebují poslouchat na nějakém síťovém rozhraní. Co když ale toto rozhraní nepotřebujeme? Budeme hledat ve startovacích skriptech, kde se ta či ona konfigurace provádí?
Ano, někdy nám nezbude nic jiného, než to udělat. Distribuce SuSE Linux je
však koncipována tak, aby podstatná část podobných činností a ztrácení času
hledáním souborů v souborovém systému byla omezena. Nástrojem v tomto
případě je právě centrální konfigurace a kombinace konfiguračního souboru
/etc/rc.config
a skriptu /sbin/SuSEconfig
a
dalších.
Ale slíbil jsem vám, že si něco ukážeme v praxi. Takže pojďme na
to. Zakážeme startovacím skriptům, aby nakonfigurovali rozhraní
loopback. Nejprve si nezvykle ukážeme, jak a kde se rozhraní
lo
konfiguruje a pak si teprve ukážeme, jak této
konfiguraci zamezit.
Konfigurace zařízení loopback probíhá při startu systému ve skriptu
/sbin/init.d/boot
, o kterém jsme se zmínili v předchozím
díle seriálu:
# # initialize loopback device # if test "$START_LOOPBACK" = yes; then echo -n Setting up loopback device ifconfig lo 127.0.0.1 netmask 255.0.0.0 up rc_status case `uname -r` in 0.*|1.*|2.[01].*|2.2.?|2.2.??) route add -net 127.0.0.0 netmask 255.0.0.0 dev lo rc_status ;; esac rc_status -v1 -r fiZde se tedy kontroluje, zda je proměnná START_LOOPBACK nastavena na hodnotu "yes". Pokud není, nic se neděje, nic nebudeme konfigurovat a pokračujeme v inicializaci systému. Pokud však tato proměnná hodnotu "yes" má, vypíšeme krátké hlášení, které uživateli říká, co se právě v systému děje (Setting up loopback device), nakonfigurujeme rozhraní
lo
tak,
aby mělo IP adresu 127.0.0.1 a síťovou masku 255.0.0.0 a vypíšeme pomocí
funkce rc_status, zda se tato činnost povedla. Ona se totiž nemusí povést.
Může se stát, že si systémový administrátor vyměnil linuxové jádro za
své vlastní, které např. nepodporuje síťové prostředky (což je dost
nepravděpodobné, ale stát se to může :-).
Dále si pomocí příkazu uname -r ověříme, jakou verzi linuxového jádra máme. Pokud nemáme nějakou novější verzi (2.4.x), musíme ještě přidat záznam o nové síti do routovací tabulky. Novější jádra tento záznam přidají automaticky.
Z výše popsaného postupu tedy vidíme, že jednoduchým nastavením proměnné
START_LOOPBACK na jinou hodnotu než "yes" zrušíme konfiguraci rozhraní
lo
. Samozřejmě můžeme postupovat i jinými způsoby,
můžeme tento odstavec zakomentovat, smazat apod., ale tyto postupy nejsou
systémové. Je mnohem jednodušší nastavit proměnnou START_LOOPBACK na
hodnotu "no". Kde ji však najdeme?
Ano, jistě už tušíte, že právě v souboru /etc/rc.config
.
A opravdu:
# # start loopback networking? ("yes" or "no") # (this will be needed for all rpc services) # START_LOOPBACK="yes"Stačí tedy jednoduše změnit hodnotu této proměnné libovolným editorem (asedit, ed, fte, GNU Emacs, XEmacs, gedit, jed, joe, jove, jmacs, nedit, nvi, pico, vi, xcoral, xvi apod. :-), který vám vyhovuje, na hodnotu "no". V některých případech je nutné po editaci spustit skript
/sbin/SuSEconfig
, protože některé proměnné mohou mít další
efekty.
Podstatně systémovější, ale naprosto ekvivalentní postup, je možný pomocí instalačního a administrativního rozhraní YaST. Pomocí příkazu YaST si administrativní rozhraní spustíme a v menu System administration (případně v menu Správa systému, pokud máme správně nakonfigurován jazyk) nalezneme položku Change configuration file (Změnit konfigurační soubor). V novém menu si jenom vybereme proměnnou START_LOOPBACK a v textovém poli změníme řetězec "yes" na "no". Při dalším startu systému již nebude rozhraní lo nakonfigurováno.
/etc/rc.config
a skript
/sbin/SuSEconfig
. Nejlépe si to opět ukážeme tak, že
vybereme některou vhodnou proměnnou ze souboru /etc/rc.config
,
na které si budeme demonstrovat chování skriptu
/sbin/SuSEconfig
.
Vybereme si několik různých proměnných, které budou chování ilustrovat. Již
výše jsme se zmínili o proměnné START_LOOPBACK, která ovlivňuje konfiguraci
rozhraní lo
.
Nyní si ukážeme proměnnou ROOT_LOGIN_REMOTE, která ovlivňuje možnost
superuživatele přihlásit se vzdáleně. Soubor /etc/rc.config
obsahuje následující pasáž:
#
# If you want to allow root
logins from other machines, set ROOT_LOGIN_REMOTE
# to "yes".
#
ROOT_LOGIN_REMOTE="no"
Pokud tedy administrátor systému chce povolit připojování superuživatele
vzdáleně, jednoduše nastaví tuto proměnnou na hodnotu "yes" a skript
/sbin/SuSEconfig
udělá vše ostatní za něj.
Co vše musí skript /sbin/SuSEconfig
udělat? Podívejme se
na pasáž, která obsluhuje právě tuto proměnnou:
# # Now set ROOT_LOGIN_REMOTE. # if test -n "$ROOT_LOGIN_REMOTE" ; then if test "$ROOT_LOGIN_REMOTE" = "yes" ; then cat $r/etc/pam.d/login | \ sed 's@^[[:space:]]*auth[[:space:]].*[/[:space:]]pam_securetty.so\([[:space:]]\|$\)@#&@' \ > $r/etc/pam.d/login.SuSEconfig cat $r/etc/pam.d/rlogin | \ sed 's@^[[:space:]]*auth[[:space:]].*[/[:space:]]pam_securetty.so\([[:space:]]\|$\)@#&@' \ > $r/etc/pam.d/rlogin.SuSEconfig else cat $r/etc/pam.d/login | \ sed 's@^[[:space:]]*#[[:space:]]*\(auth[[:space:]].*[/[:space:]]pam_securetty.so\([[:space:]]\|$\)\)@\1@' \ > $r/etc/pam.d/login.SuSEconfig cat $r/etc/pam.d/rlogin | \ sed 's@^[[:space:]]*#[[:space:]]*\(auth[[:space:]].*[/[:space:]]pam_securetty.so\([[:space:]]\|$\)\)@\1@' \ > $r/etc/pam.d/rlogin.SuSEconfig fi check_md5_and_move $r/etc/pam.d/login check_md5_and_move $r/etc/pam.d/rlogin fiMožná to vypadá hůře než konfigurační soubor sendmailu, ale ve své podstatě je to velmi jednoduché. Pokud je proměnná ROOT_LOGIN_REMOTE nastavena na hodnotu "yes", je v souborech
/etc/pam.d/login
a
/etc/pam.d/rlogin
zakomentována řádka
auth required /lib/security/pam_securetty.sokterá vyžaduje od příchozího spojení, aby jeho terminál byl uveden v souboru
/etc/securetty
. Pokud tedy uživatel nevyžaduje po
příchozím spojení kontrolu terminálu oproti tomuto souboru (man securetty),
jednoduše povolí vzdálené přihlášení uživatele root
pomocí
proměnné ROOT_LOGIN_REMOTE.
Další možnost provázání souboru /etc/rc.config
s jinými
skripty je možné spatřit např. u služeb. Ukážeme si to na příkladu
programu gpm, který obsluhuje myši. Nejprve si ukážeme záznamy,
které se týkají gpm v souboru /etc/rc.config
:
# # gpm will be started in runlevel 2 with this parameters # GPM_PARAM="-t ms -m /dev/mouse -M -t ps2 -m /dev/psaux -R /dev/gpmdata" # # Should gpm be started on this machine? ("yes" or "no") # START_GPM="yes"Pro ty z vás, kteří používáte Linux denně a jeho administrace je pro vás denním chlebem, není třeba nic dodávat. Proměnná START_GPM obsahuje hodnoty "yes" nebo "no" podle toho, zda si administrátor systému přeje, aby gpm běželo nebo nikoli.
Administrátor našeho vzorového systému si přeje, aby gpm běželo a
navíc si přeje, aby démon gpm dostal na příkazové řádce parametry
"-t ms -m /dev/mouse -M -t ps2 -m /dev/psaux -R /dev/gpmdata". Přeje si
tedy, aby gpm obsluhoval dvě myši - sériovou připojenou na port
/dev/mouse
(což bude pravděpodobně symbolický odkaz na první
nebo druhý sériový port), ps/2 myš (zařízení /dev/psaux
).
Navíc si administrátor přeje, aby se gpm chovalo jako tzv. repeater a
používalo soubor /dev/gpmdata
pro výstup. Potom bude možné
obě myši použít např. v systému X Window.
Jak je zařízena obsluha těchto proměnných? Opět velmi jednoduše. Balík gpm
obsahuje startovací skript /sbin/init.d/gpm
, který obsahuje
vše potřebné:
... test "$START_GPM" = yes || exit 0 # The echo return value for success (defined in /etc/rc.config). return=$rc_done case "$1" in start) checkproc /usr/sbin/gpm && { killproc /usr/sbin/gpm 2> /dev/null echo -n "Re-" } echo -n "Starting console mouse support (gpm):" startproc /usr/sbin/gpm $GPM_PARAM || return=$rc_failed echo -e "$return" ;; ...Nejprve si otestujeme, zda si superuživatel přeje spustit gpm a poté podle prvního argumentu zajistíme vše potřebné. Pokud je skript spuštěn s parametrem start, je gpm spuštěno s parametry uloženými v proměnné GPM_PARAM.
V příští části se budeme věnovat některým základním konfiguračním možnostem distribuce SuSE Linux.