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.ji.cz/~pasky/vyuka/ Petr Baudiš], Jiří Calda, [http://www.decky.cz/vyuka/ Martin Děcký], [http://www.benhur.prf.cuni.cz/medved-7/cviceni1/ Jan Chadima], Petr Kučera, Dan Lukeš, Václav Novák, [http://www.devnull.cz/mff/uvod-do-unixu/index.html Jan Pechanec], [http://atrey.karlin.mff.cuni.cz/~miero/vyuka/ Miroslav Rudišin], Jiří Semecký, [http://www.bofh.cz/vyuka.php Jan Šembera], Martin Žember
*cvičíci z minulých let: [http://www.ms.mff.cuni.cz/~beran/vyuka/UNIX_TCPIP Martin Beran] (množství příkladu pro procvičení), [http://kocour.ms.mff.cuni.cz/~galambos/wiki/SWI095 Leo Galamboš], [http://nenya.ms.mff.cuni.cz/~kalibera/teaching-unix/ Tomáš Kalibera]

= 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 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. Pokud nějakou adresu potřebujeme, můžeme vzít třeba tu z prvního řádku po From. 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).

'''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)'' a obsahovat hlavičku interpretru ''(napr: #!/bin/sh)''
* spouštení programů nefunguje, není správcem povoleno. Na MS ale z výukových účelů povoleno je... :-)

== 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.