Linuxでだれでも殺すことができるプロセスを作成する方法はありますか?


0

例えば、私はUbuntuサーバー上でバックグラウンドでプロセスの実行を開始したいのですが、私以外の誰かがサーバーにログインしたときはいつでも、そのユーザーによってプロセスが強制終了されなければなりません。このようなプロセスを作成することは可能ですか? (私が持っています sudo アカウントと変更することができます /etc/bash.bashrc

ありがとうございます。


3
あなたはあなたのことを説明できますか 本当に 達成する必要がありますか?これは一種の人為的なようです。ここで本当の目標は何ですか?
slhck

回答:


1

以下の事項はシステムのセキュリティをさまざまな点で低下させる可能性があることに注意してください。

あなたのプロセスを強制終了するスクリプトを作成します(プロセスPと呼びましょう)。その後、すべてのユーザーにsudoersでこのスクリプトを実行する許可を与えます。最後にsudoを使ってこのスクリプトの適切な呼び出しをに追加します。 /etc/bashrc

例として、自分のプロセスが次のものから始まっていることを知っていると仮定しましょう。 /usr/local/sbin/myproc そして、誰かがログインしたらすぐにそれらすべてのプロセスを強制終了したいので、単純なgrep and kill戦略を使用してそれらを強制終了します。

それで、最初に以下を入れてください /usr/local/sbin/killmyprocs

#!/bin/sh

ps auxw|grep [m]yproc|awk '{ print $2 }'|xargs kill -TERM > /dev/null 2>&1

# end of file.

実際に作業を進めて実装するのであれば、おそらくもう少し洗練されたものにしたいでしょう。そのため、適切なシグナルをトラップし、一般的に安全な方法で処理を行うスクリプトを作成してください。

次に、すべてのユーザーにこのスクリプトを実行する権限を与えます。 /etc/sudoers それを追加することによって:

ALL ALL = (root) NOPASSWD: /usr/local/sbin/killmyprocs

最後に、あなたのスクリプトにsudo呼び出しを追加します。 /etc/bashrc

[ "`id -n -u`" != "<my_username>" ] && sudo /usr/local/sbin/killmyprocs

あなた自身でログインするときあなたの「秘密の」プロセスを殺すのを避けるためにあなた自身のアカウントで置き換えてください。

要約すると、1)出力を生成しないが、強制終了しようとしているプロセスを強制終了するスクリプトを作成します。 /etc/sudoers システム上のすべてのユーザーがそのスクリプトをrootとして実行できるようにするには、3)sudoを介してスクリプトに呼び出しを追加します /etc/bashrc (または /etc/profile

注意点: /etc/bashrc (または /etc/profile その点については、対話型シェルのためにのみ調達されます。これは、ユーザーがssh yourhost 'ps auxw'を実行してプロセステーブルからプロセスを見つけるのが比較的簡単であることを意味します。シェル初期化ファイルが参照されないため、上記のメカニズムでは終了しません。これを回避する方法があります。 ForceCommand ʻsshd_config`にはありますが、それは読者のための課題として残されています。

結論として、これには明らかなセキュリティ上の影響があることを再度思い出したいと思います。これはまた、あなたが完全にアクセスできないシステムをバックドアしようとしているのと非常によく似ていますが、それはここでは私の関心事ではありません(スーパーユーザーでこれらのことを尋ねなければならない場合、とにかく間に合うでしょう) 。


1

「プロセスはそのユーザーによって強制終了されなければならない」とはどういう意味ですか?

A)自分の所有していないプロセスをユーザーに強制終了させたいですか

プロセスを強制終了するスクリプトを作成してから、setuidを次のように設定します。 chmod u+s (自分が何をしているのかわからない限り、これは大きなセキュリティホールになる可能性があります。)

または

B)あなたがプロセスにログインしているユーザーに気づいてそれ自身を殺して欲しいですか?

まあそれはあなたがするだろうことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.