私は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
ほとんどの場合)実行したい実行可能ファイルを保存するために使用できます。どのディレクトリあなた何を使うべきかは、正確なユースケースによって異なります。