一、设置指定的USB
在Linux系统中,如果您只想让系统挂载特定的USB设备,而忽略其他的USB设备,可以通过创建自定义的udev
规则来实现。以下是设置系统只能挂载指定USB设备的基本步骤:
-
确定USB设备的属性:
首先,您需要确定您想要挂载的USB设备的属性,如供应商ID(idVendor
)和产品ID(idProduct
)。可以使用lsusb
命令列出所有已连接的USB设备,并找到您想要指定的设备。lsusb
或者,使用
udevadm
获取更详细的信息:udevadm info -a -p $(udevadm info -q path -n /dev/sdX)
其中
/dev/sdX
是您的USB设备节点。 -
创建udev规则文件:
基于您收集到的设备信息,创建一个udev
规则文件。这个文件将定义当特定USB设备连接时,系统将采取的行动。创建一个新的规则文件:
sudo nano /etc/udev/rules.d/99-allow-only-usb.rules
添加如下规则:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="您的供应商ID", ATTRS{idProduct}=="您的产品ID", RUN+="/bin/echo 'USB device %k allowed'"
请将“您的供应商ID”和“您的产品ID”替换为您的实际ID。
-
阻止未指定的USB设备:
创建另一个规则文件,以阻止未指定的USB设备:sudo nano /etc/udev/rules.d/99-block-other-usb.rules
添加如下规则:
ACTION=="add", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}!="您的供应商ID", ENV{ID_MODEL_ID}!="您的产品ID", RUN+="/bin/echo 'USB device %k blocked'"
-
重新加载udev规则:
保存规则文件并退出编辑器,然后重新加载udev
规则以应用更改:sudo udevadm control --reload-rules
-
测试规则:
您可以使用udevadm
测试规则,以确保它们按预期工作:sudo udevadm test $(udevadm info -q path -n /dev/sdX)
其中
/dev/sdX
是您的USB设备节点。
请注意,这些规则仅用于在控制台中打印消息,以确认特定USB设备被允许或阻止。如果您想要完全阻止未授权的USB设备,您可能需要结合使用udev
规则和usbguard
或创建一个脚本来实际阻止设备挂载。
另外,如果您想要挂载特定的USB设备,您需要在udev规则中添加挂载命令,或者在/etc/fstab
中添加相应的条目,以实现自动挂载。
在编辑系统文件和创建规则时,请谨慎行事,因为错误的规则可能会导致系统不稳定或安全问题。如果您不确定如何进行,最好咨询有经验的系统管理员。
二、自动挂载
要在Linux系统中设置自动挂载指定的USB设备,您可以通过两种主要方式来实现:使用udev
规则或编辑/etc/fstab
文件。下面是每种方法的步骤:
方法一:使用udev规则自动挂载
-
创建挂载脚本:
编写一个脚本,当udev规则触发时,这个脚本将执行挂载命令。sudo nano /usr/local/bin/mount_usb.sh
添加以下内容(请根据需要修改脚本):
#!/bin/bash DISK="/dev/$1" MOUNT_POINT="/mnt/usb" FILESYSTEM=$(lsblk -no FSTYPE $DISK) if [ ! -d "$MOUNT_POINT" ]; then sudo mkdir -p "$MOUNT_POINT" fi if [ "$FILESYSTEM" != "" ]; then sudo mount -t $FILESYSTEM $DISK $MOUNT_POINT fi
使脚本可执行:
sudo chmod +x /usr/local/bin/mount_usb.sh
-
创建udev规则:
创建一个udev规则文件,当指定的USB设备连接时,自动执行挂载脚本。sudo nano /etc/udev/rules.d/99-usb-automount.rules
添加如下规则:
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="您的供应商ID", ATTRS{idProduct}=="您的产品ID", RUN+="/usr/local/bin/mount_usb.sh %k"
替换
"您的供应商ID"
和"您的产品ID"
为您的USB设备的供应商和产品ID。 -
重新加载udev规则:
重新加载udev规则以应用更改。sudo udevadm control --reload-rules
方法二:在/etc/fstab中添加条目以实现自动挂载
-
确定USB设备的UUID:
使用blkid
命令获取USB设备的UUID。sudo blkid
找到您的USB设备的条目,并复制其UUID。
-
编辑/etc/fstab文件:
将以下行添加到/etc/fstab
文件中,实现自动挂载。sudo nano /etc/fstab
添加如下条目:
UUID=您的UUID /mnt/usb 自动检测的文件系统类型 defaults 0 0
将
您的UUID
替换为实际的UUID,/mnt/usb
是您希望挂载的目录。 -
创建挂载点:
如果尚未存在,为USB设备创建一个挂载点。sudo mkdir -p /mnt/usb
-
测试挂载:
您可以通过以下命令测试挂载是否正确设置:sudo mount -a
这两种方法都可以实现USB设备的自动挂载。使用udev规则可以提供更灵活的控制,例如,您可以在脚本中添加额外的挂载选项或条件。而/etc/fstab
方法则更为简单,但它不提供基于设备属性的挂载控制。根据您的具体需求选择适当的方法。