我使用一个sudoers
文件,其中(除了其他项目之外)包含以下行:
homebridge ALL=(ALL) NOPASSWD: /sbin/modprobe -r bcm2835-v4l2, /sbin/modprobe bcm2835-v4l2, /sbin/reboot
%sudo ALL=(ALL) NOPASSWD: /sbin/modprobe -r bcm2835-v4l2, /sbin/modprobe bcm2835-v4l2, /sbin/reboot
/usr/bin/sudo /sbin/modprobe -r bcm2835-v4l2
当我用我的执行以下命令时普通用户,无需输入密码即可正常工作。
当我/usr/bin/sudo /sbin/modprobe -r bcm2835-v4l2
使用霍姆布里奇sudoers 中也提到了用户,该命令失败并显示输出:(modprobe: ERROR: ../libkmod/libkmod-module.c:793 kmod_module_remove_module() could not remove 'bcm2835_v4l2': Operation not permitted
但也没有要求我输入密码)
我能够/usr/bin/sudo /sbin/reboot
使用以下命令成功执行命令霍姆布里奇用户也不需要输入密码。
- 您能说出什么可能导致两个用户似乎都应用了该规则,因为我没有要求输入密码,但两个用户之一无法运行它?
- 如何解决这个问题,以便我能够使用用户运行命令
homebridge
?
更新1:
不幸的是,dmesg
尝试使用失败时不包含任何附加条目霍姆布里奇用户,但使用普通用户时请遵循以下行:bcm2835-v4l2-0: unregistering video0
我切换到bcm2835_v4l2
而不是bcm2835-v4l2
,但这似乎对问题没有影响。执行lsmod | grep bcm2835-v4l2
没有结果,但lsmod | grep bcm2835_v4l2
提供了以下结果:
bcm2835_v4l2 40960 0
videobuf2_vmalloc 16384 1 bcm2835_v4l2
bcm2835_mmal_vchiq 28672 3 bcm2835_isp,bcm2835_codec,bcm2835_v4l2
videobuf2_v4l2 32768 4 bcm2835_isp,bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem
videobuf2_common 61440 5 bcm2835_isp,bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem,videobuf2_v4l2
videodev 249856 6 bcm2835_isp,bcm2835_codec,videobuf2_common,bcm2835_v4l2,v4l2_mem2mem,videobuf2_v4l2
syslog
尝试失败时没有条目霍姆布里奇用户。
更新2:
没有/var/log/secure
可用的,但是/var/log/auth.log
:
homepi sudo: homebridge : TTY=pts/0 ; PWD=/var/lib/homebridge ; USER=root ; COMMAND=/sbin/modprobe -r bcm2835_v4l2
homepi sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
homepi sudo: pam_unix(sudo:session): session closed for user root
更新3: 如果我使用卸载模块普通用户,并尝试使用加载霍姆布里奇用户,我也无法加载模块:
/usr/bin/sudo /sbin/modprobe bcm2835_v4l2 && echo 1
modprobe: ERROR: could not insert 'bcm2835_v4l2': Operation not permitted`.
如果尝试使用时模块已经加载霍姆布里奇用户,没有错误:
/usr/bin/sudo /sbin/modprobe bcm2835_v4l2 && echo 1
1
更新3: 使用霍姆布里奇用户:
capsh --print
Current: = cap_net_bind_service,cap_net_raw+eip
Bounding set =cap_chown,cap_dac_override,cap_fowner,cap_setgid,cap_setuid,cap_net_bind_service,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_sys_chroot,cap_sys_admin,cap_audit_write
Securebits: xxxxxxxx
secure-noroot: no (unlocked)
secure-no-suid-fixup: no (unlocked)
secure-keep-caps: no (unlocked)
uid=999(homebridge)
gid=995(homebridge)
groups=20(dialout),27(sudo),29(audio),44(video),46(plugdev),105(input),112(bluetooth),995(homebridge),997(gpio)
使用常规的用户:
capsh --print
Current: =
Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read,38,39,40
Securebits: xxxxx
secure-noroot: no (unlocked)
secure-no-suid-fixup: no (unlocked)
secure-keep-caps: no (unlocked)
uid=4814(regularUserName)
gid=4814(regularUserName)
groups=4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),105(input),109(netdev),997(gpio),998(i2c),999(spi),4814(regularUserName)
的确,霍姆布里奇用户尚未cap_sys_module
分配。这是什么意思?可以修复吗?
更新4
lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster