Pumount가 열리지 않는 장치를 닫는 이유는 무엇입니까?

Pumount가 열리지 않는 장치를 닫는 이유는 무엇입니까?

부팅 시 /etc/crypttab에 의해 열리는 luks 장치가 있습니다. lsblk는 다음과 같습니다.

sdc                                             8:32   1 114,6G  0 disk  
└─luks-672dcc74-d002-47dc-b61b-525baf91dc7c   253:2    0 114,6G  0 crypt 

다음과 같이 장치를 설치합니다.

pmount /dev/mapper/luks-672dcc74-d002-47dc-b61b-525baf91dc7c

다음과 같이 제거합니다(둘 다 작동함).

pumount /dev/mapper/luks-672dcc74-d002-47dc-b61b-525baf91dc7c
pumount /media/mapper_luks-672dcc74-d002-47dc-b61b-525baf91dc7c

그러나 pumount lsblk는 다음과 같습니다:

sdc                                             8:32   1 114,6G  0 disk

Pumount가 Luks 장치를 종료한 이유는 무엇입니까? pumount 매뉴얼 페이지에서 다음을 볼 수 있습니다.

Normally, pumount will not luksClose (see cryptsetup(1)) a device pmount did not open.

luks 장치는 pmount가 아닌 시작 시 /etc/crypttab에 의해 열립니다! pumount가 luks 장치를 닫는 이유는 무엇입니까? 이것은 버그입니까?

저는 Debian Bullseye를 사용하고 있습니다.

답변1

노트:저는 완전히 처음이고 pumount테스트할 수 있는 데비안 설치도 없습니다.방금 데비안에서 소스 코드를 받았습니다.그리고 거기서 발견한 것을 바탕으로 터무니없는 가정을 하게 되는데...

pumount--luks-forceLUKS 장치가 열려 있지 않은 경우(맨페이지에서 이미 인용한 대로) 장치를 닫는 옵션이 있습니다 .

그런데 소스코드를 보면 실행에 버그가 있는 것 같습니다.

따라서 pumount.c구문 분석된 몇 가지 옵션은 다음과 같습니다.

int luks_force = 0;
[...]
       { "luks-force", 0, NULL, 'L'},
[...]
            case 'L':        luks_force = 1; break;

...그렇습니다! 이 옵션은 luks_force = 1변수를 설정합니다. 그렇지 않으면 0으로 초기화됩니다.

하지만 그것은 전혀 중요하지 않습니다. 왜냐하면... 변수는 어디에도 사용되지 않기 때문입니다.

여기에는 luks.c다음 코드가 있습니다 .

void
luks_release( const char* device, int force )
{
  if(force || luks_has_lockfile(device)) {
    spawnl( CRYPTSETUP_SPAWN_OPTIONS,
            CRYPTSETUP, CRYPTSETUP, "luksClose", device, NULL );
    luks_remove_lockfile(device);
[...]

luksClose따라서 force잠금 파일이 존재하거나 true인 경우 이런 일이 발생합니다.

이 함수는 pumount.c다음과 같이 호출됩니다.

/* release LUKS device, if appropriate */
luks_release( device, 1 );

따라서 무엇을 하든 force항상 1로 설정하면 LUKS 장치가 꺼집니다.

마지막 줄은 아마도 luks_force1 대신 변수를 사용해야 하는 곳일 것입니다.

관련 정보