Condividere e’ bello con Screen

screen_terminalSCREEN appartiene a quella categoria di applicativi molto potenti ma poco conosciuti, basta però utilizzarlo anche una sola volta per non poterne più fare a meno. Tecnicamente è un multiplexer per terminale, ovvero un applicativo con cui eseguire, all’interno di una console, molti comandi contemporaneamente, oppure connettersi allo stesso schermo virtuale da più console.

Proprio questa seconda opportunità è quella preferita dagli utenti GNU/Linux, infatti, tramite screen si può lanciare un programma, disconnettersi dal suo output, fare altro e riagganciarsi ad esso in un altro momento senza aver perso nulla!

Ma cerchiamo di spiegarci meglio; sicuramente per lavoro, sia chi usa Linux che chi usa Windows, acra’ dovuto connettersi in remoto su altre macchine e spesso si usano tool quali Putty, diciamo che per varie necessita’ le operazioni di calcolo lanciate sulla macchina su cui operate occupano parecchio tempo e non potete fare log-out per non perdere l’attivita’ iniziata…., bene, nel mondo unix e linux esistono due soluzioni a questo problema e si tratta delle utility `nohup` e `screen`. In questo articolo spiegherò come usare  “screen“.

Iniziamo con l’installazione :

sudo apt-get install screen

Fatto questo, si può avviare screen, semplicemente digitando nel terminale della macchina remota:

screen

e si avra’ subito una sessione in cui poter lavorare.
Per inviare comandi direttamente a screen, si usa la combinazione di tasti CTRL-a (abbreviati in seguito con C-a) e poi va digitato il comando.
Ad esempio, per avviare una nuova sessione, basta digitare C-a c, oppure per avere l’elenco dei comandi, C-a ?.
Le combinazioni sicuramente necessarie da sapere sono:

C-a ? :: visualizza la pagina di aiuto
C-a c :: avvia una nuova sessione
C-a n :: torna alla sessione precedente
C-a p :: va alla sessione successiva
C-a h :: crea un file di log per la sessione
C-a m :: avvia monitoraggio per una sessione
C-a a :: va alla sessione che ha segnalato un evento di monitoraggio
C-a d :: stacca il terminale da screen, lasciando il processo attivo
C-a k :: chiude la sessione corrente di screen

Ora, cosa succede se mi disconnetto senza chiudere screen? Viene semplicemente lasciata aperta la sessione, ed al nuovo accesso, basterà digitare:

screen -ls

per avere l’elenco delle sessioni attualmente attive, es :

@tuttiperlinux:~$ screen -ls
There is a screen on:
326.pts-2.tuttiperlinux (01.10.2014 09:50:57) (Attached)
1 Socket in /var/run/screen/S-tuttiperlinux.

e per riconnettersi alla sessione, basterà digitare:

screen -r 326

o piu’ semplicemente “screen -r” se esiste una sola sessione attiva.

Se la vostra necessita’ e’ invece quella di condividere una sessione di lavoro/diagnosi con altri colleghi potrete, ad esempio collegarvi remotamente tutti sullo stesso server , successivamente usare una utenza specifica per la manutenzione del servizio in questione e collegarvi tutti alla stessa sessione, esempio :

screen -x <user>; #che potra' essere tomcat, come apache ecc...

condividendone lo stesso terminal e potendo cosi interagire avendo davanti a voi tutto cio’ che succede sulla macchina a prescindere da chi stia impartendo i comandi.

Caratteristiche principali

Persistenza
Similmente a tool quali VNC, “screen” permette all’utente di avviare delle applicazioni da un computer e poi riconnettersi da un altro computer e continuare ad usare la stessa applicazione senza farla ripartire. Questo rende gli spostamenti, come ad esempio tra casa e lavoro, molto più semplici. Screen fornisce una funzionalità terminal-agnostic (ovvero funziona indipendentemente dal terminale utilizzato) perciò gli utenti possono disconnettersi e riconnettersi utilizzando tipi diversi di terminali, permettendo alle applicazioni di continuare senza percepire il cambio del terminale.
Finestre multiple
Possono essere create sessioni multiple, ognuna delle quali di solito ospita una singola applicazione. Le finestre sono numerate e l’utente può utilizzare la tastiera per passare da un’applicazione all’altra. Alcune GUI forniscono delle tab o qualche altra opzione simile per fornire questa caratteristica. Ogni finestra ha la sua scroll-back buffer, così è possibile vedere l’output anche quando la finestra non è attiva in quel momento e questo output può essere salvato anche quando si passa ad un altro computer. Le finestre possono essere ripartite in più screen tramite split screen. Mentre alcune applicazioni di testo hanno già questa funzionalità, Screen permette che ogni finestra sia divisa orizzontalmente in un numero qualsiasi di altre applicazioni.
Condivisione di sessione
Screen permette che più computer si connettano alla stessa sessione allo stesso tempo, permettendo così la collaborazione tra più utenti. Lo stesso computer può essere utilizzato per fare connessioni simultanee multiple, fornendo funzionalità alternative per la divisione della schermata, in particolare per i computer con più monitor.

Insomma una gran comodita’, un tool sicuramente utile da usare in tante diverse situazioni….!

Sovraccarico di rete

sovraccarico_reteCome visto nel precedente articolo “ottimizzare la connessione ad internet” spesso ci si deve destreggiare, con l’aiuto di alcuni tool ad hoc, per poter far funzionare al massimo la nostra connessione di rete. Ma come possiamo capire se tutto sta funzionando per il meglio, o meglio ancora poter capire quale applicazione stia effettivamente consumando piu’ banda.

Tuttavia conosco due utili applicazioni che possono fare al nostro caso, nethogs ed iftop.

 

La prima è Nethogs utile applicazione che monitora ogni tentativo di connessione da parte di qualsiasi software, ed è disponibile nei repository, quindi per installarla ci basterà dare il comando:

sudo apt-get install nethogs

E successivamente digitare da terminale il comando:

sudo nethogs <INTERFACCIA>

Dove al posto di INTERFACCIA inserirete  la vostra interfaccia di rete. Ad esempio la mia è la  wlan0,quindi digiterò :

sudo nethogs wlan0

Con questa applicazione dovreste cosi riuscire a capire quale applicazione si “frega” per così dire, la vostra banda; per completezza si puo’ anche usare, sempre da terminale, un comando quale :

netstat -tanupv

che elenca le connessioni tcp/udp in ascolto o stabilite nel sistema.

Per vedere invece le connessioni attive sul pc utilizzeremo il software iftop, installabile anch’esso tramite repository, e successivamente utilizzabile tramite il comando :

sudo iftop -i <INTERFACCIA>

quindi ….

sudo iftop -i wlan0

Monitorare le connessioni ed il loro utilizzo di banda non sara’ piu’ un problema…!

Ottimizzare la connessione a Internet

wondershaperCon wondershaper diventa più veloce e reattiva

Se la connessione ad Internet qualche volta sembra essere lenta nella risposta, in particolare se utilizzata contemporaneamente da più applicazioni, allora significa che siamo in presenza di un cosiddetto “collo di bottiglia”, una strozzatura nel vero senso della parola, che rallenta irrimediabilmente la velocità di connessione e di conseguenza la navigazione.

Questo avviene perché, nella maggior parte dei casi, i provider privilegiano di norma la capacità di “smaltire” le richieste di download sacrificando la reattività della rete. Per fortuna GNU/Linux permette di aggirare questi fastidiosi comportamenti, rendendo così più fluido e in certi casi anche più veloce il collegamento a Internet.

Ottenere questo risultato non è proprio immediato, per questo motivo è stato creato wondershaper. Una volta installato il tool tramite

sudo apt-get install wondershaper

bastera’ eseguirlo indicando l’interfaccia di rete utilizzata per la connessione a Internet, ad esempio: wondershaper wlan0 4096 512. La voce wlan0 indica l’interfaccia di rete attraverso la quale il vostro PC è connesso al router. Questa può essere diversa e dipende dal sistema di connessione utilizzato, ad esempio ppp0 oppure eth0. Sempre in relazione all’esempio precedente, 4096 indica la velocità di download e 512 quella di upload, in modo che sia GNU/Linux a gestire direttamente le code e non il provider, a tutto beneficio della velocità della connessione. Per eseguire un prova,che come sempre consiglio di fare su di una Virtual Machine, basta scaricare un file di grosse dimensioni e contemporaneamente lanciare un ping; i tempi di risposta risulteranno molto diversi anche diminuendo solo di poco la velocità massima di connessione, vi consiglio quindi di fare diversi test. Per avere una base di partenza il consiglio e’ quello di fare un test di velocita’ della vostra connessione ADSL tramite il link di Speedtest.

Dopo aver individuato la configurazione ottimale, bastera’ configurare lo script wondershaper per rendere le modifiche definitive ed eseguirlo automaticamente al boot (vedi sezione “approfondimenti configurazione ottimale”) , oppure si puo’ configurare nel seguente modo:

Modifiche nel file /etc/network/interfaces

iface wlan0 inet dhcp
    up /sbin/wondershaper wlan0 4096 512
    down /sbin/wondershaper remove wlan0

Se i test non dovessero essere soddisfacenti e voleste tornare alla configurazione iniziale bastera’ non modificare  lo script di wondershaper ed invece dare il seguente comando :

sudo wondershaper clear INTERFACCIA

dove ovviamente con INTERFACCIA si intende sempre l’interfaccia di rete precedentemente indicata, esempio :

sudo wondershaper clear wlan0

Approfondimenti configurazione ottimale

Il file /usr/share/doc/wondershaper/README.Debian.gz descrive più in dettaglio il metodo di configurazione consigliato dal responsabile del pacchetto. In particolare, si consiglia di misurare la velocità di caricamento e scaricamento in modo da valutare al meglio i limiti reali.

 

Cancellare veramente i dati

Cancellare-dati-navigazioneSiete sicuri di aver davvero cancellato quel file ?

Alla base di questo articolo c’è un semplice fatto: molto spesso capita di comprare un nuovo PC, o un nuovo disco esterno/chiavetta di memoria ecc…, e di vendere/regalare/prestare il device fino a prima utilizzato; molti credono, erroneamente, che basti svuotare le directory e, successivamente, svuotare il “cestino” per eliminare i dati che non vogliamo altri vedano.

Beh! non e’cosi, un dato scritto su di un supporto rimarra’ per sempre al suo posto a meno che non distruggiate fisicamente il supporto stesso.

Cosa fare allora oltre a passare sopra al disco con uno schiaccia sassi, smagnetizzarlo e bruciarlo, per porre fine all’esistenza di quei dati ?
Esistono per fortuna alcuni tool che sono in grado di “sovrascriverli” piu’ e piu volte, questo perche’ per rendere un dato quasi irrecuperabile ci vogliono almeno dalle 20 alle 35 sovrascritture. un semplice rm di un file o l’eliminazione tramite qualsiasi file manager non è sufficiente per rimuoverlo davvero dal vostro hard disk.

Quindi se si vuole veramente eliminare un file da un computer è necessario utilizzare comandi più sofisticati quali :

Dban: Darik’s Boot and Nuke (comunemente conosciuto come DBAN) è un progetto open source ospitato su SourceForge. Il programma è progettato per cancellare in modo sicuro un hard disk fino a quando i dati sono permanentemente rimossi e non più recuperabili, questo avviene sovrascrivendo i dati con numeri casuali generati da Mersenne twister o ISAAC (un PRNG).

Shred : Sovrascrive il file specificato più volte, al fine di rendere più difficile anche per l’hardware molto costoso recuperare i dati.

Oggi daremo un’occhiata al pacchetto secure-delete contenente alcuni programmi utili per eliminare in maniera “più sicura” un file, la memoria, lo spazio libero e/o lo spazio di Swap.

Per installare secure-delete in Debian, Ubuntu e Mint eseguire:

sudo apt-get install secure-delete

Il pacchetto dovrebbe essere disponibile anche in altre distribuzioni, controllate il vostro gestore di pacchetti cercando secure-delete o srm, o se non è disponibile si può prendere il pacchetto sorgente da sourceforge .

Il pacchetto di secure-delete viene fornito con quattro comandi:

  • srm Rimozione sicura; utilizzato per l’eliminazione di file o directory attualmente presenti sul disco rigido;
  • smem Ripulitura sicura della memoria; utilizzato per cancellare le tracce dei dati dalla memoria del computer (RAM);
  • sfill Ripulitura sicura dello spazio libero; utilizzato per cancellare tutte le tracce di dati dallo spazio libero su disco;
  • sswap Ripulitura sicura dello swap; utilizzato per cancellare tutte le tracce di dati da una partizione di swap.

SRM

