Se hai una scheda di memoria SD, pendrive o qualsiasi disco di archiviazione USB che desideri protezione da scrittura, in questo articolo ti diciamo passo passo e in modo semplice come farlo. E c'è un po 'di protezione anti-scrittura consentita da alcuni driver, nota come «scrivere bit di protezione»A seconda che sia attivo a 1 o 0, consentirà o meno la scrittura sull'unità. Questo bit non deve essere confuso con il WP dei flag registers delle CPU, che impediscono la sovrascrittura creando un processo di fork su sistemi tipo UNIX, proteggendo così la memoria principale dalla scrittura dei dati. Né alla tipica linguetta di protezione che troviamo in alcune schede SD o supporti di memorizzazione. In questo caso ci riferiamo a una protezione che viene implementata nel supporto di memorizzazione secondario.
Mentre il titolare del supporto di memorizzazione La scheda di memoria USB o SD, o qualsiasi altro mezzo, rileverà che questo bit è attivo, il driver impedirà al kernel di ordinare un ordine di scrittura e quindi sarà solo in grado di leggere il contenuto. È sicuramente molto pratico quando memorizziamo dati che non vogliamo vengano modificati, impedendone la scrittura o la cancellazione per errore. Ma se uno di questi supporti protetti è caduto nelle nostre mani e non sappiamo dell'esistenza di questo bit, potremmo sprecare ore a pensare che la nostra unità sia danneggiata, oppure alzare e abbassare la linguetta che alcune pendrive o schede SD devono proteggere senza alcun risultato. (Blocca / Sblocca) ...
Montare supporti di sola lettura o di sola scrittura:
Sebbene non sia esattamente quello che stiamo cercando con il bit di protezione da scrittura, possiamo anche scoprire che è stato un mezzo montato automaticamente o manualmente per la sola lettura, quindi non avremo la capacità di scrivere in esso. Qualcosa che in alcuni casi può essere molto fastidioso e impedirci di modificare o memorizzare cose. Bene, la soluzione a questo è molto semplice.
Ad esempio, se nel file / etc / fstab il dispositivo è configurato per essere montato automaticamente con l'opzione ro (sola lettura) oppure se lo abbiamo montato con il comando:
sudo mount -o ro /dev/sda /mnt
In tal caso possiamo leggere solo il dispositivo / dev / sda, in questo caso è stato montato sul punto di montaggio / mnt. In modo che possiamo scriverci di nuovo:
sudo mount -o remount,rw /dev/sda /mnt
Nel caso in cui questo metodo non funzioni per te, allora sarà perché la parte di cui abbiamo parlato è la recitazione, ed è per questo che dovremo utilizzare lo strumento che presentiamo di seguito.
Cos'è hdparm?
Il comando hdparm è uno strumento di basso livello che funge da interfaccia tra vari driver del kernel Linux e supporti di memorizzazione SATA / PATA / SAS utilizzando la libreria libata, nonché per i vecchi supporti IDE. Ricorda che molti controller di supporti di archiviazione USB, inclusi lettori di schede come le schede SD, utilizzano anche questo tipo di controller per funzionare, quindi è anche compatibile con loro.
Su sintassi di base è:
hdparm [opzioni] [dispositivo]
E regali Molte opzioni con cui lavorare, anche se ti sconsiglio di usarli se non sai bene cosa sai fare, visto che essendo uno strumento di basso livello potresti danneggiare seriamente il tuo dispositivo, ad esempio se manipoliamo alcune opzioni critiche come -B . Ma ti dirò che tra le sue opzioni ce ne sono alcune piuttosto interessanti come:
- Prendi il configurazione del disco:
sudo hdparm /dev/sdd
- Mostra il identificazione del disco:
sudo hdparm -i /dev/sdd
- Controlla i tempi di lettura del buffer e della cache:
sudo hdparm -t /dev/sdd sudo hdparm -T /dev/sdd
Ricorda sempre di usare i privilegi, cioè, eseguili come utente root o mettendo sudo davanti a loro o non funzioneranno ...
Rimuovere e impostare il bit di protezione della memoria con hdparm:
Una volta che lo strumento hdparm è noto, possiamo usare l'opzione -r con la quale possiamo controllare lo stato di questo bit con un semplice comando. Per fare ciò, dobbiamo solo conoscere il nome fisico del nostro dispositivo di archiviazione. Ad esempio, se / dev / sdd fosse chiamato, in quel caso potremmo usare:
sudo hdparm -r /dev/sdd
E il valore di detto bit verrà mostrato sullo schermo. Se il suo valore è 1 significa che la modalità è attiva in sola lettura o di sola lettura, o in altre parole, il metodo di protezione dalla scrittura è attivo e non sarai in grado di scrivere nulla in memoria. Per disattivarlo o modificare il bit, devi solo fare quanto segue:
sudo hdparm -r0 /dev/sdd
E ora se eseguiamo il primo comando e consumiamo lo stato vedremo che è tornato a 0, quindi la modalità di sola lettura è spenta o disattivata. Nel caso in cui desideri ripristinarlo allo stato attivo, utilizza l'opzione -r1 invece di -r0 e pronto. Per esempio:
sudo hdparm -r1 /dev/sdd
È semplice abilitare o disabilitare questo bit. Non ha troppo mistero, ma per coloro che non lo sanno può essere un mal di testa quando si tratta di rimuovere la protezione dei propri supporti di memorizzazione.
Spero ti abbia aiutato e ora che sai come realizzare una pendrive protetta da scrittura, non dimenticare lascia il tuo commentos ...
Ciao!
Prima di tutto, grazie per gli appunti! Sono sempre molto utili.
Sono un utente Debian 9.
In questo caso particolare, ho un problema che non riesco a risolvere. Ho una penna "infetta" con una protezione da scrittura che NON POSSO rimuovere. Sto già pensando che sia fisico perché onestamente ho provato di tutto (fino alla formattazione di basso livello in Windows o ai dischi di ripristino, modifica delle partizioni, ecc.) E niente.
Pensavo di essere sul punto di risolverlo, seguendo i tuoi passi, ho scoperto che la protezione da scrittura della pen drive era "attiva", ma una volta cambiata in "off" non riesco ancora a cancellare o modificare nulla su di essa.
Quale può essere? C'è un altro modo per risolvere questo problema? (Non mi dispiace perdere le informazioni che ho dentro)
Grazie in anticipo per il vostro aiuto.
Hernán
Ciao buon! Non so se ti hanno detto la soluzione o alla fine l'hai risolta, ma io sono nel tuo stesso caso.
Mi potete consigliare?
Grazie mille.
buona spiegazione
Ciao ho una USB che il sistema non riconosce, ti mando le informazioni se puoi aiutarmi grazie
dmesg
[83384.348839] usb 1-1: nuovo dispositivo USB ad alta velocità numero 8 che utilizza ehci-pci
[83384.506219] usb 1-1: nuovo dispositivo USB trovato, idVendor = 0c76, idProduct = 0005, bcdDevice = 1.00
[83384.506225] usb 1-1: Nuove stringhe dispositivo USB: Mfr = 1, Prodotto = 2, Numero di serie = 0
[83384.506228] usb 1-1: Prodotto: archiviazione di massa USB
[83384.506231] usb 1-1: Produttore: GENERIC
[83384.506848] USB-storage 1-1: 1.0: dispositivo di archiviazione di massa USB rilevato
[83384.508235] scsi host5: memoria USB 1-1: 1.0
[83385.524951] scsi 5: 0: 0: 0: Archiviazione di massa USB GENERICA ad accesso diretto 1.00 PQ: 0 ANSI: 2
[83385.556757] sd 5: 0: 0: 0: scsi generico sg3 tipo 0 allegato
[83385.561706] sd 5: 0: 0: 0: [sdc] Disco rimovibile SCSI collegato
root @ localhost: ~ # fdisk -l
Disco / dev / sda: 698.7 GiB, 750156374016 byte, 1465149168 settori
Unità: settori di 1 * 512 = 512 byte
Dimensione del settore (logico / fisico): byte 512 / byte 4096
Dimensione I / O (minimo / ottimale): byte 4096 / byte 4096
Tipo di etichetta del disco: gpt
Disk identifier: 995F9474-C5F1-4EE9-8FD7-13EA790423DC
Tipo di dimensione dei settori di inizio fine dispositivo
/ dev / sda1 2048 1050623 1048576 Sistema EFI 512M
/ dev / sda2 1050624 49879039 48828416 23.3G Linux filesystem
/ dev / sda3 49879040 69410815 19531776 File system Linux 9.3G
/ dev / sda4 69410816 76107775 6696960 3.2G Linux swap
/ dev / sda5 76107776 80013311 3905536 File system Linux 1.9G
/ dev / sda6 80013312 1465147391 1385134080 660.5G file system Linux
root @ localhost: ~ # fdisk -l / dev / sdc
fdisk: impossibile aprire / dev / sdc: nessun supporto trovato
root @ localhost: ~ # hdparm / dev / sdc
/ dev / sdc:
SG_IO: dati di rilevamento errati / mancanti, sb []: f0 00 02 00 00 00 00 0b 00 00 00 00 3a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
multcount = 0 (off)
readonly = 0 (off)
readahead = 256 (attivo)
root @ localhost: ~ # hdparm -C / dev / sdc
/ dev / sdc:
lo stato dell'unità è: standby
root @ localhost: ~ # hdparm -I / dev / sdc
/ dev / sdc:
SG_IO: dati di rilevamento errati / mancanti, sb []: f0 00 02 00 00 00 00 0b 00 00 00 00 3a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Dispositivo ATA, con supporto non rimovibile
Norme di riferimento:
Probabilmente utilizzato: 1
Configurazione:
Corrente massima logica
cilindri 0 0
teste 0 0
settori / traccia 0 0
-
Dimensione del settore logico / fisico: 512 byte
dimensione del dispositivo con M = 1024 * 1024: 0 MByte
dimensione del dispositivo con M = 1000 * 1000: 0 MByte
dimensione cache / buffer = sconosciuto
funzionalità:
IORDY non è probabile
Impossibile eseguire IO a doppia parola
Trasferimento in R / W di più settori: non supportato
DMA: non supportato
IOP: pio0
grazie per il tuo aiuto, ora ho potuto sapere se il mio usb era contro la scrittura e ho verificato che non era contro la scrittura quindi questa è già una soluzione di formattazione di basso livello, devo aggiungere che il virus ha fatto disconnettere l'usb in un minuto o due e non ha permesso di agire, non ha lasciato il tempo quindi dato che sapevo già con quale nome gli avevo assegnato, che era "sdc" nel terminale ho messo tutto come utente root.
# dd if = / dev / zero | pv | gg di = / dev / sdc bs = 1M qui aspetti un po '
# dd if = / dev / zero | pv | dd of = / dev / sdc bs = 446 count = 1 tiri fuori e rimetti l'USB che dai
# mkfs.vfat -F 32 -n "anaconda" / dev / sdc e il gioco è fatto
Parabeni! Un certo numero di voltas che io dei con questo argomento è per dare una spiegazione del coa. Grato Moi.
Grande. Molte grazie.
Finalmente qualcosa che ha funzionato davvero per me, grazie.
Ciao, ho una memoria microsd di categoria 16 ADATA da 10 GB
Ho eseguito la procedura e sembra funzionare, ma reinserirlo e ricontrollare lo stato lo riporta in sola lettura.
Ho provato a formattarlo ma non funziona. Quello che posso vedere sono i miei file.
qualsiasi altro strumento o modo per risolvere il problema?.
facile e conciso, perfetto tutte le spiegazioni e gli esempi, è stato molto utile.
Ciao, sono un utente di Kali Linux nella sua ultima versione, ho già provato un miliardo di tecniche (scusate per essere esagerato) ma nessuna di loro mi da né in Linux né in Windows
nel mio caso, debian, la memoria rimovibile deve essere smontata….
superbo, grazie
Sono riuscito a recuperare diversi estratti promozionali con le loro istruzioni
Ciao, funziona ma la cartella dell'utente varia, sarebbe bene chiarirla, ma ho un errore, nel comando mi mostra che lo modifico, ma quando voglio mettere una cartella o qualsiasi altra cosa sulla pendrive dice me che è protetto da scrittura. Se puoi aiutarmi a risolverlo, sarebbe fantastico. Saluti
accetta il comando e lo mostra come non protetto è r = 0, ma quando voglio formattare mi dice protetto. Grazie
Ciao buon giorno. Con questo non avevo provato ma in Windows ho fatto tutto e niente. La mia pendrive è protetta da scrittura, anche con sudo hdparm -r / dev / sdd dà valore 1, ma con sudo hdparm -r0 / dev / sdd non è nemmeno possibile rimuovere la protezione da scrittura. Grazie e saluti dal Venezuela.
La mia versione Linux è openSUSE Tumbleweed 15.3
Informazioni passate con chiarezza e affidabilità. Levei ora testando un numero di soluzioni e questo, presentato qui, è definitivo per il problema soggetto a lettura e blocco di gravação.
Ottimo contributo, tutto è andato come hai detto... grazie
Grazie mille, molto utile, questo di solito accade molto in usb, la soluzione è facile e veloce.
Grazie mille per il contributo.
Nel mio caso, Ubuntu 23.4 accetta tutti i comandi ma non sblocca il bit di protezione.
Tutte le idee?
lorenzo@lorenzo-B85M-D3H:~$ sudo hdparm -r /dev/sdc
[sudo] password per Lorenzo:
/ dev / sdc:
sola lettura = 1 (attivo)
lorenzo@lorenzo-B85M-D3H:~$ sudo hdparm -r0 /dev/sdc
/ dev / sdc:
impostando readonly su 0 (off)
sola lettura = 1 (attivo)
lorenzo@lorenzo-B85M-D3H:~$
grazie