[英]Check if path accessible by non-root user
我有一個用 Python(在 Linux 中)編寫的安裝腳本,它以 root 身份運行,需要檢查某些文件是否可以被非 root 用戶讀取。
出於這個原因,我不能使用 os.path.exists() 或 open(filename) (並捕獲任何異常)。
目前我正在考慮檢查每個文件的權限位,但唯一的問題是我還必須檢查通向文件名的路徑上的權限位(目錄需要設置 r+x 位),如果我有數千個文件,這可能是一個非常緩慢的過程。
我的解決方案是最好的,還是有更好的選擇?
編輯:檢查文件后,我需要以 root 身份運行腳本,因此不幸的是,刪除 root 權限不是一個選項。
您可以使用os.seteuid將有效用戶更改為某個非 root 用戶。 然后嘗試打開文件。 如果權限被拒絕,將IOError
。
import os
os.seteuid(65534) # user 65534 is `nobody`
filename='/etc/passwd-'
try:
open(filename,'r')
except IOError as err:
print(err)
# [Errno 13] Permission denied: '/etc/passwd-'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.