ePerTutti


Appunti, Tesina di, appunto informatica

GESTIONE DEI PR0CESSi IN AMBIENTE UNIX

ricerca 1
ricerca 2

GESTIONE DEI PR0CESSi IN AMBIENTE UNIX


In ambiente Unix, non sempre la sessione del terminale può essere adatta per i propri processi, molte volte per motivi di tempo si preferisce che una serie di istruzioni siano eseguite in un momento successivo. Lo scheduling dei job è quindi possibile attraverso i comandi:


at (usato quando si vuole specificare l'ora esatta in cui eseguire uncomando)


crontab (usato quando il processo deve essere ripetuto ad intervalliregolari)


batch (usato per eseguire un processo quando il computer non è occupato)




Molto spesso, sentendo parlare di modalità batch, si può pensare ai tempi in cui si basava l'intero lavoro su interminabili (o quasi :) elaborazioni della macchina al fine di produrre l'output desiderato, senza nessun intervento da parte dell'utente che poteva passare il suo tempo a grattarsi.

L'interattività su cui si basano oggi praticamente tutti i S.O. ha fatto dimenticare questa modalità che tuttavia è ancora presente, se non altro per operazioni di aggiornamento, backup che sono normali routine per una banca o per una qualsiasi attività che non voglia vedere il suo lavoro mandato a puttane ;). Per esempio gran parte delle banche (direi tutte :) svolgono dei backup parziali (riguardanti soltanto i dati modificati) a tempi regolari e una volta ogni N backup parziali (oppure ad una data prefissata) si procede al backup totale. Beh se lo volete proprio sapere sembra che in alcuni centri di calcolo, e mi riferisco sia a quelli esterni a cui viene data in affidamento l'elaborazione dei dati (si parla di outsourcing) che quelli interni alle banche (sono sempre di meno), i dati vengano spesso passati via modem ad un centro posto non necessariamente in Italia ed in caso di danneggiamento degli archivi è possibile sapere l'entità del danno e procedere alla risistemazione di essi. Ora potete dirmi pure che sono cazzate, ma io so che è la verità e queste informazioni possono essere facilmente reperibili quindi evitate di rompermi troppo. Scusatemi per questa parentesi e cominciamo a vedere il primo di questi tre comandi.


COMANDO AT


Questo comando risulterà di notevole utilità se avete intenzione di eseguire un processo ad una determinata ora. La sintassi è la seguente:


at opzioni tempo


La coda di default per questo cmd è a.


Vediamo le opzioni disponibili:


-f filespecifica il file che contiene il job

-l  visualizza i job messi in coda, come il cmd atq

-m  manda una mail all'utente quando il job e' stato terminato e sia se c'è stato un output, oppure no

-a specifica il nome della coda, per default il suo valore è a come già ricordato prima :)

-r     Cancella il job at specificato

-t specifica l'ora di esecuzione con il formato del cmd touch

(MeseGiornoOraMinutiAnno in ambiente Linux)


Vediamo un esempio del cmd at:


$ at midnight

fuck_hd

Control-D

Job XXXXXXX will be executed using /bin/sh



N.B. Al posto del Control-D (EOF) si potrà usare pure un punto singolo, in genere viene sconsigliato l'uso di CTRL-D per evitare che una doppia pressione comporti l'uscita dalla shell, cmq è anche vero che non tutti i S.O. accettano il punto singolo.


Da notare che dopo l'uso di questo cmd verrà comunicato l'ID che identifica univocamente il processo. Dopo questo cmd sarà creato un file in /var/spool/at o atjobs a seconda del S.O.  Nel mio caso il nome del file e' a0000100e434c8, dateci un'occhiata per rendervi conto di cosa c'è dentro :)


Alcune parole chiave di at


parola     tempo di esecuzione


midnight12:00 am

noon 12:00 pm

now    giorno e ora attuali

today  data attuale

tomorrow   il giorno successivo a quello attuale

teatime 16:00 (Uhhmmm mi sa di inglesi :)



E per le ore precise da orologi svizzeri?


ecco alcuni esempi


at 1745  (eseguira' il job alle 17:45)

at 545 PM

at now + 2 hours

at 1am Dec 9 + 1 year


credo che non ci sia bisogno di spiegazione.


Per uccidere il processo ricordatevi: at -r job-ID


COMANDO BATCH


Questo comando esegue un processo quando il computer non è occupato. Qui non ci sono parametri.


$batch

fuck_hd

EOF

Job XXXXXXXXXXX will be executed using /bin/sh



In genere la coda di default è la b, tuttavia questo standard POSIX è diverso per altri S.O. vedi linux.


COMANDO CRONTAB


Questo cmd viene utilizzato quando i processi devono essere ripetuti ad intervalli regolari. Esso si occupa della gestione dei cmd eseguiti dal demone cron e molte volte viene utilizzato dall'admin per scopi di pulizia, loggaggio ecc


Opzioni importanti


-e Modifica una voce del cmd crontab dell'user, oppure crea una nuova voce per l'utente.


-r Elimina la voce crontab dell'user.


Tutte le voci vengono registrate nel file /var/spool/cron/crontabs e sono leggibili solo da chi ha permessi root. Se esaminiamo il crontab noteremo che ci sono cinque campi separati da spazi prima del cmd vero e proprio. Il primo di questi campi rappresenta i minuti, seguono quindi le ore, i giorni del mese, il mese e il giorno della settimana.


TIPO RANGE

minuti da 0 a 59

ore  da 0 a 23

giorni settimana  da 0 (domenica)


L'asterisco indica invece che non avverrà nessun controllo su quel campo.


DISPONIBILITA' DEI COMANDI


Per i cmd at e batch, affinchè sia possibile il loro utilizzo, occorre verificare i file at.deny e at.allow il primo contiene una lista degli utenti che non possono utilizzare tali cmd e il secondo invece di quelli abilitati a tali funzioni. In genere questo file può essere modificato soltanto da chi è root. Se mancano invece completamente questi file chiunque può utilizzare i cmd. Questo discorso vale pure per il crontab dove i file di definizione dei permessi sono: cron.allow e cron.deny.


UTILITA'


Ok voglio solo dare delle idee sull'utilizzo di questi comandi da parte di un hacker. Beh il modo più  conosciuto di utilizzo sono le backdoor che vengono installate sul sys in determinati momenti e poi rimosse, questo permette di far sembrare all'admin certe cosette quasi una casualità ;) Ma a dire il

vero le backdoor utilizzate attraverso i cron prima o poi vengono individuate ed eliminate. Le più comuni sono quelle che aprono una shell con permessi di root su una determinata porta o che mettono una suid shell in giro per gli hd. Altro modo di utilizzo sono il mail bombing, infatti è possibile programmare ogni N minuti o giorni o settimane l'invio di un messaggio ad una determinata persona e se cancellate le tracce non vi trovano più :) Per il resto basta dare spazio alla fantasia, pensate per esempio ai password cracker, ai bouncers o a piccole anomalie da creare sul sys, all'aggiunta di un '+ +' in un file .rhosts, agli sniffers o a qualsiasi altra cosa..





Privacy

© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta