Linux
是否有一個文件始終存在而“普通”使用者不能 lstat 它?
我需要這個進行單元測試。有一個函式在作為參數傳遞的文件路徑上執行lstat 。我必須觸發
lstat
失敗的程式碼路徑(因為程式碼覆蓋率必須達到90%)該測試只能在單個使用者下執行,因此我想知道 Ubuntu 中是否存在始終存在的文件,但普通使用者對其或其文件夾沒有讀取權限。(所以
lstat
除非以root身份執行,否則會失敗。)不存在的文件不是解決方案,因為有一個單獨的程式碼路徑,我已經觸發了它。
編輯:僅缺乏對文件的讀取權限是不夠的。這樣
lstat
仍然可以執行。通過在 /root 中創建一個文件夾並在其中創建一個文件,我能夠觸發它(在我具有 root 訪問權限的本地電腦上)。並在文件夾上設置權限 700。所以我正在尋找一個文件夾中的文件,該文件夾只能由 root 訪問。
在現代 Linux 系統上,您應該能夠使用
/proc/1/fdinfo/0
(id 1 的程序的文件描述符 1(stdout)的資訊(init
在應該執行的根 pid 命名空間中root
))。您可以找到一個列表(作為普通使用者):
sudo find /etc /dev /sys /proc -type f -print0 | perl -l -0ne 'print unless lstat'
-type f
(如果您不想限制為正常文件,請刪除)。
/var/cache/ldconfig/aux-cache
如果您只需要考慮 Ubuntu 系統,它是另一個潛在的候選者。它應該可以在大多數 GNU 系統上工作,因為/var/cache/ldconfig
它只能通過ldconfig
GNU libc 附帶的命令對 root 進行讀+寫+搜尋。