まず、これが可能である場合は、root(またはrootのUID 0を共有するユーザー)として実行する必要があると思います。
それはに表示されないように、どのようにプロセスを起動することができるps aux
か、ps ef
またはtop
コマンドがroot以外によって実行された場合にリストアップ?
これは可能ですか?
私が通常実行しているディストリビューションはRHEL / CentOSとUbuntuです。そのため、ディストリビューション固有の回答があれば、それも問題ありません。
まず、これが可能である場合は、root(またはrootのUID 0を共有するユーザー)として実行する必要があると思います。
それはに表示されないように、どのようにプロセスを起動することができるps aux
か、ps ef
またはtop
コマンドがroot以外によって実行された場合にリストアップ?
これは可能ですか?
私が通常実行しているディストリビューションはRHEL / CentOSとUbuntuです。そのため、ディストリビューション固有の回答があれば、それも問題ありません。
回答:
さて、あなたはここにいくつかのオプションがあります。簡単な方法は、psと上位のプログラムを、非表示にしたいものを非表示にする変更されたバージョンに置き換えることです。
別の方法としては、既存のプロセスに埋め込まれたコードを実行するか、無害な名前でコードの周りにラッパースクリプトを記述します。
PSの一部のバージョンでは、argv []を変更することで変更できますが、それがtopで機能するかどうか、Linuxで機能するかどうかは不明です(これは主にBSD規則です)。
それはすべて、これを行うことによって達成しようとしていることに正確に依存していますか?
python myScript.py
とsubprocess.Popen
、同じプロセスである限り、すべてのコマンド(パスワードが含まれる場合と含まれない場合があります)は表示されませんか?
カーネルパッチhttp://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201によると、procファイルシステムにhidepidオプションを使用できます。
hidepid = 0(デフォルト)は古い振る舞いを意味します-誰でもすべての誰でも読み取り可能な/ proc / PID / *ファイルを読み取ることができます。
hidepid = 1は、ユーザーが/ proc //ディレクトリにアクセスするのではなく、自分のディレクトリにアクセスすることを意味します。cmdline、sched *、statusなどの機密ファイルが他のユーザーから保護されるようになりました。proc_pid_permission()で実行される権限チェックとファイルの権限は変更されないままなので、特定のファイルのモードを想定しているプログラムが混乱することはありません。
hidepid = 2は、hidepid = 1に加えて、すべての/ proc / PID /が他のユーザーから見えなくなることを意味します。プロセスが存在するかどうか(kill -0 $ PIDなどの他の方法で学習できる)を隠すわけではありませんが、プロセスのeuidとegidは隠します。これは、実行中のプロセス、一部のデーモンが昇格された特権で実行されるかどうか、別のユーザーが機密プログラムを実行するかどうか、他のユーザーがプログラムを実行するかどうかなどの情報を収集する侵入者のタスクに適合します。
gid = XXXは、(hidepid = 0モードのように)すべてのプロセスの情報を収集できるグループを定義します。非rootユーザーをsudoersファイルなどに入れる代わりに、このグループを使用する必要があります。ただし、システム全体のタスクを監視することになっていない信頼できないユーザー(デーモンなど)は、グループに追加しないでください。
プロセスレベルで可視性を制御することはできませんが、ユーザーが自分のプロセスのみを表示できるようにすることができます。
カーネルのバージョンが3.3以降の場合は、次のコマンドで試してください。
mount /proc -o remount,hidepid=2
hidepid=2
特定のユーザーのみに影響を与えるように(または特定のユーザーをホワイトリストに登録するように)制限できますか?
root
?