Syntax highlighting of Archiv/Úvod do UNIXu

{{predmet|Úvod do UNIXu|Libor Forst|SWI095}}
= Odkazy =
*[http://www.ms.mff.cuni.cz/~forst/vyuka.html#unix stránka přednášky]
*cvičíci a jejich stránky: [http://pasky.or.cz/~pasky/vyuka/2009-SWI095/ Petr Baudiš], Jiří Calda, [http://www.ksi.mff.cuni.cz/~dedek/NSWI095_LS20089/ Jan Dědek], [http://www.benhur.prf.cuni.cz/medved-7/cviceni1/ Jan Chadima], Tomáš Knap, [http://www.ms.mff.cuni.cz/~kolod1am/myweb/swi095/ David Kolovratník], [http://kti.ms.mff.cuni.cz/~kucerap/unix/ Petr Kučera], [http://www.ms.mff.cuni.cz/~kuncj6am/index.php?p=unix Jiří Kunčar], Dan Lukeš, Luboš Magic, [http://atrey.karlin.mff.cuni.cz/~miero/vyuka/ Miroslav Rudišin], [http://www.bofh.cz Jan Šembera], [http://atrey.karlin.mff.cuni.cz/~vorner/nswi095.html Michal Vaner], Marek Vašut
*cvičíci z minulých let: [http://web.archive.org/web/20071119133450rn_1/www.ms.mff.cuni.cz/~beran/vyuka/UNIX_TCPIP/ Martin Beran] (množství příkladu pro procvičení), Leo Galamboš, [http://nenya.ms.mff.cuni.cz/~kalibera/teaching-unix/ Tomáš Kalibera], [http://www.decky.cz/vyuka/unix/ Martin Děcký], [http://ufal.mff.cuni.cz/~novak/vyuka/SWI095/ Václav Novák], [http://www.devnull.cz/mff/uvod-do-unixu/2006/index.html Jan Pechanec], Jiří Semecký, [http://www.ms.mff.cuni.cz/~zembm2am/unix/ Martin Žember]
* zápisky ze cvičení: Petra Baudiše od [http://www.martinvseticka.eu/index.php?sekce=browse&page=79 Martina Všetičky]

= Rozširující informace ke zkoušce =
Při řešení zkouškových úloh se některé věci vyplatí znát podrobněji nežli byly probírané na přednáškach a cvičeních. Některé z nich naleznete níže. Nerozumíte-li něčemu, co tady není, přidejte to jako nový nadpis a někteří zkušenější to jistě rádi vysvětlí... ;-)

== Formát e-mailové zprávy ==
*zpráva ve formátu unixového mailboxu začíná řádkem ''From adresa@odesilatele datum''
*následuje zbytek hlavičky emailu, která má formát ''tag: hodnota''
**hodnota může být rozdělena na více řádcích, v tom případě je na začátku dalších řádků aspoň jeden bílý znak (mezera nebo tabulátor)
*hlavička obsahuje (může obsahovat) informace o doručení ''Received'', jedinečný identifikátor zprávy ''Message-Id'' a další informace poskytnuté odesílatelem ''(From, To, Cc, Date, ...)''
**komentovaný popis některých hlaviček s přihlédnutím ke spamu je [http://www.krypta.cz/articles.php?ID=244 v dolní části článku o spamu na serveru Krypta]
**je dobré si uvědomit, že jediný údaj, kterému lze v emailu věřit, je IP adresa odesílajícího mailserveru zaznamenaná naším přijímajícím mailserverem. Ostatní údaje vám mohl podvrhnout odesílatel. Aby byl email důvěryhodný, musel by celou cestou putovat mezi mailservery, které si důvěřují a na začátku cesty být odeslán uživatelem, který prokázal svoji identitu. Což se však v současnosti vůbec nedělá a proto pro důvěryhodnou komunikaci potřebujeme emaily podepisovat...
<pre>
From zaskodnik@matfyz.cz  Thu Jun  9 09:06:05 2005
Return-Path: <zaskodnik@matfyz.cz>
X-Original-To: honzik@ss1000.ms.mff.cuni.cz
Delivered-To: honzik@ss1000.ms.mff.cuni.cz
Received: from localhost (localhost [127.0.0.1])
        by ss1000.ms.mff.cuni.cz (Postfix) with ESMTP id E44F12C024
        for <honzik@ss1000.ms.mff.cuni.cz>; Thu,  9 Jun 2005 09:06:04 +0200 (CEST)
Received: from ss1000.ms.mff.cuni.cz ([127.0.0.1])
 by localhost (ss1000 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 14106-02 for <honzik@ss1000.ms.mff.cuni.cz>;
 Thu,  9 Jun 2005 09:06:03 +0200 (CEST)
Received: from u-pl20 (u-pl20.ms.mff.cuni.cz [195.113.21.150])
        by ss1000.ms.mff.cuni.cz (Postfix) with ESMTP id DFEB52C021
        for <honzik@ss1000.ms.mff.cuni.cz>; Thu,  9 Jun 2005 09:05:37 +0200 (CEST)
From: anicka.dusicka@matfyz.sk
Message-Id: <20050609070537.DFEB52C021@ss1000.ms.mff.cuni.cz>
Date: Thu,  9 Jun 2005 09:05:37 +0200 (CEST)
To: honzik@ss1000.ms.mff.cuni.cz
Subject: pranicko

Preji Ti hezky den! :-)
</pre>

== Zpracovávaní příchozích emailů ==
Typickým úkolem bývá registrace odpovědí nějaké ankety, automatické oznámení o nepřítomnosti adresáta počas jeho dovolené, vzdálené spouštění příkazů přes email, nebo komprese emailu pro zaslání textovky na mobilní telefon.

Hlavní myšlenka řešení spočíva v spuštění nějakého programu pro každý příchozí email. To lze snadno docílit pomocí souboru '''~/.forward''' . Neexistuje-li, všechny příchozí emaily se (typicky) doručují na místo uvedené ve proměnné ''$MAIL''. Vytvořením souboru ''~/.forward'' říkame, že každý email se má doručit na místa uvedené na jednotlivých řádcích tohoto souboru.

'''Příklad:'''
<pre>
/cesta/k/adresaru/soubor_postove_schranky
jina.emailova@adresa.com
\vaslogin
"| /cesta/k/adresaru/se/skriptem/jmeno_skriptu parametry pro skript"
</pre>

*Třetí řádek ukladá emaily na standní místo podle ''$MAIL''.
*Čtvrý řádek spustí skript a na standardní vstup mu pošle obsah emailu (formát viď výše). Pokud má program/skript parametry, pak je třeba celý řádek uzavřít do uvozovek.

'''Poznámky:'''
* skript se spouští práve jednou pro každý email, a běží s právy majitele schránky
* není zaručeno, že nebude spuštěno více skriptů najednou
* program může být binárka, anebo shell skript, ale musí být spustitelný ''(chmod +x)''
* spouštení programů nemusí fungovat, není-li správcem povoleno. Na MS ale z výukových účelů povoleno je... :-)
* skript/program musí končit návratovým kódem 0, což znamená "úspěšně převzato". [http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/sysexits.3.html Jiné návratové kódy] znamenají různé dočasné nebo trvalé odmítnutí. Po trvalém odmítnutí vygeneruje systém chybové hlášení a odešle ho odesilateli.

== Co tu ještě schází? ==
...

= Zadání zkouškových písemek =

== SEDCHECK (10.6.2005) ==
program, ktory sa spusta raz o polnoci a kontorluje "nebezpecia" v systeme, o ktorych potom posle spravcovi mail 

kontroluje tieto 4 veci: 

'''heslá'''
*kontroluje prazdne hesla uzivatelov (ulozene v /etc/passwd), s uid < 100, ktory niesu v /sec/passwd (fromat tohoto suboru sme si mohli zvolit...) 
*ak najde takehoto uzivatela nastavi mu heslo na "disable" 
*a posle spravu (sprava sa posle iba jedna suhrna na konci, a nesiem byt prazdna) 

'''práva adresárov'''
*vo vsetkych domoskych adresaroch (okrem root-a (toho som si nevsinmol ), najst subory a adresare zacinajuce sa bodkou, (iba v prvej urovni.. nie rekurzivne... ) 
*najst take co:

#maju vlastika rovnakeho ako vlastnik domovskeho adresara a maju pravo zapisu nastavene inak ako iba pre vastnika, 
#*o takychto suboroch poslat report a zobrat pravo zapisu 
#maju ineho vlastika ako vlastink HOME, v tom pripade poslat report a zmenit vlastnika... 

'''hesla v ~/.netrc'''
*v kazdom domovskom adresary existuje subor .netrc ktory obsahuje info o ftp serveroch.. 
*v nejakom takomto formate:
 machine menostroja 
 login nazovuzivatela 
 passwd heslo 
:pricom medzi tym mozu byt este nejake zvasty, a oddelovac nemusi byt novy riadok ale aj lubovolnuy pocet medzier, 
*ak v tomto subore najdeme server taky, ktory ma meno rozne od "anonymous" a ma nastavene heslo (t.j. passwd heslo sa v bolku pre danu machinu nachadza) poslat report a zobrat vsetky prava suboru.. 

'''nove set[ug]id subory'''
*prejst vsetky subory v systeme, okrem adresarov a symlinkou, take ze UID < 100 & ma nastaveny SetUID alebo GID < 100 & nastaveny SetGID porovnat so suborom /sec/setguid a poslat report o vsetkych takych novych suboroch, ktorym ale odoberieme SGID a SUID.