power / knowledge

udev 규칙으로 NUT 드라이버에 USB 권한 주기

paul 2025.10.07 131words (1m)

ups.conf 를 다 맞췄는데도 드라이버가 UPS를 열지 못하는 경우가 있다. USB 장치 노드의 권한 때문이다.

console
$ ls -l /dev/bus/usb/003/002
crw-rw-r-- 1 root root 189, 257 Jan 19 14:18 /dev/bus/usb/003/002

소유가 root:root 이고 others에게는 읽기만 있다. NUT 데몬은 nut 사용자로 도는데, 이 장치에 쓰기가 필요하다. 그래서 열리지 않는다.

권한을 직접 바꿔도 되지만 USB를 다시 꽂거나 재부팅하면 원래대로 돌아간다. udev 규칙으로 박아두는 게 맞다.

bash
SUBSYSTEM=="usb", ATTR{idVendor}=="051d", ATTR{idProduct}=="0002", MODE="0660", GROUP="nut"

idVendoridProductnut-scanner -U 로 확인한 값을 그대로 쓴다. 이 장치가 붙을 때마다 group을 nut 으로, 권한을 660으로 잡으라는 뜻이다.

console
$ udevadm control --reload-rules
$ udevadm trigger

reload-rules 는 규칙을 다시 읽고, trigger 는 이미 붙어 있는 장치에 다시 적용한다. 둘 다 해야 뽑았다 꽂지 않고 반영된다.

console
$ ls -l /dev/bus/usb/003/002
crw-rw---- 1 root nut 189, 257 Jan 19 14:18 /dev/bus/usb/003/002

group이 root 에서 nut 으로 바뀌었고 others의 읽기 권한은 사라졌다. 이제 드라이버가 연다.