私はsuidバイナリでptraceを実行できないことを理解しています。しかし、私はバイナリがその前世代をeuidではなくuidに落とした後、なぜptraceを実行できないのだろうと思っています。ptrace suid process(previlegeを落とした後)
たとえば、バイナリでは、suidバイナリはいくつかの手順の後に特権を削除します。
seteuid (euid); /* euid was obtained by geteuid() */
ret_chdir = chdir (path);
seteuid (ruid); /* ruid was obtained by getuid() */
system("whoami");
printf("Enter any char");
scanf("%c", &junk);
私の場合、「whoami」と表示されるのはプロセスのユーザー名であり、プロセスの所有者ではありません。プログラムが迷惑メール入力を待っているとき、私はuidをユーザ名として実行中のプロセスにアタッチしようとしていましたが、バイナリが特権を落としたにもかかわらず失敗しました。 ptrace attachがsaved-uid状態を使用して私が所有者ではないと判断する可能性はありますか?
これはunix.stackexchange.comの方が良いかもしれません。これは、実際のプログラミングではなく、Unixの設計についてのさらなる質問です。 – Barmar