gpt4 book ai didi

c++ - 如何以编程方式阻止Linux操作系统用户空间中的USB存储设备

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:54 25 4
gpt4 key购买 nike

我必须开发一个功能,当 USB 存储设备连接到 Linux 机器时,我的密码窗口会弹出。如果用户输入的密码正确,设备将继续挂载。如果密码错误,用户将无法访问设备。这就像 Linux 操作系统的端点保护。

我们如何才能仅在 Linux 用户空间中实现这一点?

在这里我不想进行内核模式编程,因为它非常耗时并且涉及与分发范围的兼容性相关的问题。

此外,该解决方案应该对所有内核版本和 Linux 发行版都是通用的。

提前致谢。

最佳答案

要限制任何外部 USB 存储介质,

将负责支持 USB 大容量存储的驱动程序列入黑名单。

例如在 Ubuntu 上,将以下行添加到文件 /etc/modprobe.d/blacklist.conf 的末尾.

# disable usb storage access
blacklist usb_storage

在随后的重新启动中,USB 存储设备将不被支持,直到首先加载驱动程序(只有 super 用户才能这样做)。

请注意,首先只有 super 用户帐户才能修改此黑名单文件。

现在您可以以 super 用户身份简单地删除 USB 大容量存储的内核模块

rmmod usb_storage

现在只有 super 用户可以 modprobeinsmod用于启用 USB 存储介质的 USB 存储驱动程序。

One could write a GUI application running as a superuser that can prompt the user for a password and load/remove the usb_storage.ko as required.

请注意,应用程序现在成为攻击目标,并且根据它存储/验证密码的方式,它可能很容易被有合理动机的“攻击者”绕过。

另请注意,使用这种方法,它是一个全有或全无的功能,即一旦通过身份验证,所有 USB 端口上的任何 USB 存储介质都可以访问,直到通过卸载 usb_storage.ko 再次禁用它们。模块。


为了保护外部 USB 介质中的数据,

dm-crypt 的帮助下开始使用加密存储设备或 ecryptfs .

本质上,您需要先加密外部 USB 存储介质。随后,当它连接到系统时,取决于配置:

  • 用户必须在终端上运行几个命令(并提供密码)

  • 系统提示输入密码,一旦提供,就会尝试装载加密磁盘。

Refer to the following wiki for a step-by-step guide to creating encrypted external disks, and configuring an Ubuntu Linux machine such that it prompts for password and auto-mounts encrypted disks when connected.

关于c++ - 如何以编程方式阻止Linux操作系统用户空间中的USB存储设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35485193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com