나는 매우 이상한 문제를 발견했습니다 mount
. 나는 그것을 이해할 수 없다.
어떤 맥락에서 핫플러그 가능한 USB 장치를 자동으로 마운트하도록 설계된 Python 스크립트를 작성했지만 이는 관련이 없습니다.
발생하는 설치 오류는 다음과 같습니다.
mount: /media/usb/backup: filesystem was mounted, but any subsequent operation failed: Operation not permitted.
LUKS 파티션이 잠금 해제되어 있고 스크립트를 사용하여 마운트하려고 합니다.
$ lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 64M 0 part
├─sdb2 8:18 0 128M 0 part
├─sdb3 8:19 0 10G 0 part
└─sdb4 8:20 0 1.8T 0 part
└─cfe1c7ab-36cc-4419-9373-764aaae1033f 254:1 0 1.8T 0 crypt
다음과 같이 재현 가능한 최소한의 예제를 만들었습니다.
#!/usr/bin/bash
mount /dev/mapper/cfe1c7ab-36cc-4419-9373-764aaae1033f
비트 x
가 설정되었으며 shebang을 사용하여 이 스크립트를 실행하면 위와 동일한 오류가 발생합니다.
$ sudo /tmp/test
mount: /media/usb/backup: filesystem was mounted, but any subsequent operation failed: Operation not permitted.
이상한 점은 쉘에서 똑같은 명령을 실행하면 작동한다는 것입니다.
$ sudo mount /dev/mapper/cfe1c7ab-36cc-4419-9373-764aaae1033f
$ echo $?
0
Shebang을 사용하지 않고 bash를 사용하여 명시적으로 스크립트를 실행하는 경우에도 잘 작동합니다.
$ sudo bash /tmp/test
$ echo $?
0
Operation not permitted
분명히 오류를 촉발한 shebang에 무슨 일이 일어났던 것 같습니다 . 제 기억이 맞다면 shebang은 커널에 의해 직접 처리되는데, 혹시 제가 ArchLinux를 사용하고 있다는 사실과 관련이 있지 않을까 하는 생각이 들기 시작했습니다.linux-hardened
(이것은 GraphenOS 커널의 포크입니다.)
shebang을 사용하여 스크립트를 실행할 때 이 오류를 유발할 수 있는 Linux 메커니즘(네임스페이스 마운트?)을 알고 계십니까? 제 내용을 읽어주셔서 감사합니다.