プロセスの実行を停止する方法は?

プロセスの実行を停止する方法は?

プロセスを終了できます。しかし、Linuxでプロセスを削除せずにプロセスが再度呼び出されるのを防ぐにはどうすればよいですか?たとえば、プロセスに関連付けられているポートを見つけるためにnetstatなどのプログラムを実行してから終了すると、数秒以内に別のPIDで再実行されることがわかります。

答え1

実行権限ビットを変更します。ルートとして次のコマンドを使用します。

chmod a-x path_to_process_binary

これはデフォルトでa所有者、グループ、およびその他(=すべて)に対する実行権限を拒否します。

この簡単な方法でプロセスが実行されるのを防ぎますが、システムでより深刻な問題が発生する可能性があると思います。

実際に直接実行する必要がある場合は確認してください。この回答

答え2

おそらく多すぎるかもしれませんが、おそらく最も安全なアプローチは、AppArmorまたはSELINUXを使用してバイナリが実行されるのを防ぐことです。ファイル権限の変更は、バイナリを提供するパッケージが更新されるまで有効です。その後、更新すると再実行可能に設定されます。

一方、パーティション全体を保護してパーティションから直接何も実行できないようにしたい場合(たとえば、そのディレクトリでバイナリを解凍または実行できないようにするために)、/var" /tmpnoexec"オプションフラグ:

root@server: ~ # grep noexec /etc/fstab
/dev/sda6    /tmp   ext4   defaults,noexec,nosuid,nodev  1 1

この方法:

root@server: /tmp # cp /usr/bin/vim .
root@server: /tmp # ./vim
-bash: ./vim: Permission denied

/bin/sh /tmp/myscript.shシェルスクリプトはまだ。として実行できますが、直接実行することはできません./myscript.sh

「noexec」フラグは、脆弱なPHPまたはCGIサイトからバイナリをダウンロード、コンパイル、実行することに基づくいくつかの攻撃を避ける可能性があるため、Webサーバーに役立ちます。

関連情報