Ubuntu - /var/lib/php/session/ にないとバイナリを実行できません。

Ubuntu - /var/lib/php/session/ にないとバイナリを実行できません。

私はUbuntu 18.04(Bionic Beaver)ボックスと他のいくつかのDebianベースのシステムでこの奇妙な問題を発見しました。netcatデモには静的にリンクされたバイナリ(Unixネットワークツール)を使用しますが、結果はどのシステムでも同じです。その他のELF実行可能ファイル。

これを実行すると、次のメッセージが表示されます(たとえば、通常のディレクトリから/tmp)。

/tmp$ ./nc
-bash: ./nc: Permission denied

実行権限に対する権限がchmod正しい。

/tmp$ ls -lah nc
-rwxr-xr-x 1 user user 2.8M May 19 19:38 nc

私は多くの組み合わせを試しましたが、私の友人がバイナリを/var/lib/php/session(PHPSESSIDのある場所)に入れるように提案し、機能するまで何も機能しませんでした。

/var/lib/php/session$ ./nc
Ncat: You must specify a host to connect to. QUITTING.

しかし、それについての説明が見つからず、phpすべてのシステムに存在するわけではありませんが、このような場合はどうすればよいですか?

答え1

/tmpこれはフラグを使用してインストールするときに発生します。noexecこれはシステムの場合です。出力を参照してくださいmount。これにより、/tmpファイルの権限に関係なく、以下に保存されている実行可能ファイルは実行されません。この設定を使用して他のグローバルに書き込み可能なディレクトリをマウントするために使用されるアイデア/tmpは、システムにバイナリを配置して実行することをより困難にすることです。

マウントされたボリュームのすべてのディレクトリいいえ noexec(たとえば、/varほとんどの場合)実行したい実行可能ファイルを保存するために使用できます。どのディレクトリあなた何を使うべきかは、正確なユースケースによって異なります。

関連情報