當執行驅動器的遞歸目錄掃描以通過在sudo
下運行程序可執行文件來生成每個文件的哈希時,我發現有1,000個文件正在拋出「Permission拒絕「錯誤。Linux - 從Sudo讀取文件 - 「權限被拒絕」
我的問題:這是否由設計,爲什麼是sudo無法讀取文件?我在做什麼甚至可能,因爲在掃描期間文件可能被加密或當前正在使用?
當我編譯到Mac OSX並執行相同的掃描sudo
下,我沒有這個問題,只是Linux。
Distro: 3.19.0-25-generiC#26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
許可文件的實例否認:
Can't open file: "/sys/class/gpio/unexport"
MSG: "Permission denied"
Can't open file: "/sys/class/gpio/export"
MSG: "Permission denied"
的權限設置示例:
/sys/class/gpio$ ls -al
total 0
drwxr-xr-x 2 root root 0 Oct 5 04:51 .
drwxr-xr-x 57 root root 0 Oct 4 11:25 ..
--w------- 1 root root 4096 Oct 5 04:51 export
--w------- 1 root root 4096 Oct 5 04:51 unexport
MD5函數,其中文件讀取失敗:
QByteArray MD5(QString sPath)
{
QByteArray resultMD5 = NULL;
QFile* file = new QFile(sPath);
if(file->open(QIODevice::ReadOnly))
{
QCryptographicHash* pHashMD5 = NULL;
resultMD5 = pHashMD5->hash(file->readAll(),QCryptographicHash::Md5);
file->close();
//Clean up pointer
delete pHashMD5;
delete file;
}
else
{
qDebug() << "Can't open file: " << sPath;
qDebug() << "MSG: " << file->errorString();
file->close();
delete file;
}
return resultMD5;
}
'/ sys/...'下的文件不是真實文件,它們不存在於硬盤上。根據這些*權限*即使'root'都沒有讀權限,它們是*只寫*'文件'。 – Galik
你真的*想讀/ sys,/ dev等嗎?這不是像硬盤上的圖像和音樂那樣的文件,而是其他奇怪的東西。從別處引用:'sysfs是基於RAM的文件系統。它提供了一種方法來導出內核數據結構及其屬性,以及它們與用戶空間之間的鏈接.'和dev是完整硬盤和其他設備的節點列表, – deviantfan
Yeah *'怪物'*。這是我錯過的技術術語! ; o) – Galik