6
我有一個以Python(在Linux)中編寫的以root用戶身份運行並需要檢查某些文件是否可以被非root用戶讀取的安裝腳本。檢查非root用戶可以訪問的路徑
由於這個原因,我不能使用os.path.exists()或打開(文件名)(並捕獲任何異常)。
目前我正在考慮檢查每個文件的權限位,但唯一的問題是,我將不得不檢查通向文件名的路徑上的權限位(目錄需要r + x位設置),如果我有數千個文件,這可能會非常緩慢。
我的解決方案是最好的,還是有更好的選擇?
編輯:我將需要以root身份在腳本運行後檢查文件,因此不幸的是,刪除根權限不是一個選項。
65534在大多數現代操作系統(從Windows支持)上都沒有,但它並不在所有的posix系統上。便攜式應用程序可能需要做更多的工作來猜測真正的euid。也許應用程序應該嘗試以root身份讀取passwd文件(以確保它存在),然後嘗試讀取passwd文件爲65534(以確保它缺少權限,異常==成功),然後嘗試讀取目標文件作爲65534(實際檢查權限),如果前兩個失敗,則通知用戶自己檢查權限。 – SingleNegationElimination
這種方法唯一的問題是我需要腳本在檢查完文件後以root身份運行。 –
@teehoo:您可以使用'os.seteuid(0)'將有效用戶重置爲root。 – unutbu