Úvod do UNIXu

Z ωικι.matfyz.cz
Verze z 6. 6. 2016, 17:13, kterou vytvořil Waran (diskuse | příspěvky) (Odkazy: Doplnění linku na cvičícího)

(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání
Úvod do UNIXu
Kód předmětu: NSWI095
Přednáší: Libor Forst

Odkazy[editovat | editovat zdroj]

Rozširující informace ke zkoušce[editovat | editovat zdroj]

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[editovat | editovat zdroj]

  • 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 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! :-)

Zpracovávaní příchozích emailů[editovat | editovat zdroj]

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_schranky
jina.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í?[editovat | editovat zdroj]

...

Zadání zkouškových písemek[editovat | editovat zdroj]

SEDCHECK (10.6.2005)[editovat | editovat zdroj]

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:
  1. 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
  2. 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.