Tizedik lecke

"A Unix az az operációs rendszer, melyet buherátorok írtak saját maguk és más buherátorok számára. Ezért a Unix jelszava: Az amatorök dögöljenek meg!"
 

Tippek és trükkök

Ez a lecke azok számára készült, akik már egy kissé otthonosak a Unixban, ismerik a fontosabb parancsokat és kapcsolóikat, de tanácstalanok, hogy tulajdonképpen hogyan és mire is használják oket. Bátorításul bemutatunk néhány tippet.

Megkapta-e a címzett a levelünket?

A Unix a beérkezo leveleket egy fájlban tárolja, melynek neve egyezik a felhasználó accountjának nevével. Ezek az inbox fájlok a legtöbb helyen a /usr/spool/mail alkönyvtárban vannak. (Kivétel a Silicon Graphics gépek, ahol a /usr/mail-ben. :-( A saját inboxunkon kívül természetesen senki másét nem tudjuk elolvasni, de az ls paranccsal meg tudjuk nézni, így látjatjuk, hogy levelezopartnerünknek van-e levele a postaládájában. Ha ezt a vizsgálatot levelünk elküldése elott és után is elvégezzük, meggyozodhetünk róla, hogy a levél valóban megérkezett. (Némely Unix rendszerek hajlamosak arra, hogy ha a címzett disk quota-ja kimerül, akkor a hozzá beérkezo leveleket nyomtalanul eltüntetik.)

A Unix három különféle idopontot tárol a fájlokról, amelyet az ls parancs zárójelben megadott kapcsolóival lehet megtudni:

  1. Last Modificaton - utolsó módosítás (write) (ls -l)
  2. Last Access - utolsó muvelet (írás, olvasás, másolás, stb.) (ls -lu)
  3. Last Inode Change - utolsó inode módosítás (create, chmod, stb.) (ls -lc)

E három idopont egymáshoz viszonyított értékébol levonhatók bizonyos -nem okvetlenül helytálló- következtetések. (Például: ha a Last Access késobbi, mint a Last Write, akkor levelünket valószínüleg elolvasták, stb.)

Parancsok végrehajtása bejelentkezés nélkül

Gyakori eset, hogy több gépre is van accountunk, be vagyunk jelentkezve az egyik helyen és valamiért szeretnénk egy parancsot végrehajtani a másik gépen. (Például szeretnénk kiadni egy w parancsot, hogy lássuk, ki milyen processzt futtat a másik gépen.) Ehhez be kellene jelentkeznünk a telnet vagy az rlogin segítségével, beírni a jelszavunkat, begépelni a parancsot és végül kilépni. Van azonban egy kényelmesebb megoldás, az rsh parancs (remote shell). Az rsh a neki megadott parancsot nem nálunk, hanem a távoli gépen hajtja végre. Tegyük fel, hogy az ind12 gépen vagyunk és meg akarjuk nézni, ki milyen processzt futtat az ind03-on. Íme:

ind12% rsh ind03 w

Feltesszük, hogy az ind03 gépen ugyanaz a username-ünk, mint az ind12-n. Ha ez nem így van, akkor a parancsnak meg kell adnunk azt az username-t, amelyiken a parancsot végre szeretnénk hajtani. Ha például a gold.uni-miskolc.hu gépen szeretnénk végrehajtani egy last parancsot és ott valamilyen szeszély folytán xkrm5687 a username-ünk, akkor a megfelelo parancs így néz ki:

ind12% rsh gold.uni-miskolc.hu -l xkrm5687 -n last

Megjegyzés: Sajnos az rsh parancs kapcsolóit a különféle Unix rendszerekben kicsit másképp hívják. A mi példáink Silicon Graphics gépekre vonatkoznak; aki ettol eltéro gépen próbálkozik, az nézzen utána az rsh parancs kapcsolóinak a man-ban!

Ahhoz, hogy az rsh parancs csakugyan végre is hajtsa a kívánt parancsot a távoli gépen és ne a "Permission denied" sztereotip üzenettel térjen vissza, kell, hogy a távoli gépen legyen egy .rhosts fájlunk a kiindulási könyvtárunkban (home directory). A .rhost fájl írja le, hogy mely hostokról milyen username-vel lehet rsh-val belépni. Nézzük az ind12 gépen található alábbi minta .rhosts fájlt:

ind03
ind11
gold xkrm5687
suma1 stsmork

Ebbol a következok derülnek ki. Az ind03 és ind11 gépekrol be tudunk rsh-zni az ind12-re feltéve, hogy ugyanaz a username-ünk, mint az ind12-n. A gold-ról csak az xkrm5687 nevü user, a suma1-rol pedig csak stsmork tud távolról parancsokat végrehajtani az ind12-n lévo accountunkon, emennyiben ez a szándékuk.

VIGYÁZAT: Ha valakit felveszünk a .rhosts fájlba, akkor attól a rendszer -Unixban meroben szokatlan módon- nem fogja kérdezni a jelszót, ezért legyünk nagyon óvatosak, mikor .rhosts fájlt készítünk!

A .rhost fájl létrehozásának van egy további kényelmes következménye is: az rlogin parancs nem kérdezi meg a jelszót, mikor olyan gépre tépünk be, ahol a .rhosts fájlban meg van adva a gépünk neve. (Természetesen itt is feltétel, hogy a két gépen azonos legyen a username-ünk, vagy ha nem, akkor a másik username legyen feltüntetve a .rhosts fáljban.)

Talk beszélgetések logózása

A tee olyan Unix program, amely a bemenetére csövezett adatokat megjeleníti a képernyon (standard kimeneten), és egyúttal a paraméterként megadott fájlba is kiírja. Ha például szeretnénk rögzíteni egy beszélgetés szövegét, amelyet a suma2 gépen bonyolítunk le, akkor a kapcsolat felvétele elott tegyük a következoket:

suma1% telnet suma2 | tee duma.log

Ettol kezdve minden képernyon megjeleno karakter egyúttal a duma.log fájlba is bekerül, egészen addig, míg a <Ctrl-d> leütésével ki nem lépünk a suma2 géprol. Miután így bejutottunk a suma2-re, a szokásos módon talkoljuk meg a beszélgetopartnerünket és csevegjünk vele. Késobb bármikor visszajátszhatjuk a beszélgetés szövegét a duma.log fájlból a more vagy a cat segítségével.

Foto ftp

A "foto ftp"-nek csúfolt eljárással olyan gépekrol hozhatunk el bináris fájlokat, ahová valamilyen okból nem tudunk ftp-vel bejutni. (Ennek általában az az oka, hogy a két gép között annyira lassú a kapcsolat, hogy a hagyományos ftp program timeout hibával elakad.) A módszer a következo lépésekbol áll:

  1. Jelentkezzünk be interaktívan a távoli gépre.
  2. A távoli gépen uuencode-oljuk be az áthozni kívánt fájlt.
  3. Kapcsoljuk be a logfájl szolgáltatást a lokális gépen. (Ha PC-rol jelentkeztünk be, akkor ez általában nem gond, mert minden terminál emulátor képes fájlba másolni a képernyon megjeleno szöveget. Ha a lokális gép Unixos, akkor használhatjuk az elozo pontban leírt módszert.)
  4. A cat segítségével írassuk ki a képernyore a 2. pontban létre hozott uuencode-olt fájlt. (A 2. pont egyébként kihagyható, mert az uuencode program alapértelmezésben a képernyore küldi kimenetét.)
  5. Lépjünk ki a távoli géprol és a lokális gépen keletkezett log fájlt uuedecode-oljuk ki.

Átjelentkezés egyik accountról a másikra

Elofordulhat, hogy valamilyen okból át akarunk jelentkezni egy másik accountra. (Pl. több accountunk is van ugyanazon a gépen). Ilyenkor elvileg újra be kellene telnet-elnünk, beírni a másik username-t, megadni a másik jelszót, stb. Van egyszerubb út is; ha pl. éppen orlando vagyunk és stsmork szeretnénk lenni, akkor:

zeus% su - stsmork

A parancs megkérdezi stsmork jelszavát és -hacsak el nem gépeltük- átjelentkezik az stsmork accountra. A minusz jel és az username közé KELL a szóköz karakter!! Az su parancs használatát a rendszer biztonsági okokból egy sulog nevu fájlban tárolja.

FIGYELEM! Soha ne adjuk ki paraméterek nélkül az su parancsot! Ez ugyanis a su root-nak felel meg, ami betörési kísérletnek számít, amit a rendszeradminisztrátorok rossznéven szoktak venni!


*************************************************************************
*=                                                                     =*
*=                           SZERZOI JOGOK                             =*
*=                                                                     =*
*=   Ez  a dokumentum a Unix  operacios  rendszer  es a szamitogepes   =*
*=   halozatok elterjedeset  kivanja  elosegiteni, ezert dijmentesen   =*
*=   terjesztheto.  Nem szabad azonban a terjesztes soran a szoveget   =*
*=   megvaltoztatni,  barmilyen  modon  megcsonkitani  es a  szerzoi   =*
*=   jogokra vonatkozo megjegyzest eltavolitani!  Sem  a dokumentum,   =*
*=   sem annak barmely resze nem hasznalhato fel segedanyagkent vagy   =*
*=   tankonyvkent profitorientalt intezmenyekben vagy tanfolyamokon,   =*
*=   a szerzok elozetes irasbeli engedelye nelkul!                     =*
*=                                                                     =*
*=   (C) Csaky Istvan es Mork Peter         Miskolc, 1994. januar 19   =*
*=                                                                     =*
*************************************************************************