udev でデバイスのパラメータを変更する

こんにちは。サイオステクノロジーの貝野です。

みなさんは、udev というツールをご存じでしょうか。

udev とは、Linux 上でデバイスを管理するためのツールです。
システムに接続されている周辺機器 (デバイス) のデバイスファイルを作成したり、デバイスファイルの設定変更 (パーミッションなど) ができます。

デバイスファイルの作成は、PC にデバイスが接続された際に udev が動的に実行するため、
実際にユーザがデバイス管理のために udev を使用するのはデバイスファイルの設定変更がメインになります。

そこで本日は、udev を用いてデバイスファイルのパラメータを変更する方法についてご紹介します。
デバイスファイルの内容を確認する機会は日常的には少ないかもしれませんが、これを機に udev の使用方法を少しでも知っていただければと思います。

udev でデバイスファイルの設定を変更するには

udev の設定変更を行うには、「ルールファイル」を使用します。
ルールファイルに設定したい内容を記載することでデバイスファイルに設定を追加したり、既存の設定を変更することができます。

udev のルールファイルは、以下の場所に保存されていいます。

/etc/udev/rules.d/*.rules
/usr/lib/udev/rules.d/*.rules

/usr/lib/udev/rules.d 配下には既存のルール設定があり、/etc/udev/rules.d 配下にはカスタマイズした設定を配置します。

RHEL8 における /etc/udev/rules.d および /usr/lib/udev/rules.d のデフォルトの内容

# ls /etc/udev/rules.d/
70-persistent-net.rules  80-net-name-slot.rules
#
# ls /usr/lib/udev/rules.d/
10-dm.rules                       66-azure-ephemeral.rules
11-dm-parts.rules                 66-kpartx.rules
13-dm-disk.rules                  68-del-part-nodes.rules
40-elevator.rules                 70-joystick.rules
40-redhat.rules                   70-mouse.rules
40-usb-blacklist.rules            70-power-switch.rules
50-udev-default.rules             70-touchpad.rules
60-alias-kmsg.rules               70-uaccess.rules
60-block.rules                    71-prefixdevname.rules
60-cdrom_id.rules                 71-seat.rules
60-drm.rules                      73-idrac.rules
60-evdev.rules                    73-seat-late.rules
60-fido-id.rules                  75-net-description.rules
60-input-id.rules                 75-probe_mtd.rules
60-net.rules                      75-rdma-description.rules
60-persistent-alsa.rules          78-sound-card.rules
60-persistent-input.rules         80-drivers.rules
60-persistent-storage.rules       80-net-setup-link.rules
60-persistent-storage-tape.rules  84-nm-drivers.rules
60-persistent-v4l.rules           85-nm-unmanaged.rules
60-raw.rules                      90-nm-thunderbolt.rules
60-rdma-ndd.rules                 90-rdma-hw-modules.rules
60-rdma-persistent-naming.rules   90-rdma-ulp-modules.rules
60-sensor.rules                   90-rdma-umad.rules
60-serial.rules                   90-vconsole.rules
60-tpm-udev.rules                 95-dm-notify.rules
61-scsi-sg3_id.rules              98-kexec.rules
63-fc-wwpn-id.rules               99-qemu-guest-agent.rules
63-scsi-sg3_symlink.rules         99-systemd.rules
64-btrfs.rules/p

また、udev のルールファイルには以下の決まりがあります。

・ルールファイルの拡張子は、いずれも *.rules です。 ・ルールファイルのファイル名は、[数値]-[ルール名].rules の形式です。 ・同じ設定があった場合、ルールファイルの数字が大きい方に記載の内容が反映されます。

udev ルールの設定方法

では実際に、udev ルールを設定してみます。
今回は udev を用いて、/dev/sda の所有者を sdauser、グループを sdauser に変更します。

上にも記載していますが、同時の udev ルール (カスタマイズした udev ルール) は /etc/udev/rules.d 配下に配置をします。

まずは現在 /dev/sda の所有者、グループを確認します。

# ls -l /dev/sda
brw-rw----. 1 root disk 8, 0  8月 24 09:55 /dev/sda

次に、/etc/udev/rules.d 配下に udev のルールファイル (99-myrules.rules) を作成し、以下の内容を記載します。

# cat /etc/udev/rules.d/99-myrules.rules
KERNEL=="sda", ACTION=="change", OWNER="sdauser", GROUP="sdagroup"

※ルールファイルの名前は、[数値]-[ルール名].rules の形式であれば何でも構いません。

udevadm コマンドで、上記で作成したルールを読み込みます。

# udevadm trigger

最後に、/dev/sda の所有者、グループを再度確認します。

# ls -l /dev/sda
brw-rw----. 1 sdauser sdagroup 8, 0  9月  8 14:37 /dev/sda

/dev/sda の所有者、グループが変更されていることが確認できました!

※RHEL8(CentOS8) の環境で検証しました。  (RHEL6 以前の環境では未確認ですが、RHEL7(CentOS7) でも同様の手順で設定できることを確認済み)。

参考情報

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/udev_device_manager https://www.novell.com/ja-jp/documentation/sles11/book_sle_admin/data/cha_udev.html https://github.com/tpm2-software/tpm2-abrmd/issues/132

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です