/proc/*/* 파일의 읽기 권한을 확인하는 방법은 무엇입니까?

/proc/*/* 파일의 읽기 권한을 확인하는 방법은 무엇입니까?

파일은 /proc/누구나 읽을 수 있는 것처럼 보이지만 거부된 권한을 반환합니다.

$ 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

그러한 파일을 읽는 것을 피하고 싶지만 -r검사가 통과되었습니다.

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

파일을 실제로 읽을 수 있는지 확인하는 방법은 무엇입니까?

답변1

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

아니면 덜 읽으세요

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

고쳐 쓰다:

내 생각에는 스크립트에서 다음 두 가지 검사를 결합해야 한다고 생각합니다. 1) if [ -r /proc/5589/smaps ] 2) if cat /proc/5589/smaps 2>/dev/null 1>/dev/null;

따라서 먼저 파일 권한을 확인한 다음 proc 파일을 읽은 결과를 확인하십시오. 예를 들어:

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

관련 정보