udev 규칙 작성법, 장치 이름과 권한을 어떻게 고정하나
한 줄 답: 리눅스 시스템에서 udev는 장치 노드와 권한을 동적으로 관리합니다. 사용자가 직접 udev 규칙을 작성하면, 특정 하드웨어가 연결될 때 원하는 심볼릭 링크(SYMLINK+=)를 생성하거나 적절한 소유자 및 권한(GROUP=, MODE=)을 자동으로 부여하여 장치 이름과 접근 권한을 안전하게 고정할 수 있습니다.
이 글은 userspace에서 udev 규칙 파일을 어디에 두는지, ATTR·KERNEL 매칭 키를 어떻게 쓰는지, 그리고 udevadm으로 규칙을 어떻게 검증하는지만 다룹니다.
규칙은 어디에 두나?
한 줄 답: udev 규칙 파일들은 /usr/lib/udev/rules.d/, /etc/udev/rules.d/ 등 정해진 디렉터리에 위치하며, 사전순으로 처리되고 /etc/udev/rules.d/가 가장 높은 우선순위를 가집니다.
udev 규칙 파일들은 /usr/lib/udev/rules.d/, /usr/local/lib/udev/rules.d/, /run/udev/rules.d/, /etc/udev/rules.d/ 디렉터리에 위치합니다.
규칙 파일들은 사전순(lexicographic order)으로 정렬 및 처리되며, 동일한 파일명을 가진 규칙은 서로를 대체합니다.
이 중 /etc/udev/rules.d/ 디렉터리가 가장 높은 우선순위를 가지므로, 관리자가 시스템 기본 규칙을 덮어쓸(override) 때 주로 사용합니다.
ATTR·KERNEL 매칭은 어떻게 쓰나?
한 줄 답: KERNEL, ATTR, SUBSYSTEM 같은 매칭 키로 장치를 식별한 뒤 SYMLINK+=, GROUP=, MODE= 등을 할당하면 원하는 이름과 권한을 부여할 수 있습니다.
KERNEL, ATTR{filename}, ATTRS(부모 장치 속성 검색), SUBSYSTEM 키를 사용해 연결된 장치의 특성을 매칭합니다.
장치가 매칭되면 SYMLINK+=, GROUP=, MODE=, OWNER= 등을 할당하여 원하는 권한을 부여하거나 고정된 이름의 심볼릭 링크를 추가할 수 있습니다.
udev 규칙을 통해 원본 장치 노드의 이름 자체를 변경할 수는 없으며, 오직 추가적인 심볼릭 링크만 생성할 수 있다는 점에 유의해야 합니다.
udevadm으로 어떻게 검증하나?
한 줄 답: udevadm info -a로 필요한 속성을 찾고, udevadm verify와 test로 규칙을 사전 검증한 뒤, control --reload-rules와 trigger로 실제 적용까지 확인할 수 있습니다.
udevadm info -a 또는 --attribute-walk 명령으로 장치의 속성(ATTR)과 부모 장치 트리를 탐색하여 규칙 작성에 필요한 키를 찾을 수 있습니다.
작성한 규칙은 udevadm verify로 구문을 검증하거나 udevadm test <syspath>로 실제 적용 결과를 미리 시뮬레이션할 수 있습니다.
규칙을 수정했다면 udevadm control --reload-rules(또는 -R)로 데몬을 재시작 없이 리로드합니다. 단, 리로드는 이미 연결된 장치에 즉시 반영되지 않으므로, 이 경우 udevadm trigger를 실행해 새로운 이벤트를 발생시켜야 합니다.
자주 묻는 질문은 무엇입니까?
| 질문 | 답 |
|---|---|
장치 속성을 확인할 때 udevadm info 외에 다른 방법이 있습니까? | /sys 파일 시스템(sysfs)을 직접 탐색하여 원하는 장치의 속성 파일 내용을 확인할 수도 있습니다. |
정리하면 어떻게 됩니까?
udev 규칙의 동작 원리와 작성법을 명확히 이해하고 udevadm으로 철저히 검증하면, 임베디드 시스템이나 서버 환경에서 장치 인식 문제를 방지하고 접근 권한을 안정적으로 관리할 수 있습니다.