【问题标题】:bash script to stop certain idVendor from mounting用于阻止某些 idVendor 挂载的 bash 脚本
【发布时间】:2014-12-26 16:18:30
【问题描述】:

我想编写一个 bash 脚本来阻止某些 idVendor 挂载,我的想法是使用 tail -f /var/log/messages 并将其 grep 到 idVendor 并在检测到某个供应商时阻止该供应商,有人可以帮助我吗?

【问题讨论】:

  • 您是否已经尝试过一些东西,您是否有最少的代码可供我们处理?任何其他信息都可能有用。如果我了解您正在尝试识别像 kernel: usb 3-1: New USB device found, idVendor=03f0, idProduct=5a07 这样的行并尝试在已安装的情况下卸载它们?我说的对吗?
  • 实际上我尝试了很多方法来使其正常工作,但是由于我是 linux 新手,所以他们都没有做我想要的,是的,这正是我的问题,感谢您这么快回复
  • 好的,我们还需要一些信息。您使用的是哪个 Linux 发行版?为什么需要在脚本中依赖/var/log/messagesidVendors 而不是在fstab 中为特定设备ID 使用noauto 选项?您要卸载哪种外围设备?如果与脚本语言不严格相关,请考虑将此问题发布到superuser.com
  • 我正在使用 centos 7,这是我想到的唯一方法:) 我想做的是编写一个脚本来禁止安装某些 USB 拇指驱动器的品牌,如硅-力量和我需要它像脚本一样的原因是为了能够在将来更改不允许的品牌,如果我的问题不清楚,对不起......
  • 我也会把它贴在那里,非常感谢。

标签: bash kernel mount udev


【解决方案1】:

udev 规则在这里会派上用场。在我的拱门系统上,我会简单地添加这样的规则(虽然没有尝试过)。在

中创建一个文件
/etc/udev/rules.d/40-do-not-mount.rules

并添加这样一行(将 [VENDOR ID][PRODUCT ID] 替换为您设备中的 wildcards are allowed

SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]", ATTR{idProduct}=="[PRODUCT ID]",ENV{UDISKS_IGNORE}="1"

然后重新加载

udevadm control --reload-rules

测试你的规则:

udevadm test /sys/dev/block/[device]

它应该输出类似的东西

...
UDISKS_IGNORE=1
USEC_INITIALIZED=760036464
unload module index
Unloaded link configuration context


一些参考资料:

【讨论】:

  • 这是我想建议的相同方法,你比我快:)
  • 非常感谢你们,我会试一试,让你们知道,你们 ROCK :)
  • 好的,我按照你说的做了,但是没用:(没有出现错误,设备仍然可以挂载...
  • 改用 ENV{UDISKS_IGNORE}="1",我编辑了我的答案
  • 您必须将 [device] 替换为您的设备,在我的情况下是例如8\:32。您还可以使用“udevadm test $(udevadm info -q path -n /dev/sdN)”,其中 N 应替换为插入 USB 记忆棒时获得的设备名称。或者直接跳过测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多