在 Ubuntu 16.04 中限制用户帐户访问所有 USB 端口?

在 Ubuntu 16.04 中限制用户帐户访问所有 USB 端口?

我怎么能够限制在 ubuntu 16.04 中以 root 用户身份授予用户账户所有 USB 端口的访问权限?

答案1

Ubuntu(以及所有现代 Linux 发行版)中处理添加或删除的设备所用的子系统称为“udev”。它允许您声明如何处理这些设备的规则。

如果你将规则文件放在/etc/udev/rules.d/开头,99-它将被评估所有其他规则文件,覆盖在其中进行的任何设置。这就是你想要的。因此:

  1. 创建一个文件/etc/udev/rules.d/99-lockdown-usb.rules(如果不喜欢,请选择任何您喜欢的文件lockdown-usb),其中包含以下内容:

    ACTION=="add", SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", ATTR{authorized_default}="0"
    

    此规则匹配任何属于 USB 设备类别“09”(USB 主机设备)的“usb”子系统的“已添加”设备,并将“authorized_default”属性设置为 0(表示“false”)。该属性的作用是为任何随后发现的连接到该主机设备的客户端 USB 设备的“authorized”属性定义默认值。未经授权的 USB 设备会显示在 USB 设备列表中,但仍处于功能失调状态。

  2. 为了稍后手动启用连接的 USB 设备,请通过 sysfs 将其“授权”值设置为 1,例如:

    echo 1 | sudo tee /sys/bus/usb/devices/2-1/authorized
    

    2-1本例中是内核分配的 USB 设备路径。如果涉及 USB 集线器,路径名可能变得更加复杂。您可以借助 找出特定设备的路径lsusb -t。)

    这将像平常一样触发所有连接事件,例如存储设备出现在 Nautilus 中,键盘接受按键输入。这里重要的是,这些 sysfs 文件通常可由仅限超级用户这正是你想要的。

如果您只需要取消授权特定设备或设备类型,或者从锁定中排除特定设备或设备类型,您可以进一步细化 udev 规则来解决此问题。

灵感来自插入并捕获:恶意 USB 设备但有一些改进。

相关内容