无法使用 shebang 从脚本安装(与内核强化相关?)

无法使用 shebang 从脚本安装(与内核强化相关?)

我偶然发现了一个非常奇怪的问题mount。我无法理解它。

对于某些上下文,我编写了一个 Python 脚本,旨在自动挂载可热插拔 USB 设备,但这并不相关。

这是发生的安装错误:

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.

奇怪的是,如果我在 shell 中运行完全相同的命令,它确实有效:

$ sudo mount /dev/mapper/cfe1c7ab-36cc-4419-9373-764aaae1033f
$ echo $?
0

当我不使用 shebang 而是显式使用 bash 运行脚本时,它也能正常工作:

$ sudo bash /tmp/test
$ echo $?
0

显然 shebang 发生了一些事情,触发了Operation not permitted错误。如果我没记错的话,shebang 是由内核直接处理的,因此我开始怀疑它是否与我使用 ArchLinux 的事实有关linux-hardened(这是 GraphenOS 内核的一个分支)。

您是否知道在使用 shebang 运行脚本时可能会触发该错误的任何 Linux 机制(挂载命名空间?)?感谢您阅读我的内容。

相关内容