shebang을 사용하여 스크립트에서 설치할 수 없습니다(커널 강화 관련?)

shebang을 사용하여 스크립트에서 설치할 수 없습니다(커널 강화 관련?)

나는 매우 이상한 문제를 발견했습니다 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 메커니즘(네임스페이스 마운트?)을 알고 계십니까? 제 내용을 읽어주셔서 감사합니다.

관련 정보