如何禁用内部摄像头?


10

我想禁用运行Ubuntu 13.10的笔记本电脑的内部网络摄像头吗?如这里的建议,我已经通过将相关的内核模块列入黑名单来禁用它们。但是,重启后,模块仍然加载。我该怎么做才能摆脱这些模块?

我的模块黑名单位于其中,/etc/modprobe.d/blacklist-webcam.conf如下所示:

blacklist videodev
blacklist videobuf2_core
blacklist videobuf2_memops
blacklist videobuf2_vmalloc
blacklist uvcvideo

但是lsmod给我(重启后):

Module                  Size  Used by
uvcvideo               80885  0 
videobuf2_vmalloc      13216  1 uvcvideo
videobuf2_memops       13362  1 videobuf2_vmalloc
videobuf2_core         40499  1 uvcvideo
videodev              133509  2 uvcvideo,videobuf2_core

编辑:
当我做一个sudo modprobe -r uvcvideo模块不见了。所以我可以编写一个脚本来做到这一点。但是我不认为这是一个干净的解决方案;-)


键入时会得到什么sudo modprobe -r uvcvideo
Jobin 2014年

1
您在哪里保存了黑名单文件?
Braiam

@Braiam:黑名单位于/etc/modprobe.d。它还包含将蓝牙模块列入黑名单的条目。可以,因此可以解释文件。
马克·豪普特曼2014年

您需要禁用相机的驱动程序是什么?说真的,不要试图拖钓。如果您想释放kmodules所用的资源,那太好了。如果您希望相机不捕获图像/视频,并且不关心几个kb或内存,也许这就是您所需要的?pbs.twimg.com/media/BTWPnR_CYAA2pfM.jpg让他们在这里eff.org/deeplinks/2013/04/...
0xSheepdog

我认为稍后会通过udev规则启用它们。我不确定如何禁用这些功能。
Braiam

Answers:


6
  • 在您的blacklist.conf中更改blacklist videodevinstall videodev /bin/false
  • update-initramfs -u
  • reboot

有关更多详细信息,请参见Arch Wiki上的“内核模块黑名单”

列入黑名单

在内核模块的上下文中,黑名单是一种防止内核模块加载的机制。例如,如果不需要关联的硬件,或者如果加载该模块会导致问题,这可能会很有用:例如,可能有两个内核模块试图控制同一硬件,然后将它们一起加载会导致冲突。

一些模块是作为initramfs的一部分加载的。mkinitcpio -M将打印出所有自动检测到的模块:为防止initramfs加载其中某些模块,请将其列入/etc/modprobe.d/modprobe.conf中。运行mkinitcpio -v将列出由各种挂钩(例如文件系统挂钩,块挂钩等)插入的所有模块。如果尚未将.conf文件添加到/etc/mkinitcpio.conf的FILES部分中,请记住将其添加到/etc/mkinitcpio.conf中的FILES部分中,并在将模块列入黑名单后重新构建initramfs,然后重启。

使用/etc/modprobe.d/中的文件

在/etc/modprobe.d/中创建一个.conf文件,并使用blacklist关键字为要添加到黑名单的每个模块添加一行。例如,如果您要阻止pcspkr模块加载:

/etc/modprobe.d/nobeep.conf

# Do not load the 'pcspkr' module on boot.
blacklist pcspkr

注意:blacklist命令会将一个模块列入黑名单,这样就不会自动加载该模块,但是,如果另一个未列入黑名单的模块依赖该模块或手动加载该模块,则可以加载该模块。

但是,有一种解决方法,可以解决此问题。install命令指示modprobe运行自定义命令,而不是像往常一样将模块插入内核,因此您可以通过以下方式强制模块始终无法加载:

/etc/modprobe.d/blacklist.conf

...
install module_name /bin/false
...

这将有效地将该模块和依赖它的任何其他模块列入黑名单。


1

只需将模块列表放在/etc/modprobe.d/blacklist.uvcdrver.conf中即可。文件名可以是任何东西。只需确保格式和权限正确即可。


1

非常感谢大家的帮助!尝试贝恩的解决方案时,我找到了问题的根源。他的解决方案效果很好。重新启动后,模块确实消失了。但是有一个缺点:modprobe uvcvideo万一我想重新启用网络摄像头,就无法加载模块。

在深入研究系统以找出uvcvideo加载模块的原因时,我最后做了一个,grep -r uvcvideo /etc/然后发现了一个脚本,/etc/pm/power.d该脚本在modprobe uvcvideo插入电源线时做了一个脚本。我前段时间写了这个脚本来优化能量消耗。我注释掉了处理网络摄像头模块的行,然后,黑名单开始了!


0

我建议你跑

sudo update-initramfs -u

修改您的黑名单后。这将更新您的初始虚拟磁盘。


不,那
没用

0

如果您在一个命令行指令中寻求解决方案,那么这可能会有所帮助(基于此答案):

要禁用相机直到重新启动,请使用以下命令:

sudo modprobe -r uvcvideo

输入您的密码,如果终端没有显示错误,则应禁用您的网络摄像头。如果收到错误消息:modprobe:严重:模块uvcvideo正在使用中,则可以尝试通过以下方式强制将其删除:

sudo rmmod -f uvcvideo

要再次启用网络摄像头,请输入shell:

sudo modprobe uvcvideo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.