특정 프로세스에서 액세스한 모든 파일을 추적하시겠습니까?

특정 프로세스에서 액세스한 모든 파일을 추적하시겠습니까?

최근에 한 가지가 있었습니다(공개적으로 확인되지 않음).사용자 개입 없이 Skype가 액세스해서는 안 되는 파일에 액세스하고 있다고 보고합니다.. Linux의 Skype에 이것이 존재하는지 모르겠지만 알아두면 좋을 것입니다. 특정 프로세스에서 액세스하는 모든 파일을 추적하는 방법이 있습니까?

답변1

다음을 통해 프로세스를 시작하세요 strace.

strace -fe open skype

모든 시스템 호출 목록 open(), 즉 프로세스가 수명 동안 열린 모든 파일(또는 연결)이 표시됩니다.

현재 열려 있는 파일 설명자를 보면 로그는 제공되지 않으며 프로세스가 현재 액세스하고 있는 내용에 대한 "스냅샷"만 제공됩니다.

답변2

Skype 프로세스의 PID가 주어지면 다음을 수행할 수 있습니다.

for fd in /proc/$skype_pid/fd/*;do
    echo -n "File descriptor $fd points to "
    readlink "$fd"
done

특정 프로세스에 대해 해당 /proc/$PID/fd프로세스에서 현재 열려 있는 모든 파일에 대한 심볼릭 링크를 포함합니다. 이러한 링크의 이름은 파일 설명자 번호를 따라 지정됩니다. 예를 들어, 프로세스가 표준 입력을 어디서 가져오는지 알아보려면 readlink /proc/$pid_of_process/fd/0위의 내용을 통해 Skype 프로세스에서 열린 모든 파일을 알 수 있습니다.

프로세스의 PID가 확실하지 않은 경우 다음을 시도하십시오.

$ pgrep skype

첫 번째 단계는 알아내는 것입니다.

이는 procfs가 있는 시스템에서만 작동하며 GNU/Linux도 그 중 하나입니다.

관련 정보