Linux 如何在没有根的情况下加载内核模块?

Linux 如何在没有根的情况下加载内核模块?,linux,linux-kernel,kernel,kernel-module,v4l2loopback,Linux,Linux Kernel,Kernel,Kernel Module,V4l2loopback,我正在制作一个需要内核模块的程序。我用 以下代码: cmd:=exec.Command(“sudo”、“-S”、“modprobe”、“v4l2loopback”) cmd.Stderr=os.Stderr cmd.Stdin=os.Stdin err:=cmd.Run() 如果出错!=零{ 致命(“启动v4l2loopback时出错:,err.Error()) } 这是可行的,但需要用户输入密码,这意味着程序必须在终端中启动。我认为有一种方法可以加载这个模块,v4l2loopback,而不使

我正在制作一个需要内核模块的程序。我用 以下代码:

cmd:=exec.Command(“sudo”、“-S”、“modprobe”、“v4l2loopback”)
cmd.Stderr=os.Stderr
cmd.Stdin=os.Stdin
err:=cmd.Run()
如果出错!=零{
致命(“启动v4l2loopback时出错:,err.Error())
}

这是可行的,但需要用户输入密码,这意味着程序必须在终端中启动。我认为有一种方法可以加载这个模块,
v4l2loopback
,而不使用root密码,因为它,但是它附带了自己版本的
v4l2loopback
,并且是用C编写的。有没有一种方法可以在不需要根密码的情况下方便地执行此操作?

您可以向/etc/sudoers文件中添加无需密码即可运行的命令,但请注意这会打开一个安全漏洞。谢谢!我正在寻找一种更便携的东西,尽管您提到的程序使用
sudo
加载模块——至少,这是我在
Makefile
中看到的。您需要提升权限才能加载内核模块,即使您自己编写了内核模块。您可以使用systemd-modules-load.service或其他等效工具(如/etc/modules文件)配置系统,以便在系统引导时自动加载模块。谢谢!我没有注意到。安装程序后,它使用insmod,然后我注意到模块在启动时自动加载。insmod是自动完成的,还是我必须给它一些选项来模拟这种行为,或者什么?