Linux

如何檢查 /proc// 文件的讀取權限?

  • March 18, 2016

中的文件/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

如何檢查文件是否真正可讀?

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)如果

$$ -r /proc/5589/smaps $$ 2) 如果貓 /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

引用自:https://unix.stackexchange.com/questions/270607