2011-03-01 34 views
1

我一直在撞牆上的這一塊。我有一個系統,允許用戶FTP服務器的zip文件。然後在管理員中,他們可以告訴應用程序這個文件在哪裏,因此可以在該文件上執行一組操作。Linux上的Coldfusion - 無法更改文件的權限

  1. 將文件移動到web目錄
  2. 解壓文件
  3. 列表的內容以及將數據插入數據庫

問題是,上傳的文件並不總是正確的權限。我試圖改變它們與以下內容:

<cfscript> 
    FileSetAccessMode(myFile, "777"); 
</cfscript> 

而且

<cffile action="rename" mode="777" source="#myFile#" destination="#myFile#">   

而且

<cffile action="move" mode="777" source="#myFile#" destination="#myFile#">  

但什麼都不會改變這個zip的許可文件。請注意,如果我對圖像(.jpg)執行上述任何操作,它都可以正常工作。我錯過了什麼嗎?

回答

4

FTP'd文件不可能被網絡服務器進程所擁有,除非您使用與在其下運行的網絡服務器相同的憑據進行FTP登錄。除非網絡服務器擁有這些文件,否則它將無法更改它們的權限。

+0

這是一個無賴。這意味着cfdirectory甚至沒有刪除文件的權限。 : -/ – jyoseph 2011-03-01 19:57:18

+2

我不這麼認爲......在UNIX上,刪除文件是目錄權限(寫入,模式2)的一種功能,而不是文件權限的功能。爲了看到這一點,作爲根用戶觸摸你的主目錄中的文件..它將由root擁有,但你可以刪除該文件。 – bpanulla 2011-03-01 20:05:35

+1

Yah,正如bpanulla所說 - 只要Web服務器對文件所在的目錄具有寫入權限,您就應該可以刪除文件。但是,除非您更改了「外部」文件的權限,否則您將無法更改權限服務器以root身份運行(不要作爲ROOT運行)。 – 2011-03-01 20:07:49

1

如果Web服務器/ ColdFusion服務器可以讀取該文件,請將其複製到臨時區域,然後刪除原始文件。如果CF已經向FOLDER寫入(並可能執行)權限,即使它設置爲000模式(任何人都無法訪問),它應該能夠刪除原始文件,而不管其擁有者是誰。

將上傳放置在沙箱中,然後移動到服務器期望的位置,無論如何都是很好的安全措施。