Por motivos de segurança, a leitura de /proc/PID/smaps
requer o recurso CAP_SYS_PTRACE
.
Você pode adicionar esse recurso ao seu aplicativo usando sudo setcap cap_sys_ptrace+ep YOUR_APPLICATION
.
Estou tentando escrever um script que examina o uso da memória para executar processos. Para fazer isso, ele precisa ler os arquivos / proc / * / smaps.
Os processos pertencentes a root têm a permissão definida como '-r - r - r--', que deve ser legível por todos, certo?
exemplo de saída de ls -l [EDIT: agora com permissões de diretório]
ls -l /proc/939/smaps
-r--r--r-- 1 root root 0 2012-07-11 12:11 /proc/939/smaps
ls -ld /proc/939/smaps
-r--r--r-- 1 root root 0 2012-07-11 12:11 /proc/939/smaps
tente ler:
cat /proc/939/smaps
cat: /proc/939/smaps: Permission denied
há algo óbvio que sinto falta aqui?
EDIT2: Em investigações posteriores, outros arquivos, como / proc // cmdline, são legíveis, então pode ser apenas um caso especial para o arquivo smaps?
Por motivos de segurança, a leitura de /proc/PID/smaps
requer o recurso CAP_SYS_PTRACE
.
Você pode adicionar esse recurso ao seu aplicativo usando sudo setcap cap_sys_ptrace+ep YOUR_APPLICATION
.