デフォルトでは、Ubuntu でプロセスを別のプロセスにアタッチできるのは、事前に関係が定義されている場合のみに制限されます。たとえば、子プロセスを開始した親プロセスなどです。これは ptrace の制限であり、root 以外のユーザーにのみ有効です。マルウェア攻撃に対するセキュリティを強化することを目的としたもので、root ユーザーは引き続き任意のプロセスにアタッチできます。
これは、動的アタッチメント デバッグに影響します。
この動作は、/proc/sys/kernel/yama/ptrace_scope の sysctl で定義されます。この値はデフォルトでは 1 に設定されています。
制限を緩和し、プロセスを他のプロセスにアタッチできるようにするには、この値を 0 に設定する必要があります。これにより、同じユーザー ID のプロセスを相互にアタッチできるようになります。制限を解除するには次のコマンドを実行します。
sudo sh << END echo 0 > /proc/sys/kernel/yama/ptrace_scope END
次の表に、これを行う必要があるデバッグ方法を示します。
デバッグ方法 | ptrace_scope の sysctl の値 |
---|---|
anim <prog> | 0 または 1 のいずれか |
COBSW=+A <prog> | 0 または 1 のいずれか |
anim <pid> | 常に 0 |
cobanimsrv | 0 または 1 のいずれか |
cassi -a | 0 または 1 のいずれか |
CBL_DEBUG_START | 0 または 1 のいずれか |
debug_on_error チューナー | 0 または 1 のいずれか |
core_on_error チューナー | 0 または 1 のいずれか |
stackdump_on_error チューナー | 0 または 1 のいずれか |
Eclipse を使用したリモート デバッグ | 0 または 1 のいずれか |
Eclipse を使用したプロセスへのリモート アタッチ (PID へのアタッチ) によるデバッグ | 常に 0 |
ptrace の制限の詳細については、Ubuntu のドキュメントを参照してください。