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 verifytest로 규칙을 사전 검증한 뒤, control --reload-rulestrigger로 실제 적용까지 확인할 수 있습니다.

udevadm info -a 또는 --attribute-walk 명령으로 장치의 속성(ATTR)과 부모 장치 트리를 탐색하여 규칙 작성에 필요한 키를 찾을 수 있습니다.

작성한 규칙은 udevadm verify로 구문을 검증하거나 udevadm test <syspath>로 실제 적용 결과를 미리 시뮬레이션할 수 있습니다.

규칙을 수정했다면 udevadm control --reload-rules(또는 -R)로 데몬을 재시작 없이 리로드합니다. 단, 리로드는 이미 연결된 장치에 즉시 반영되지 않으므로, 이 경우 udevadm trigger를 실행해 새로운 이벤트를 발생시켜야 합니다.

자주 묻는 질문은 무엇입니까?

질문
장치 속성을 확인할 때 udevadm info 외에 다른 방법이 있습니까?/sys 파일 시스템(sysfs)을 직접 탐색하여 원하는 장치의 속성 파일 내용을 확인할 수도 있습니다.

정리하면 어떻게 됩니까?

udev 규칙의 동작 원리와 작성법을 명확히 이해하고 udevadm으로 철저히 검증하면, 임베디드 시스템이나 서버 환경에서 장치 인식 문제를 방지하고 접근 권한을 안정적으로 관리할 수 있습니다.