私は非常に奇妙な問題を発見しました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メカニズム(名前空間のマウント?)を知っていますか?私の内容を読んでくれてありがとう。