簡體   English   中英

檢查非root用戶是否可以訪問路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM