限制应用程序访问某些硬件(网络摄像头、麦克风...)

限制应用程序访问某些硬件(网络摄像头、麦克风...)

如果我告诉 VLC 或 Audacity 这样的应用程序从我的网络摄像头或麦克风进行录制,它们只会在睡眠时唤醒硬件,并在没有我干扰的情况下完成工作。

虽然这是一件好事,但出于隐私方面的考虑,我一直想知道:是否有办法限制应用程序对硬件设备的访问?

在撰写本文时,我想到了使用 SELinux 或 AppArmor 之类的东西来限制对/dev/something.这可能吗?有更好或更简单的方法吗?

另外,除了网络摄像头和麦克风之外,还有其他我应该关心的硬件吗?

答案1

我想传统的方法是为程序/程序集创建伪用户(如游戏用户),将该用户分配给它应该访问的设备组(例如相机),然后运行程序) SUID 作为该用户。如果您删除了“其他人”(不是所有者或组)的权限,则只有该组的所有者和成员(包括伪用户)可以访问它。

此外,您可以使用程序组来限制允许哪些用户执行该程序。为允许进行视频会议的用户创建一个组(例如会议),并将相关程序(被授予对摄像头和麦克风的特殊访问权限的程序)的执行仅限于该组。

+++

另一种方法是将程序SGID作为属于设备的特殊组运行,并删除“其他”的权限。当然,只有当程序只需要访问一台受限设备时,这才有效。

相关内容