STAP-SERVER(8) | System Manager's Manual | STAP-SERVER(8) |
stap-server - kompilační server systemtapu
[ service ] stap-server { start | stop | restart | condrestart | try-restart | force-reload | status } [ options ]
Kompilační server systemtapu (stap-server) je síťová služba. Přijímá zabezpečené SSL spojení od klienta a vykonává požadavky na spuštění příkazu stap . Každý stap-server inzeruje svoji přítomnost a konfiguraci na lokální síti prostřednictvím mDNS (avahi), a tím umožňuje klientům automatickou detekci serverů.
stap-server nabízí:
Musí být určena alespoň jedna z následujících voleb:
Pokud je určený server již spuštěn, bude pro něj požadavek na spuštění ignorován. Pokud selže start daného serveru, operace skončí chybou.
Pro upřesnění argumentů je možno použít následující volby:
Výchozí architektura je architektura hostitelského systému.
Pomocí konfiguračních souborů je možné:
Globální konfigurační soubor obsahuje nastavení globálních proměnných, které ovlivňují celkovou operaci služby. Každá řádka začínající znakem '#' se ignoruje. Všechny ostatní řádky musejí mít tvar VARIABLE=VALUE. Nejde o shell skript. Celý zbytek řáky za znakem '=' bude interpretován jako hodnota a ta bude přiřazena příslušné proměnné.
Lze použít následující proměnné:
Následuje příklad globálního konfiguračního souboru:
CONFIG_PATH=~<user>/my-stap-server-configs LOG_FILE=/tmp/stap-server/log
Pokud pro akci start (nebo jí podobnou akci) nebyly specifikovány konkrétní servery, budou nastartovány servery odpovídající jednotlivým individuálním konfiguračním souborům. Každý konfigurační soubor obsahuje nastavení proměnných, které se použijí ke zkonfigurování individuálního serveru.
Každá řádka začínající znakem '#' se ignoruje. Všechny ostatní řádky musí být tvaru VARIABLE=VALUE. Nejde o shell skript. Celý zbytek řádku za znakem '=' se interpretuje jako hodnota.
Každý konfigurační soubor musí mít název s příponou .conf. Viz stappaths(7) kde je popsáno výchozí umístění těchto souborů. Toto výchozí umístění může být změněno v globálním konfiguračním souboru pomocí volby -c (viz OPTIONS).
Lze použít následující proměnné:
Následuje ukázka konfiguračního souboru:
ARCH= USER= RELEASE= NICKNAME=native
Tím, že ponecháme ARCH, USER, a RELEASE prázdné docílíme toho, že se pro ně použijí výchozí hodnoty.
Konkrétnější příklad:
ARCH=i386 RELEASE=2.6.18-128.el5 PORT=5001 LOG=/path/to/log/file
Komplikovanější příklad:
USER=serveruser RELEASE=/kernels/2.6.18-92.1.18.el5/build INCLUDE=/mytapsets INCLUDE+=/yourtapsets BUILD='VARIABLE1=VALUE1 VARIABLE2=VALUE2' DEFINE=STP_MAXMEMORY=1024 DEFINE+=DEBUG_TRANS RUNTIME=/myruntime NICKNAME=my-server SSL=/path/to/NSS/certificate/database
Bezpečnost SSL spojení mezi klientem a serverem závisí na správném zacházení s certifikáty.
Důvěryhodnost daného systemtap serveru nelze určit automaticky bez důvěryhodné autority, která vydala certifikát. To nemusí být praktické pro každodenní použití, proto se klienti autentizují proti své vlastní databázi důvěryhodných certifikátů. V tomto kontextu vytvoření relace důvěry znamená přidání serverového certifikátu do databáze klienta.
Pro initscript lokálního serveru se toto děje automaticky. Jakmile se nainstaluje balíček systemtap-server, certifikát serveru pro výchozího uživatele (stap-server) se automaticky vygeneruje a přidá do databáze lokálního klienta. Lokální klient tak automaticky považuje lokální server za důvěryhodný "module signer".
Je-li stap spuštěn neprivilegovaným uživatelem (t.j. uživatelem, který není root, ani člen skupiny stapdev, ale může být členem skupiny stapusr a/nebo stapsys) automaticky se použijí volby --use-server a --privilege. To znamená, že neprivilegovaní uživatelé mohou používat lokální stap server v neprivilegovaném režimu bez zvláštních nastavení. Neprivilegovaní uživatelé mohou též používat kompilační server prostřednictvím přepínačů --use-server a --privilege, ale samozřejmě nebudou moci zavést systemtap modul do jádra (s volbou -p4 se o to systemtap nebude pokoušet).
Aby bylo možno použít stap server na vzdáleném stroji, je potřeba nainstalovat jeho serverový certifikát do klienta. Viz volba --trust-servers v manuálové stránce stap(1) a také soubor README.unprivileged mezi zdrojovými soubory systemtapu.
Jednoduché příklady shrnuje manuálová stránka stapex(3stap).
Nastartovat zkonfigurovaný server, nebo výchozí server pokud žádný server není zkonfigurovaný:
$ [ service ] stap-server start
Spustit systemtap server, který bude obsluhovat všechna jádra nainstalovaná v /lib/modules:
$ [ service ] stap-server start -i
Vypsat informace o běžících serverech:
$ [ service ] stap-server status
Nastartovat server s konfigurací podobnou jinému již běžícímu serveru s danou přezdívkou NICKNAME, ovšem pro odlišnou architekturu:
$ [ service ] stap-server start -n NICKNAME -a ARCH
Nastartovat server pro nenainstalované jádro (křížová kompilace)
$ [ service ] stap-server start -a ARCH -r /BUILDDIR
Zastavit jeden ze serverů odkazem na jeho PID (dle stap-server status): stap-server status):
$ [ service ] stap-server stop -p PID
Spustit skript prostřednictvím kompilačního serveru:
$ stap SCRIPT --use-server
Spustit skript jako neprivilegovaný uživatel pomocí kompilačního serveru:
$ stap SCRIPT
Zastavit všechny kompilační servery:
$ [ service ] stap-server stop
Restartovat server po změně globální konfigurace a/nebo když byl přidán nový , nebo odebrán, či změněn existující server:
$ [ service ] stap-server force-reload
Systemtap je systémový administrační nástroj. Zpřístupňuje interní datové struktury jádra, které mohou obsahovat privátní informace. Přečtěte si manuálovou stránku stap(1) která přináší více informací.
Jako síťový server by měl stap-server být aktivován s rozvahou, aby se omezila všechna relevantní rizika. Zvažte následující opatření:
Když je stap-server spuštěn jako služba (t.j. service stap-server ...), pak výchozí chování je, že všechny servery běží pod uživatelem stap-server. Při přímém spuštění běží service stap-server pod uživatelem který jej vyvolal. V každém případě lze uživatele změnit volbou -u, nebo případně nastavením STAP_USER=username v globálním konfiguračním souboru, nebo nastavením USER=username v konfiguračním souboru individuálního serveru. Daný uživatel musí mít právo spustit proces pod jiným uživatelem. Vice informací viz KONFIGURACE.
Zvolený uživatel musí mít také právo zapisovat do logovacího souboru. Umístění logovacího souboru lze upravit nastavením LOG_FILE=path v globálním konfiguračním souboru. Vice informací viz KONFIGURACE.
Zvolený uživatel musí mít právo čtení i zápisu do adresáře obsahujícího status soubory. Toto umístění lze upravit nastavením STAT_PATH=path v globálním konfiguračním souboru. Vice informací viz KONFIGURACE.
Zvolený uživatel musí mít právo čtení a zápisu pro adresář, kde se sestavuje uprobes.ko a související soubory.
Systemtap server nepoběží, pokud zvoleným uživatelem je root.
Pokud uživatelem, pod kterým server běží, je stap-server, pak každý požadavek server obsluhuje v rámci limitů nastavených v souboru ~stap-server/.systemtap/rc. V opačném případě nejsou žádné limity nastaveny.
Výchozí TMPDIR je /tmp/.
Pro automatickou volbu serverů klienty je třeba nainstalovat avahi jak na serveru, tak i na klientovi. Firewall musí propouštět mDNS zprávy.
Kompilační server systemtapu a související nástroje používají k síťové komunikaci SSL jak je implementovaná v rámci NSS. NSS se také používá pro správu certifikátů. Související databáze certifikátů musí být odpovídajícím způsobem chráněná, aby nedošlo ke snížení bezpečnosti systému. Pro navýšení bezpečnosti kontroluje systemtap klient správná přístupová oprávnění dříve než přistoupí k databázi certifikátů.
stap(1), staprun(8), stapprobes(3stap), stappaths(7), stapex(3stap), avahi, ulimit(1), NSS
Použijte projektovou bugzillu, nebo mailing list. http://sourceware.org/systemtap/, <systemtap@sourceware.org>.
error::reporting(7stap), https://sourceware.org/systemtap/wiki/HowToReportBugs