답변:
Udev를 사용하십시오. Udev는 장치 관리자 데몬입니다. 무엇보다도 장치의 이름을 지정해야합니다. rules 디렉토리에 특정 구문의 파일을 넣어 udev-rules를 정의 할 수 있습니다. 규칙은 많은 작업을 수행 할 수 있습니다. 특히 특정 장치가 연결되면 스크립트를 실행할 수 있습니다.
먼저 장치에서 정보를 수집해야합니다. 연결했다고 가정하고 이름 아래에 있음을 알 수 /dev/sdb1
있습니다. 그렇다면 다음을 수행하십시오.
udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)
이 명령은 장치에 대한 정보를 출력합니다. 다소 길다. 장치를 고유하게 식별하는 것을 찾아야합니다. 직렬과 같 ATTRS{serial}=="UA04FLGC"
거나 ATTRS{idVendor}
and와 같은 다른 속성의 조합 일 수 있습니다 ATTRS{idProduct}
. 대부분의 이름은 자명하다. 합리적으로 보이는 몇 가지 중 하나 또는 그 이상의 조합을 선택하십시오. 효과가 없으면 다른 것을 시도하십시오.
고유 식별자를 찾으면 /etc/udev/rules.d
두 자리 숫자로 시작하고로 끝나는 파일을 만듭니다 .rules
. 두 자리 숫자는 이러한 .rules 파일을 처리하는 순서를 지정합니다 70-usb-log-custom.rules
. 이 규칙 파일의 구문은 매우 복잡 할 수 있습니다. 관심이 있다면 google udev. 새로 작성된 파일을 열고 다음과 같이 편집하십시오.
# /etc/udev/rules.d/70-usb-log-custom.rules
KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k"
ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"
이것은 내가 사용중인 실제 udev 파일입니다. 여기에는 세 가지 규칙이 있습니다. 모든 라인은 자체 규칙입니다. 첫 번째 줄은 스크립트를 실행하여 암호화 된 디스크가 연결될 때마다 해독 된 장치를 만듭니다. 두 번째 줄은 암호 해독 된 장치가 제거 된 경우 다른 옵션으로 동일한 스크립트를 호출합니다. 세 번째 줄은 다른 관련 장치에 대한 권한을 설정합니다.
대부분 첫 번째 줄만 필요할 것입니다. 나머지를 삭제하고 올바른 시리얼 (또는 장치를 식별하기 위해 선택한 파라미터의 조합)을 삽입하십시오.
KERNEL=="sd?1"
이 규칙에서 찾고있는 기기의 이름은 /dev/sda1
, /dev/sdc1
또는 이와 유사한 이름으로 표시됩니다. 물음표는 모든 문자에 대한 와일드 카드입니다. ATTRS{serial}=="UA04FLGC"
여기서 고유 식별자입니다. 다른 장치를 위해 나는 (세 번째 줄) 나는 일련 번호 만의 조합을 사용하지 않는 대해 얘기했다 SYSFS{idVendor}=="1781"
및 SYSFS{idProduct}=="0c9f"
이를 식별 할 수 있습니다.
ACTION=="add"
장치를 추가 할 때만 작동하도록 규칙에 지시합니다. 제거 될 때가 아닙니다.
SYMLINK+="cusb1"
디스크에 대한 심볼릭 링크를 생성하여 아래에서 찾을 수 있습니다 /dev/cusb1
.
RUN+="/home/confus/bin/usb-encrypt.sh add %k"
스크립트를 실행하고 'add'및 '% k'(장치 이름)를 전달합니다.
udev 규칙에 대한 훌륭한 자습서가 있기 때문에 더 자세히 설명하지 않습니다. 여기서 읽은 내용은 쳐다보기에 충분해야합니다.