/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

修正する:

私の考えでは、スクリプトで次の2つのチェックを組み合わせる必要があると思います。 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

関連情報