2015-06-09 85 views
0

我已經在Arch Linux上安裝nginx。任何時候我的網站(即nginx)都會創建臨時文件,它是由http:http用戶創建的,他們擁有755的權限。無法刪除nignx的臨時文件

我需要清除緩存時間,並以普通用戶身份登錄。這意味着任何時候我需要刪除這些文件,我需要使用sudo,這是不正確的原因。能夠在沒有sudo的情況下刪除這些文件的正確方法是什麼?

回答

1

老實說,這只是它應該的樣子。圍繞創建和使用臨時文件的語義是棘手的,也是許多安全問題的根源。不要試圖顛覆這一點。

真正的問題是,你爲什麼要刪除這些文件?它們是否從未被刪除,重用或由Nginx進程管理?如果出現問題,那麼解決的問題。除非你真的,真的真的不得不去追趕權限後正在運行的進程使用創建臨時文件。 (例如,如果你正在將這些文件寫入一些特殊的文件系統,但即使這樣也是一個弱點)

但是,如果你偶爾需要刪除由UID創建的文件,那麼你需要該UID或作爲特權用戶。有辦法調整sudo,這樣你就可以控制一個sudoer可以做多少(比如說七次真的很快)。

+0

用例:我正在一個網站上工作。它在它的'temp /'文件夾中創建臨時文件,並且它很美觀。但有時我需要與該項目的「控制檯」一起工作。這是一個Symfony /控制檯的php的東西,它允許我運行遷移,運行測試等。這個控制檯也需要一個臨時的。然而,無論何時嘗試訪問'temp /',它都不能,因爲'temp /'文件夾是由'http'創建的,但是我將控制檯作爲'user'運行。 – tsusanka

+0

首先,如果您的意思是要寫入/ tmp(注意絕對路徑)或可能是'chroot'環境中的「tmp」目錄,則需要清楚。看起來您有兩種選擇:(1)以http用戶(可能不可能)或root身份運行控制檯,或者(2)更改控制檯進程使用的臨時位置。不要破解nginx以使其適合。調整他們運行的工具或環境來解決問題。但是,我不知道這塊PHP是什麼或者做什麼,所以你將不得不進行研究。 PHP不能在特殊的TEMP環境下運行,或者通過一個標誌? – jdv

+0

我已經意識到它並不清楚,所以我編輯到'temp /'使它更清晰一點,我補充我自己的臨時文件夾。好的,謝謝,我會看看這個。 – tsusanka