
私はexecve("/bin/sh")
Apacheプロセスのセキュリティトレーニングを正常に実行しました。たとえば、ls コマンドは root および in では正しく動作します/bin
が in では動作せず/tmp
、ディレクトリが誰でも読めるにもかかわらず何も出力しません。また、fooにファイルを作成し、/tmp
所有者をに変更しwww-data
ましたが cat: /tmp/foo: No such file or directory
。
何が問題なのでしょうか?
答え1
PrivateTmp=true
Artemが述べたように、Apacheまたはphp-fpmは、ここで述べたようにシステムサービスとして実行できます。https://www.freedesktop.org/software/systemd/man/systemd.exec.html
これにより、Webサーバーはシステムの他の部分/tmp
とは別に独自のマウントネームスペースで実行されます。/var/tmp
nsenter
これが他のプロセスの名前空間でスクリプトを実行するために使用できると仮定します。プロセスID 1は、ほとんどのシステムと同じ名前空間になければなりません。
nsenter -mt 1 /bin/sh