特定のドライバモジュールがLinuxカーネルにロードされないようにしたいと思います。そのため、/etc/modprobe.d/cdc_acm.confにファイルを作成しました。このファイルに次の行を追加しました。
install cdc_acm /bin/false
これは解放されると期待どおりに機能します。
modprobe cdc-acm
libkmod: ERROR libkmod/libkmod-module.c:924
command_do: Error running install command for cdc_acm ERROR: could not
insert 'cdc_acm': Operation not permitted
問題は、insmodユーティリティを使用するとモジュールがロードされることです。
insmod cdc-acm.ko
[ 1051.914578] cdc_acm 2-1.1:1.0:
usb_probe_interface [ 1051.919437] cdc_acm 2-1.1:1.0:
usb_probe_interface - got id [ 1051.926323] cdc_acm 2-1.1:1.0:
ttyACM0: USB ACM device [ 1051.934700] usbcore: registered new
interface driver cdc_acm [ 1051.941315] cdc_acm: USB Abstract Control
Model driver for USB modems and ISDN adapters
なぜこれが起こるのですか? insmodのブラックリストファイルを作成する方法はありますか?
答え1
ブラックリストは insmod によって読み取られ、modprobe
insmod は依存関係やブラックリストなどを考慮せずにモジュールの挿入を試みます。
insmod
マニュアルページ:
insmod is a trivial program to insert a module into the kernel. Most users will want to
use modprobe(8) instead, which is more clever and can handle module dependencies.