SRM è stato progettato per eliminare i dati in maniera sicura, in modo che non possano essere recuperati da ladri, forze dell’ordine o altre minacce. L’algoritmo di cancellazione si basa sul documento :
“ Secure Deletion of Data from Magnetic and Solid-State Memory “,
presentato al 6° Usenix Security Symposium da Peter Gutmann, uno dei leader tra i crittografi civili.Il processo di cancellazione sicuro dei dati di srm avviene in questo modo:

  • 1 passaggio con 0xff
  • 5 passaggi casuali. /dev/urandom è utilizzato se disponibile come fonte RNG sicura.
  • 27 passaggi con valori speciali definiti da Peter Gutmann.
  • 5 passaggi casuali. /dev/urandom è utilizzato se disponibile come fonte RNG sicura.
  • Truncate del file

Come ulteriore misura di sicurezza, il file viene aperto in O_SYNC mode e dopo ogni passaggio viene invocata una chiamata di tipo fsync().

srm inoltre scrive i blocchi a 32k allo scopo di avere una maggiore velocità, di riempire i buffer di cache del disco per costringerli a svuotarsi e sovrascrivere i dati vecchi che appartenevano al file.

Opzioni di srm:

  • -d ignora i due file speciali costituiti con i punti . e .. dalla linea di comando. (così si può eseguirlo come “srm -d .* *”)
  • -f fast (ed insicuro): no viene usato /dev/urandom, e non viene utilizzato il modo sincronizzato.
  • -l diminuisce la sicurezza. Solo due passaggi sono scritti: uno con 0xff ed i valori in modalità casuale.
  • -l -l per una seconda volta per abbassare ulteriormanete la sicurezza: viene fatto solo un passaggio casuale.
  • -r modalità ricursiva, cancella le sottodirectory.
  • -v modalità dettagliata
  • -z pulisce l’ultima scrittura con zeri invece che con dati casuali

Alcuni esempi con srm:

1) Cancellare un file usando srm:

# srm /tmp/myfile.txt

2) Cancellare una directory usando srm:

# srm -r /tmp/mydir

Gli altri strumenti della suite

smem è stato progettato per cancellare i dati che possono trovarsi ancora nella memoria (RAM) in modo sicuro. Si noti che con le memorie SDRAM, i dati non si perderanno subito allo spegnimento del computer, ma saranno tenuti staticamente e questo può consentire cold boot attacks

sfill è stato progettato per eliminare i dati che si trovano su spazio disco non utilizzato in modo sicuro

sswap è stato progettato per cancellare i dati che possono trovarsi ancora sull’aread di swap in modo sicuro

Conclusioni

IMPORTANTE: Ricordatevi che quando si utilizzano questi strumenti bisogna sempre tenere presente che essi aggiungono un po’ di sicurezza in piu’, ma non garantiscono che i dati siano irrecuperabili.

Ubuntu Tips and Tricks

Ubuntu-trucchiUbuntu alcuni Trucchi per migliorane l’uso :

1. Cambiamo i programmi di default

Ubuntu viene distribuito con moltissimi programmi che fanno le cose in modo molto simile tra loro, ad esempio come editor di default è settato “nano”, per alcuni di voi pero’ potrebbe essere meglio cambiare e avere “vim”.

La strada più facile per farlo è usare il programma update-alternatives; questo tool di gestione mantiene dei link simbolici nel PATH /etc/alternatives ,  che determinano quali programmi lanciare di default, per alcuni programmi come ftp, system, editor, telnet, rsh, windows manager ecc…; per avere la lista completa basta digitare:
ls -la /etc/alternatives/

ora per modificare l’editor di default per passare da nano a vim è sufficiente digitare:

sudo update-alternatives –config editor

apparirà qualcosa simile a questo:

