/proc/의 원인/* 일반 사용자로 프로세스를 시작했지만 리소스는 여전히 루트가 소유하고 있습니까?

/proc/의 원인/* 일반 사용자로 프로세스를 시작했지만 리소스는 여전히 루트가 소유하고 있습니까?

/proc/<pid>/일부 프로세스(예: bash)에는 프로세스를 생성한 사용자가 전체 리소스를 읽을 수 있다는 것을 알았습니다 . 그러나 /proc/<pid>/프로세스 자체는 일반 사용자가 소유하고 suid를 호출하지 않지만 다른 프로세스(예: chrome 또는 gnome-keyring-daemon)의 리소스 대부분은 루트에서만 액세스할 수 있습니다.

커널을 조사한 결과 작업에 "덤프 가능" 플래그가 없으면 /proc/ 내용이 제한된다는 사실을 발견했습니다. 그러나 작업이 덤프 불가능해지는 시점을 이해하는 데 어려움을 겪고 있습니다(setuid 경우 제외). 크롬이나 그놈 키링을 적용하지 마세요):

https://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa0/fs/proc/base.c#L1532

누구든지 이것의 기본 메커니즘과 그 이유를 이해하는 데 도움을 주고 싶습니까?

감사해요!

편집하다:

사용자가 SSH 에이전트를 덤프할 수 없도록 하는 이유에 대한 좋은 문서를 찾았습니다 gnome-keyring-daemon(예:). 아직 확실하지 않음어떻게 gnome-keyring-daemon자신을 억누를 수 없게 만드십시오.

https://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa0/Documentation/security/Yama.txt#L30

답변1

Linux에는 플래그를 변경하는 시스템 호출이 있습니다 dumpable. 다음은 몇 가지 샘플 코드입니다.나는 썼다여러 해 전에:

#include <sys/prctl.h>
...
/* The last three arguments are just padding, because the
 * system call requires five arguments.
 */
prctl(PR_SET_DUMPABLE,1,42,42,42);

보안상의 이유로 gnome-keyring-daemon플래그가 의도적으로 0으로 설정될 수 있습니다 dumpable.

관련 정보