외부 저장소를 연결하면 암호화된 장치로 자동 마운트되어야 합니다.
어떻게 해야 하나요?
답변1
문제는 시스템이 자동으로 암호화 장치를 설치하려면 해당 장치의 키가 동일한 시스템 어딘가에 저장되어 있어야 한다는 것입니다. 따라서 시스템을 도난당한 경우 키가 손상될 수 있습니다. 이것이 귀하에게 적용된다면 계속 읽으십시오.
udev
Linux용 플러그 앤 플레이 관리자입니다. 하드웨어가 연결(연결 해제)될 때마다 udev
하드웨어 를 디렉토리 어딘가에 udev
배치하거나 나머지 Linux 식별에 액세스할 수 있도록 수행해야 하는 모든 작업을 수행합니다. 작동 방식을 /dev
자세히 살펴보면 USB 대용량 저장 장치가 연결되어 있을 때 스크립트를 실행할 수 있다는 것을 알 수 있습니다.udev
기본적으로 /etc/udev/rules.d로 이동해야 합니다. 여기에 있는 모든 파일은 (재)부팅 시 구문 분석되며 udev
이러한 파일은 특정 장치가 연결될 때 스크립트를 트리거하는 데 사용될 수 있습니다. 여기에 표시된 내용은 변경하지 말고 z60_usbmount.rules
다음 내용을 추가했습니다.
KERNEL=="sd*", BUS=="usb", ACTION=="add", RUN+="/etc/local/usbmountcheck udev add $kernel $parent"
KERNEL=="sd*", ACTION=="remove", RUN+="/etc/local/usbmountcheck udev remove $kernel $parent"
따라서 외부 드라이브가 USB를 통해 연결되면 usbmountcheck 스크립트가 실행되고 udev
장치에 대한 모든 정보가 삭제됩니다.
드라이브를 고유하게 식별하고 , 등과 같은 이름을 usbmountcheck
식별하려고 하기 때문에 스크립트는 약간 복잡 합니다 . 이를 수행하기 위해 스크립트에 포함시킨 논리는 다음과 같습니다.sda
sdb
$kernel
ACTION=$2
KVOL=$3
KVROOT=$4
# correlate volume name in /dev/disk/by-id with $KVOL, if we can
VNAME="`/bin/ls -l /dev/disk/by-id | /bin/grep $KVOL | /usr/bin/tr -s [[:space:]] ' ' | /usr/bin/cut -f 9 -d ' '`"
if [ "$?" != 0 ]; then
die "error in pipeline that tries to get volume name, return code $?"
fi
이 시점에서 $VNAME
USB에서 인식되는 장치 이름이 있을 것입니다. 그런 다음 알려진 암호화된 볼륨인지 테스트하고 이를 탑재하기 위한 적절한 명령을 스크립트할 수 있습니다. 또한 연결 해제 후 자동으로 정리되도록 마운트 해제 핸들러를 스크립트해야 합니다.
udev 스크립트를 작성하는 데에는 많은 위험이 있습니다. 실패할 경우 udev가 작동하지 못하고 추가 하드웨어 변경 사항을 식별하지 못할 수 있기 때문입니다. 조심해서 진행해라.