There are 3 alternatives which provide `editor’.

Selection Alternative
———————————————–
1 /usr/bin/vim
2 /bin/ed
*+ 3 /bin/nano

Press enter to keep the default[*], or type selection number:

a questo punto è sufficiente premere 1 per avere vim come editor di default.

2. Come installare un pacchetto:

Quasi tutti i software che volete installare in ubuntu sono presenti nei repositories di default ed è semplice installarli tramite programmi grafici come Synaptic o simili. Cosa succede però se si vuole installare un programma come ad esempio Opera (browser) che è disponibile per Ubuntu ma non è presente nei repositories?

In questo caso dobbiamo scaricare il pacchetto debian (.deb) e cliccarci con il tasto destro per poi  aprirlo con GDebi, in alcuni casi è sufficiente il doppio click, GDebi mostrera’ in modo grafico le informazioni sul pacchetto: cosa fa, le varie dipendenze, cosa contiene, ed un tasto per installarlo.

Se invece preferite fare tutto da linea di comando è sufficiente digitare

sudo dpkg -i <nomepacchetto.deb>

3. Sudo e gksudo

Se si e’ usato linux per un pò di tempo, conoscete la potenza distruttiva che può avere un programma lanciato male da root, può modificare la configurazione spostare file di sistema, distruggere dati importanti ecc…

Cosi in Ubuntu hanno pensato un sistema diverso; l’utente root esiste in Ubuntu ma non può essere usato se non attraverso il comando sudo.

Probabilmente già conoscete come funziona sudo tool, ma se volete lanciare un programma grafico come se foste root o un altro utente ? è semplice basta usare gksudo al posto di sudo. Se volete lanciare ethereal (che è un famoso sniffer) come root,  bastera’ lanciare dalla shell il comando gksudo ethereal , vi verra’ richiesta una password (quella del vostro utente) e il programma sarà avviato come utente, ma con i permessi di root, a patto che il vostro utente sia stato precedentemente inserito tra gli utenti nella lista dei sudoers (/etc/sudoers).
Ma in alcuni casi si ha davvero la necessita’ di usare proprio l’utente root da shell e, per ovviare a questo problema si puo’digitare :

sudo -i

4. Aggiungere utenti come admin

Quando installiamo Ubuntu, viene aggiunto in automatico il primo utente come sudoers, questo permette a quell’utente di poter lanciare comandi come se fosse un utente root scrivendo la sua password (cosi come spiegato al punto precedente).

Tuttavia se si aggiungono altri utenti questi non avranno tale privilegio; per poter dare anche ai nuovi utenti questo privilegio bisogna inserirli tra gli utenti “admin” , digitando quanto segue:

sudo usermod -G admin nomeutente

Se l’utente facesse già parte di un’ altro gruppo bastera’ aggiungere al comando l’opzione ” -a ” facendolo diventare:

sudo usermod -a -G admin nomeutente

Se preferite fare il tutto da interfaccia grafica potete andare in Sistema (System) -> Amministrazione (Administration) -> Utenti e Gruppi (Users and Groups), selezionare l’utente a cui si vogliono dare i permessi di sudo e cliccare con il tasto destro, scegliere Propietà e sotto  “Privileggi utente” selezionare “Amministrare il sistema”.

5. Aggiungere un nuovo desktop

Molti utenti non sono sicuri su quale desktop usare, a differenza di sistemi come windows, Linux prevede l’uso di molte, diverse, interfacce grafiche in base alle preferenze dell’utente, ogni Desktop Manager è completamente diverso dagli altri e offre funzionalità diverse, tra i più famosi troviamo Gnome (quello di default), KDE, Xfce e molti altri.

Ubuntu infatti viene distribuito con molti nomi e contenuti diversi oltre all’ Ubuntu classico infatti ci sono Kubuntu, Xubuntu, Edubuntu, ecc…  se se n’ è installato soltanto uno è possibile comunque installare gli altri digitando semplicemente quanto segue senza bisogno di scaricare di nuovo il CD:

sudo apt-get install kubuntu-desktop
sudo apt-get install edubuntu-desktop
sudo apt-get install xubuntu-desktop

Alcuni sono più semplici da usare mentre altri sono più veloci, altri ancora sono più belli, insomma ce n’è per tutti i gusti.

Naturalmente si possono installare anche da interfaccia grafica usando tool come Synaptic.

6. Avanzamento di versione

Ci sono diversi metodi per eseguire un avanzamento di versione da un rilascio di Ubuntu ad un’ altro. Questi descritti sono i metodi raccomandati sulle guide ufficiali, ma fate sempre molta attenzione poiche’ nulla e’ perfetto.

do-release-upgrade

Il metodo di avanzamento raccomandato per la Server Edition è l’utilizzo dell’utilità do-release-upgrade, installata in modo predefinito come parte del pacchetto update-manager-core e priva di alcuna dipendenza grafica.

I sistemi basati su Debian possono ricorrere anche al comando apt-get dist-upgrade. L’uso di do-release-upgrade è comunque raccomandato in quanto è in grado di gestire le modifiche necessarie alla configurazione di sistema tra i rilasci.

Per avanzare ad un nuovo rilascio, da un terminale digitate quindi :

do-release-upgrade

È anche possibile usare do-release-upgrade per avanzare a una versione di sviluppo di Ubuntu. Per fare ciò, usare l’opzione -d:

do-release-upgrade -d