ファイルを復号化し、そのファイルに含まれるファイルシステムをマウントし、コンソールにアクセスせずに systemd サービスを開始できるローカル Web サイトを作成しようとしています。開始されたサービスは、マウントされたファイルシステム内のファイルを使用します。Web サーバーは現在、cgi 経由で Python コードを実行し、そのファイルシステムを復号化してマウントするシンプルな Web サイトを提供しています。私は、www-data ユーザーが Python で呼び出す特定のコマンドを実行できるように、sudoers ファイルに例外を設定しました。
この Web サイト ( を呼び出す) を使用してファイルを復号化すると、cryptsetup luksOpen
復号化されたデバイスが期待どおりに表示されます。
> file /dev/mapper/service-volume
/dev/mapper/service-volume: symbolic link to ../dm-0
しかし、私の Python コードがこれをマウントしようとすると、service-volume
Apache ワーカー プロセス内でのみマウントされ、シェルや他のプロセスでは使用できません (XXX は Apache ワーカー プロセスの PID です)。
> mountpoint /mnt/service-folder
/mnt/service-folder is not a mountpoint
> cat /proc/XXX/mounts
...
/dev/mapper/service-volume /mnt/service-folder ext4 rw,relatime 0 0
マウント操作はsudo /bin/mount /dev/mapper/service-volume /mnt/service-folder
Python の subprocess.run() によって実行されます。
そこで私の質問は、そこで何が起こっているのか、これは何らかの名前空間/cgroup の魔法なのでしょうか? また、このフォルダーを Apache 自体以外の別のサービス/プロセス用にマウントするにはどうすればよいでしょうか?
追加情報:
存在service-folder
する(マウントされたファイルシステムなし):
> ls -la /mnt/service-folder
total 8
drwxr-xr-x 2 root root 4096 Jan 23 21:25 .
drwxr-xr-x 4 root root 4096 Jan 23 21:25 ..