STAP-SERVER(8) System Manager's Manual STAP-SERVER(8) JMENO stap-server - kompilacni server systemtapu POUZITI [ service ] stap-server { start | stop | restart | condrestart | try-restart | force-reload | status } [ options ] POPIS Kompilacni server systemtapu (stap-server) je sitova sluzba. Prijima zabezpecene SSL spojeni od klienta a vykonava pozadavky na spusteni prikazu stap . Kazdy stap-server inzeruje svoji pritomnost a konfiguraci na lokalni siti prostrednictvim mDNS (avahi), a tim umoznuje klientum automatickou detekci serveru. stap-server nabizi: o sitovou sluzbu umoznujici pristup ke kompilacnim serverum systemtapu o pohodlne ovladani nakonfigurovanych, nebo "ad-hoc" kompilacnich serveru systemtapu ARGUMENTY Musi byt urcena alespon jedna z nasledujicich voleb: start Spustit servery. Urcene servery budou nastartovany. Pokud neni urcen zadny server, spusti se nakonfigurovane servery. Pokud neni zadny server nakonfigurovan, spusti se server pro verzi jadra architekturu odpovidajici hostitelskemu stroji. Pokud je urceny server jiz spusten, bude pro nej pozadavek na spusteni ignorovan. Pokud selze start daneho serveru, operace skonci chybou. stop Zastavit server(y). Urcene servery se zastavi. Pokud zadny server neni urcen, zastavi se vsechny bezici servery. Pokud urceny server nebezi, skonci pro nej "stop" akce uspechem. Pokud pokus o zastaveni serveru selze, stap-server selze tez. restart Zastavit a znovu nastartovat sluzby. Specifikovane servery se zastavi a znovu nastartuji. Pokud neni zadny server urcen, dojde k pokusu o restart vsech serveru. Pokud zadne nebezi, bude se 'restart' rovnat pokusu o start. condrestart Zastavit a znovu nastartovat sluzby. Specifikovane servery se zastavi a znovu nastartuji. Pokud urceny server nebezi, nebude nastartovan. Pokud neni zadny server urcen, dojde k pokusu o restart vsech bezicich serveru. Pokud zadny server nebezi, nestane se nic. try-restart Tato akce je shodna s condrestart. force-reload Zastavit vsechny bezici servery, znovu nacist konfiguracni soubory, a restartovat sluzby jako by byl dan prikaz start . status Vypsat informaci o stavu serveru. Vypise informaci o specifikovanych serverech. Pokud nebyl zadny server specifikovan, vypise se informace o stavu vsech bezicich serveru. VOLBY Pro upresneni argumentu je mozno pouzit nasledujici volby: -c configfile Urcuje globalni konfiguracni soubor jako dodatek k vychozimu globalnimu konfiguracnimu souboru popsanemu nize. Zadany soubor bude zpracovan po vychozim globalnim konfiguracnim souboru. Pokud se volba -c pouzije vice nez jednou, bude bran zretel jen na posledni pouziti. -a architecture Tato volba urcuje cilovou architekturu serveru a je analogicka volbe -a programu stap. Viz manualova stranka stap(1) , ktera obsahuje podrobnosti. Vychozi architektura je architektura hostitelskeho systemu. -r kernel-release Urcuje verzi ciloveho jadra a je analogicka volbe -r programu stap. Viz manualova stranka stap(1) , ktera obsahuje podrobnosti. Vychozi verze je verze hostitelskeho systemu. -I path Tato volba urcuje dodatecne umisteni, ve kterem budou servery hledat tapset skripty. Je analogicka volbe -I prikazu stap. Viz manualova stranka stap(1) , ktera obsahuje podrobnosti. -R path Tato volba urcuje umisteni zdrojovych kodu pro preklad jaderneho modulu systemtapu pro pouziti systemtap serveru a je analogicka volbe -R programu stap. Viz manualova stranka stap(1) , ktera obsahuje podrobnosti. -B options Tato volba urcuje volby, ktere se predaji prikazu make pri sestavovani systemtap modulu a je analogicka volbe -B programu stap. Viz manualova stranka stap(1) , ktera obsahuje podrobnosti. -i Tato volba urcuje systemtap server, ktery obsluhuje vsechny verze jadra, ktere jsou nainstalovany v /lib/modules/. -n nickname Umoznuje urcit server pomoci prezdivky. Pokud se nastavi -n, bude pouzit bezici server s danou prezdivkou. Pokud se takovy server nenajde, budou na danou prezdivku prohledany konfiguracni soubory pro vychozi servery, nebo bude prohledana cesta urcena v globalnim konfiguracnim souboru, nebo v konfiguracnim souboru urcenem prepinacem -c. Pokud se pozadovany server najde, pouziji se pro nej prepinace -a, -r, -I, -R, -B a -u. Pokud se zadny server pro danou prezdivku nenajde a akce je start (nebo akce ktera se tak chova) (viz ARGUMENTY), server s danou prezdivkou se nastartuje. -p pid Tato volba umoznuje urcit server prostrednictvim ID procesu. Pokud se nastavi -p, bude hledan bezici server s danym PID. Pokud se takovy nenajde, vznikne chyba. Pokud se takovy server najde, predaji se mu volby -a, -r, -I, -R, -B a -u. -u user-name Kazdy kompilacni server systemtapu se za normalnich okolnosti spousti pod uzivatelem stap-server (pro initscript) nebo jako uzivatel, ktery spousti stap-server, pokud neexistuje jine nastaveni (viz sekce SOUBORY). Tato volba urcuje uzivatele, pod kterym pobezi servery. Takovy uzivatel musi byt clenem skupiny stap-server. --log logfile Tato volba umoznuje nastavit pro kazdy server separatni log soubor. Volbu lze opakovat a tim nastavit log soubor kazdemu ze specifikovanych serveru zvlast. Pokud je specifikovano vice serveru, nez voleb --log, pouzije se pro zbyvajici servery vychozi log soubor (viz sekce SOUBORY). --port port-number Nastavi port pro kazdy specifikovany server. Volbu lze opakovat a urcit tak port pro vsechny specifikovane servery. Pokud je specifikovano vice serveru nez voleb --port, bude pro zbyvajici servery zvolen nahodny port. --ssl certificate-db-path Tato volba umoznuje specifikaci separatni NSS databaze pro kazdy server, Volbu lze opakovat a aplikovat ji na jednotlive specifikovane servery. Pokud je specifikovano vice serveru, nez voleb --ssl, bude pro zbyvajici servery pouzita vychozi databaze (viz sekce SOUBORY). --max-threads threads Urcuje pocet vlaken pro obsluhu soucasnych pozadavku. Pokud threads == 0, budou vsechny pozadavky obsluhovany seriove v jedinem - hlavnim vlakne. Vychozi hodnota je pocet dostupnych jader procesoru. KONFIGURACE Pomoci konfiguracnich souboru je mozne: o urcit globalni konfiguraci logovani, konfiguracni soubory serveru, stavove soubory a dalsi globalni parametry. o urcit ktere servery se nastartuji ve vychozim nastaveni. Globalni Konfigurace Globalni konfiguracni soubor obsahuje nastaveni globalnich promennych, ktere ovlivnuji celkovou operaci sluzby. Kazda radka zacinajici znakem '#' se ignoruje. Vsechny ostatni radky museji mit tvar VARIABLE=VALUE. Nejde o shell skript. Cely zbytek raky za znakem '=' bude interpretovan jako hodnota a ta bude prirazena prislusne promenne. Lze pouzit nasledujici promenne: CONFIG_PATH Absolutni cesta k adresari, ktery obsahuje vychozi konfiguraci serveru. STAT_PATH Absolutni cesta k adresari se status soubory. LOG_FILE Absolutni cesta k log souboru. STAP_USER Uzivatel pod kterym stap-server(y) pobezi. Vychozi hodnota je stap-server pro initskript, jinak uzivatel, ktery spousti stap-server. Nasleduje priklad globalniho konfiguracniho souboru: CONFIG_PATH=~/my-stap-server-configs LOG_FILE=/tmp/stap-server/log Individualni konfigurace serveru Pokud pro akci start (nebo ji podobnou akci) nebyly specifikovany konkretni servery, budou nastartovany servery odpovidajici jednotlivym individualnim konfiguracnim souborum. Kazdy konfiguracni soubor obsahuje nastaveni promennych, ktere se pouziji ke zkonfigurovani individualniho serveru. Kazda radka zacinajici znakem '#' se ignoruje. Vsechny ostatni radky musi byt tvaru VARIABLE=VALUE. Nejde o shell skript. Cely zbytek radku za znakem '=' se interpretuje jako hodnota. Kazdy konfiguracni soubor musi mit nazev s priponou .conf. Viz stappaths(7) kde je popsano vychozi umisteni techto souboru. Toto vychozi umisteni muze byt zmeneno v globalnim konfiguracnim souboru pomoci volby -c (viz OPTIONS). Lze pouzit nasledujici promenne: ARCH Urcuje cilovou architekturu pro dany server a odpovida prepinaci -a (viz VOLBY). Pokud ARCH neni nastavena, pouzije se architektura hostitelskeho stroje jako vychozi. RELEASE Urcuje verzi jadra pro dany server a odpovida volbe -r (viz VOLBY). Pokud RELEASE neni nastavena, pouzije se release hostitelskeho stroje jako vychozi. BUILD Urcuje volby, ktere se predaji prikazu make pri sestavovani jaderneho modulu systemtapu. Jde o promennou typu pole, kde kazdy prvek odpovida volbe -B (viz VOLBY). Pomoci BUILD=STRING se pole vymaze a prvni prvek se nastavi na STRING. Pomoci BUILD+=STRING se do pole prida STRING jako dalsi prvek. INCLUDE Urcuje seznam adresaru, ve kterych bude server hledat tapset skripty. Jde o pole, kde kazdy prvek odpovida prepinaci -I, viz VOLBY). Prostrednictvim zapisu INCLUDE=PATH se pole smaze a prvni jeho prvek se nastavi na PATH. Pomoci zapisu INCLUDE+=PATH se do pole prida PATH jako dalsi prvek. RUNTIME Urcuje adresar, ktery obsahuje zdrojove soubory potrebne pro sestaveni jaderneho modulu systemtapu. Odpovida prepinaci -R (viz VOLBY). USER Urcuje uzivaltele, pod kterym server pobezi a odpovida volbe -u (viz VOLBY). NICKNAME Odpovida prezdivce pro server a take volbe -n (viz VOLBY). LOG Urcuje umisteni logovaciho souboru pro dany server a odpovida volbe --log (viz VOLBY). PORT Urcuje sitovy port, na kterem ma dany server poslouchat. Odpovida volbe --port (viz VOLBY). SSL Urcuje umisteni certifikacni databaze NSS, kterou ma dany server pouzit a odpovida volbe --ssl (viz VOLBY). MAXTHREADS Urcuje maximalni pocet vlaken pro obsluhu soucasnych pozadavku danym serverem Odpovida volbe --max-threads (viz VOLBY). Nasleduje ukazka konfiguracniho souboru: ARCH= USER= RELEASE= NICKNAME=native Tim, ze ponechame ARCH, USER, a RELEASE prazdne docilime toho, ze se pro ne pouziji vychozi hodnoty. Konkretnejsi priklad: ARCH=i386 RELEASE=2.6.18-128.el5 PORT=5001 LOG=/path/to/log/file Komplikovanejsi priklad: 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 AUTENTIZACE Bezpecnost SSL spojeni mezi klientem a serverem zavisi na spravnem zachazeni s certifikaty. Duveryhodnost daneho systemtap serveru nelze urcit automaticky bez duveryhodne autority, ktera vydala certifikat. To nemusi byt prakticke pro kazdodenni pouziti, proto se klienti autentizuji proti sve vlastni databazi duveryhodnych certifikatu. V tomto kontextu vytvoreni relace duvery znamena pridani serveroveho certifikatu do databaze klienta. Pro initscript lokalniho serveru se toto deje automaticky. Jakmile se nainstaluje balicek systemtap-server, certifikat serveru pro vychoziho uzivatele (stap-server) se automaticky vygeneruje a prida do databaze lokalniho klienta. Lokalni klient tak automaticky povazuje lokalni server za duveryhodny "module signer". Je-li stap spusten neprivilegovanym uzivatelem (t.j. uzivatelem, ktery neni root, ani clen skupiny stapdev, ale muze byt clenem skupiny stapusr a/nebo stapsys) automaticky se pouziji volby --use-server a --privilege. To znamena, ze neprivilegovani uzivatele mohou pouzivat lokalni stap server v neprivilegovanem rezimu bez zvlastnich nastaveni. Neprivilegovani uzivatele mohou tez pouzivat kompilacni server prostrednictvim prepinacu --use-server a --privilege, ale samozrejme nebudou moci zavest systemtap modul do jadra (s volbou -p4 se o to systemtap nebude pokouset). Aby bylo mozno pouzit stap server na vzdalenem stroji, je potreba nainstalovat jeho serverovy certifikat do klienta. Viz volba --trust-servers v manualove strance stap(1) a take soubor README.unprivileged mezi zdrojovymi soubory systemtapu. PRIKLADY Jednoduche priklady shrnuje manualova stranka stapex(3stap). Nastartovat zkonfigurovany server, nebo vychozi server pokud zadny server neni zkonfigurovany: $ [ service ] stap-server start Spustit systemtap server, ktery bude obsluhovat vsechna jadra nainstalovana v /lib/modules: $ [ service ] stap-server start -i Vypsat informace o bezicich serverech: $ [ service ] stap-server status Nastartovat server s konfiguraci podobnou jinemu jiz bezicimu serveru s danou prezdivkou NICKNAME, ovsem pro odlisnou architekturu: $ [ service ] stap-server start -n NICKNAME -a ARCH Nastartovat server pro nenainstalovane jadro (krizova kompilace) $ [ service ] stap-server start -a ARCH -r /BUILDDIR Zastavit jeden ze serveru odkazem na jeho PID (dle stap-server status): stap-server status): $ [ service ] stap-server stop -p PID Spustit skript prostrednictvim kompilacniho serveru: $ stap SCRIPT --use-server Spustit skript jako neprivilegovany uzivatel pomoci kompilacniho serveru: $ stap SCRIPT Zastavit vsechny kompilacni servery: $ [ service ] stap-server stop Restartovat server po zmene globalni konfigurace a/nebo kdyz byl pridan novy , nebo odebran, ci zmenen existujici server: $ [ service ] stap-server force-reload BEZPECNOST A OCHRANA SOUKROMI Systemtap je systemovy administracni nastroj. Zpristupnuje interni datove struktury jadra, ktere mohou obsahovat privatni informace. Prectete si manualovou stranku stap(1) ktera prinasi vice informaci. Jako sitovy server by mel stap-server byt aktivovan s rozvahou, aby se omezila vsechna relevantni rizika. Zvazte nasledujici opatreni: 1 Spoustejte stap-server pod beznym uzivatelem, nikdy ne pod uzivatelem root. Kdyz je stap-server spusten jako sluzba (t.j. service stap-server ...), pak vychozi chovani je, ze vsechny servery bezi pod uzivatelem stap-server. Pri primem spusteni bezi service stap-server pod uzivatelem ktery jej vyvolal. V kazdem pripade lze uzivatele zmenit volbou -u, nebo pripadne nastavenim STAP_USER=username v globalnim konfiguracnim souboru, nebo nastavenim USER=username v konfiguracnim souboru individualniho serveru. Dany uzivatel musi mit pravo spustit proces pod jinym uzivatelem. Vice informaci viz KONFIGURACE. Zvoleny uzivatel musi mit take pravo zapisovat do logovaciho souboru. Umisteni logovaciho souboru lze upravit nastavenim LOG_FILE=path v globalnim konfiguracnim souboru. Vice informaci viz KONFIGURACE. Zvoleny uzivatel musi mit pravo cteni i zapisu do adresare obsahujiciho status soubory. Toto umisteni lze upravit nastavenim STAT_PATH=path v globalnim konfiguracnim souboru. Vice informaci viz KONFIGURACE. Zvoleny uzivatel musi mit pravo cteni a zapisu pro adresar, kde se sestavuje uprobes.ko a souvisejici soubory. Systemtap server nepobezi, pokud zvolenym uzivatelem je root. 2 Spustte stap-server s omezenimi na maximalni cas behu, velikost souboru, velikost pouzite pameti tak, aby ani potencialne chybne vstupy nezpusobily skody. Pokud uzivatelem, pod kterym server bezi, je stap-server, pak kazdy pozadavek server obsluhuje v ramci limitu nastavenych v souboru ~stap-server/.systemtap/rc. V opacnem pripade nejsou zadne limity nastaveny. 3 Spustte stap-server pri nastavene promenne prostrdi TMPDIR, ktera ukazuje do oddeleneho umisteni, kde jsou zapnuty uzivatelske kvoty. Tim se zabrani nezadoucimu zaplneni souboroveho systemu. Vychozi TMPDIR je /tmp/. 4 Aktivujte firewall tak, aby klientske pozadavky mohly prichazet jen z relativne bezpecnych siti. Pro automatickou volbu serveru klienty je treba nainstalovat avahi jak na serveru, tak i na klientovi. Firewall musi propoustet mDNS zpravy. Kompilacni server systemtapu a souvisejici nastroje pouzivaji k sitove komunikaci SSL jak je implementovana v ramci NSS. NSS se take pouziva pro spravu certifikatu. Souvisejici databaze certifikatu musi byt odpovidajicim zpusobem chranena, aby nedoslo ke snizeni bezpecnosti systemu. Pro navyseni bezpecnosti kontroluje systemtap klient spravna pristupova opravneni drive nez pristoupi k databazi certifikatu. SOUBORY Dulezite soubory a jim odpovidajici umisteni shrnuje manualova stranka stappaths (7). VIZ TEZ stap(1), staprun(8), stapprobes(3stap), stappaths(7), stapex(3stap), avahi, ulimit(1), NSS CHYBY Pouzijte projektovou bugzillu, nebo mailing list. http://sourceware.org/systemtap/, . error::reporting(7stap), https://sourceware.org/systemtap/wiki/HowToReportBugs STAP-SERVER(8)