![是否可以对闪存驱动器进行写保护?](https://linux22.com/image/841115/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%AF%B9%E9%97%AA%E5%AD%98%E9%A9%B1%E5%8A%A8%E5%99%A8%E8%BF%9B%E8%A1%8C%E5%86%99%E4%BF%9D%E6%8A%A4%EF%BC%9F.png)
我想对它进行写保护和取消保护,以防止人们在 Windows PC 上使用它时文件被格式化。我不想让人们删除我的学校作业,我把它带到学校,并在我妈妈的笔记本电脑中与 Lubuntu 12.04 的 Live CD 一起使用。当我去洗手间时,人们进入了我的背包并将其插入 PC(闪存驱动器有ex4
文件格式),当它要求格式化时,他们点击了“是”,假设不会删除任何内容。
答案1
我喜欢你的问题!但我不认为有直接的解决方法。我建议采用一种变通方法。
您可以创建 2 个分区- 第一个是 fat32(适用于 Windows),第二个是 ext2(适用于您)。由于 Windows 只能识别每个闪存驱动器的一个分区,因此它无法识别您的 ext2 分区,因此无法对其进行格式化。
因此,如果有人在 Windows 中插入您的 USB,您的数据不会被删除。
另外我认为 ext2 或 ext3 比 ext4 更适合闪存驱动器。
您可以使用 Gparted 创建这两个分区。
但是,创建多个分区的支持并不好,因此请谨慎使用,并且仅在需要时使用。
正如建议的那样,一定要进行备份!
答案2
没有办法让普通的 USB 闪存盘变成只读。有一些“技巧”,但它们是特定于系统和机器的。
如果您担心数据,您可以使用带有硬件加密的 USB,但人们仍然可以格式化它。
如果可以的话,请一直随身携带它。
答案3
我的建议是购买为此设计的闪存驱动器,无法改装现有的闪存驱动器。USB 闪存驱动器要么有写保护开关,要么没有。
还有一种称为 USB 写入阻止器的产品。一端插入计算机,另一端插入 USB 硬盘或 USB 记忆棒。
现在我找到了一个脚本xorangekiller
,他声称该脚本已经过测试,可以在 Debian 6、Debian 7、Ubuntu 10.04、Ubuntu 12.04 和 Fedora 17 上运行。并且据推测它应该可以在任何 GUN/Linux 发行版上运行,也可能可以在 BSD 和 OS X 上运行。以下是脚本:
#!/bin/bash
# Write Protect Drive
# Description: This script will write protect a flash drive by using all the remaining free space.
# Last Synced with Awesomestik Installer 1.0
# Author: xorangekiller
# Released: 21 Feb 2012
writeprotect() {
loop=0
free=$(df $USBDEV | tail -n 1 | awk {'print $4;'})
echo "Free space on ${USBDEV}: ${free}K"
while [ $free -gt 0 ]; do
# Note that 1048576 is 1 gigabyte in kilobytes.
if [ $free -gt 1048576 ]; then
free=1048576
fi
# Check that the name of the file we want to write is not already taken.
while [ -e "${USBMNT}/IamDummy${loop}" ]; do
let loop=loop+1
done
echo "Writing file ${USBMNT}/IamDummy${loop} of size ${free}K . . ."
dd if=/dev/zero of=${USBMNT}/IamDummy${loop} bs=${free}K count=1
sleep 5 # Give everything time to settle.
free=$(df $USBDEV | tail -n 1 | awk {'print $4;'})
done
echo "Free space on ${USBDEV}: ${free}K"
}
# Check that we are root before doing anything particularly useful.
#if [ $(id -u) != 0 ]; then
# echo "You need to be root to run this script"
# exit 1
#fi
if [ -n "$1" ]; then
drivetoprotect="$1"
else
echo "Write protect the specified drive by using all available free space."
echo "To protect the current drive just type current at the prompt."
echo "Which drive would you like to protect?"
read drivetoprotect
fi
if [ "$drivetoprotect" == "current" ]; then
drivetoprotect=`pwd`
fi
if [ ! -d "$drivetoprotect" ]; then
echo "ERROR: $drivetoprotect is not a valid directory."
exit 1
fi
# This check was implemented in the original write protect script because of Cooper and carried over here... DO NOT TRY TO WRITE PROTECT YOUR SYSTEM DRIVE!
if [ "$(df "$drivetoprotect" | awk '{print $6}' | tail -n 1)" == "/" ]; then
echo "ERROR: You are attempting to write protect your system drive."
exit 1
fi
# Use the USBMNT variable to maintain compatability with the writeprotect function from the Awesomestik Installer script.
USBMNT=$drivetoprotect
USBDEV=$(df "$USBMNT" | awk '{print $1}' | tail -n 1)
writeprotect
echo "The drive is now write protected!"
exit 0