如何禁用内部网络摄像头?

如何禁用内部网络摄像头?

我想禁用运行 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模块就消失了。所以我可以编写一个脚本来执行此操作。但我不认为这是一个干净的解决方案 ;-)

答案1

  • 在您的 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 部分(如果您尚未这样做),并在将模块列入黑名单后重建 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
...

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

答案2

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

答案3

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

在深入研究我的系统以找出uvcvideo加载模块的原因时,我终于做了一个grep -r uvcvideo /etc/,瞧,我找到了一个脚本,当电源线插入时/etc/pm/power.d,它会执行一个操作modprobe uvcvideo。我前段时间写了这个脚本来优化功耗。我注释掉了处理网络摄像头模块的行,之后黑名单就起作用了!

答案4

如果你想要在一个命令行指令中找到解决方案,那么这可能会有所帮助(基于这个答案):

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

sudo modprobe -r uvcvideo

输入您的密码,如果终端中没有显示任何错误,则您的网络摄像头应该已被禁用。如果您收到错误消息:modprobe:FATAL:Module uvcvideo 正在使用中,您可以尝试使用以下命令强制将其删除:

sudo rmmod -f uvcvideo

要重新启用网络摄像头,请在 shell 中输入:

sudo modprobe uvcvideo

相关内容