カーネル パッチ 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 モードの場合と同様)。このグループは、nonroot ユーザーを sudoers ファイルなどに入れる代わりに使用する必要があります。ただし、システム全体のタスクを監視することが想定されていない信頼できないユーザー (デーモンなど) は、グループに追加しないでください。
プロセス レベルで可視性を制御することはできませんが、ユーザーが自分のプロセスのみを表示できるようにすることはできます。
カーネル バージョンが 3.3 よりも大きい場合は、次のコマンドで試すことができます:
mount /proc -o remount,hidepid=2
さて、ここにはいくつかのオプションがあります。簡単な方法は、ps と top プログラムを、隠したいものを隠す修正バージョンと交換することです。
別の方法は、既存のプロセスに埋め込まれたコードを実行するか、無害な名前でコードの周りにラッパー スクリプトを記述することです。
PS の一部のバージョンでは、argv[] を変更することで変更できますが、それが top で機能するかどうか、Linux で機能するかどうかはわかりません (これは主に BSD 規則です)。
それは、これを行うことで何を達成しようとしているのかによって異なりますか?