こんにちは。サイオステクノロジーの貝野です。
みなさんは、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