{{predmet|Úvod do UNIXu|Libor Forst|SWI095}}
Odkazy
*stránka přednášky *cvičíci a jejich stránky: Petr Baudiš, Jiří Calda, Martin Hykl, Petr Kučera, Jiří Kunčar, Ladislav Láska, Miroslav Novotný, Tomáš Pop, Jan Šembera, Viliam Šimko, Ondrej Tichý, Michal Vaner, Marek Vašut, Josef Moudřík
*cvičíci z minulých let: Martin Beran (množství příkladu pro procvičení), Leo Galamboš, Tomáš Kalibera, Martin Děcký, Václav Novák, Jan Pechanec, Jiří Semecký, Martin Žember, Jan Dědek, Jan Chadima, Tomáš Knap, David Kolovratník, Dan Lukeš, Luboš Magic, Miroslav Rudišin
zápisky ze cvičení: Petra Baudiše od Martina Všetičky
zápisky ze cvičení: Jana Pechance od Václava Dajbycha
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 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...
From zaskodnik@matfyz.cz Thu Jun 9 09:06:05 2005Return-Path: <zaskodnik@matfyz.cz>X-Original-To: honzik@ss1000.ms.mff.cuni.czDelivered-To: honzik@ss1000.ms.mff.cuni.czReceived: 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.skMessage-Id: <20050609070537.DFEB52C021@ss1000.ms.mff.cuni.cz>Date: Thu, 9 Jun 2005 09:05:37 +0200 (CEST)To: honzik@ss1000.ms.mff.cuni.czSubject: pranickoPreji Ti hezky den! :-)
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:
/cesta/k/adresaru/soubor_postove_schrankyjina.emailova@adresa.com\vaslogin"| /cesta/k/adresaru/se/skriptem/jmeno_skriptu parametry pro skript"
*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 viz výše). Pokud má program/skript parametry, pak je třeba celý řádek uzavřít do uvozovek.
Poznámky:
skript se spouští právě 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". 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.