/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
자신을 억누를 수 없게 만드십시오.
답변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
.