마운트 지점에서 파티션이 LUKS 파티션인지 확인하는 방법은 무엇입니까?

마운트 지점에서 파티션이 LUKS 파티션인지 확인하는 방법은 무엇입니까?

cryptsetup isLuks이 명령을 사용하여 파티션이 LUKS 컨테이너인지 확인할 수 있다는 것을 알고 있습니다 . 파티션의 장치 이름을 확실히 알 수 없는 경우 LUKS 컨테이너의 마운트 지점과 함께 이 명령을 사용할 수 있기를 원합니다. 하나의 명령으로 이 작업을 어떻게 수행할 수 있습니까?

예를 들어 Luks 컨테이너가 에 있고 /dev/sda2다음으로 엽니다.

$ cryptsetup luksOpen /dev/sda2 vault

그런 다음 컨테이너를 마운트합니다.

$ mount /dev/mapper/vault /mountpoint

/mountpoint이 시점에서 Luks 컨테이너인지 알고 싶습니다.

$ cryptsetup isLuks -v /dev/sda2
Command successful.
$ cryptsetup isLuks -v /mountpoint
Command failed with code 15: Block device required
$ cryptsetup isLuks -v /dev/mapper/vault
Command failed with code 22: Device /dev/mapper/vault is not a valid LUKS device.

lsblk일반적으로 마운트 지점의 블록 장치를 가져오는 데 사용 하지만 이는 /dev/mapper/vault경로를 반환합니다.

└─sda2   8:8    0   9.3G  0 part
  └─vault 252:0    0   9.3G  0 crypt /mountpoint

/dev/mapper/vault어떻게든 해결할 수 있다면 명령 /dev/sda2내에서 명령 대체를 사용할 수 있을 것입니다 cryptsetup isLuks.

awk의 출력을 구문 분석하는 것이나 사용하는 것보다 더 우아한 것을 찾는 것이 좋을 것입니다 mount. 그러나 그것이 유일한 방법이라면 작동할 것입니다.

답변1

나는 같은 문제가있었습니다. 이렇게 해결되었습니다.

lsblk -sJp | jq -r --arg dsk "/dev/mapper/disk_name" '.blockdevices | .[] | select(.name == $dsk) | .children | .[0] | .name'

예를 들어 반환/dev/sda2

답변2

이것은 작동합니다. 조금 길지만 bash 함수를 만들면 단순화됩니다.

cryptsetup isLuks -v `df /mountpoint | tail -n1 | awk '{print $1;}'`

답변3

누군가가 사용한다고 언급했습니다lsblk

이것은 비교적 쉬운 방법이지만 그렇게 하는 경우에만 가능합니다.

alias lsblk2='lsblk -o type,name,label,partlabel,size,fstype,model,serial,wwn,uuid'

그러면 lsblk의 출력에는 훨씬 더 유용한 정보가 포함되며 그 아래에 결과 파티션이 표시됩니다 FSTYPE. crypto_LUKS그리고 참고할 수 있는 디스크 모델과 일련 번호도 있어서 머리말과 꼬리말을 만드는 데 유용하다고 생각합니다.

man lsblk그 뒤에 옵션을 추가하면 -o자신에게 더 유용할 것입니다.

crypto_LUKS내 생각에는 이런 식으로 생각합니다... Linux가 현재 보고 있는 모든 디스크의 간단한 가시적 트리 목록을 얻는 것은 어떤 디스크/파티션이 luks 암호화되어 있는지 알기 위해 최소한의 입력만으로 가장 간단한 방법입니다 . 적어도 그게 바로 표시될 것입니다. RHEL 7.9를 사용하는 것으로 보입니다.

답변4

이것은 나에게 효과적이었습니다.

for part in $(lsblk -o NAME -ln | grep -E '^[^loop]'); do
    if cryptsetup isLuks /dev/$part 2> /dev/null; then
        lsblk /dev/$part -ln -o MOUNTPOINT
    fi
done

명령 에는 옵션 lsblk만 있으므로 NAME시스템의 파티션 이름만 가져옵니다. -ln또한 제목과 트리 형식도 종료하므로 순수 목록입니다 . 이 grep명령은 선택 사항이며, 스냅으로 생성된 루프 파티션 검사를 건너뜁니다. 그런 다음 lsblkLUKS로 감지된 파티션에 또 다른 파티션을 추가합니다.

까다롭지만 LUKS는 cryptsetup마운트 지점이 아닌 파티션에서 작동합니다. 스크립트 내에서 사용하려는 경우 더 나은 연습을 위해 함수로 만들 수 있습니다.

관련 정보