一部のsudoユーザーはカーネルモジュールを削除できません。

一部のsudoユーザーはカーネルモジュールを削除できません。

私は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以下を使用してコマンドを正常に実行できます。ホームブリッジまた、ユーザーはパスワードを入力する必要はありません。

  1. パスワードを求めるのではなく、両方のユーザーのうちの1人がルールを実行できないため、両方のユーザーがルールが適用されているように見える原因がわかりますか?
  2. ユーザーを使用してコマンドを実行できるように、この問題をどのように修正しますか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

ベストアンサー1

おすすめ記事