Como posso verificar a permissão de leitura de arquivos / proc / * / *?

1

Os arquivos em /proc/ parecem ser legíveis por todo o mundo, mas a permissão de retorno é negada:

$ ls -lh /proc/5589/smaps  
-r--r--r-- 1 root root 0 Mar 18 13:11 /proc/5589/smaps
$ cat /proc/5589/smaps 
cat: /proc/5589/smaps: Permission denied

Eu quero evitar a leitura desses arquivos, mas -r check passa:

$ if [ -r /proc/5589/smaps ] ; then echo readable ; fi
readable

Como posso verificar se o arquivo é realmente legível?

    
por Jean Jordaan 18.03.2016 / 07:59

1 resposta

3
if cat /proc/5589/smaps 2>/dev/null 1>/dev/null; then 
    echo readable ; 
fi

ou para ler menos

if head -n 1 /proc/5589/smaps 2>/dev/null 1>/dev/null; then 
    echo readable ; 
fi

Atualização:

Acho que você precisa combinar as duas verificações no seu script: 1) se [-r / proc / 5589 / smaps] 2) se cat / proc / 5589 / smaps 2 > / dev / null 1 > / dev / null;

Para que primeiro você verifique as permissões de arquivo e verifique o resultado da leitura de um arquivo proc. Por exemplo:

filename="/proc/5589/smaps"
if test -r "$filename" && cat "$filename" 2>/dev/null 1>/dev/null; then
    echo readable
else
    echo not readable
fi
    
por 18.03.2016 / 08:31