2012-06-06 168 views
0

我認爲這個問題應該是一件容易的事情,但在搜索整個網絡後我無法找到答案,所以我決定在這裏問。允許上傳和瀏覽但不允許下載

我在我的網站上有一個文件上傳器,它使用php。上傳文件的文件夾有777個chmod。我也有一個PHP腳本來列出該文件夾中的文件。我需要的是允許php上傳和瀏覽該文件夾中的文件,但不允許人們這樣做。我想象的唯一解決方案是將該文件夾映射到與默認不同的另一個用戶,因此我可以稍後在filezilla中chmod並僅允許所有者執行此操作,以便人們可以通過php腳本的輸出查看文件,但如果它們不是導航到該文件夾​​。

即時通訊使用Debian,apache2。我想知道我能做些什麼。我的目標是:允許php上傳,讀取,寫入和執行文件夾中的文件,但除非他們使用我的PHP腳本,否則不會客戶端。

在此先感謝

回答

1

把你正在談論的所有文件放在他們自己的目錄中。將.htaccess文件添加到該目錄。 .htaccess的內容應該是deny from all

這將阻止任何用戶手動訪問文件,因爲訪問將被阻止。您的PHP腳本仍然可以瀏覽文件的內容,並以正確的內容類型作爲附件提供。

有關如何服務下載PHP中的文件的詳細信息,請閱讀本:https://serverfault.com/questions/316814/php-serve-a-file-for-download-without-providing-the-direct-link

+0

你能解釋一下我的「他們自己的目錄」是什麼意思?我嘗試使用.htaccess文件,但我仍然可以從直接鏈接下載文件。我不想以任何方式提供下載服務。我只是想用php腳本顯示那個文件夾的內容(已經完成)。但我不希望任何人能夠以任何方式下載它們,只是爲了上傳。 – Karevan

+0

如果將'htaccess'文件放在一個具有'deny from all'的目錄中,則該目錄中的所有文件將不再可訪問。 – xbonez

+0

對不起,但不是爲我工作,我在我的文件所在的文件夾中添加了.htaccess,並且不帶引號的「全部拒絕」,但我仍然可以從瀏覽器下載文件 – Karevan

1

所有服務,包括Web服務器中這是在OS的帳戶安全上下文中運行,例如Apache的開始使用Apache apache組中的用戶。只需更改模式並將所有者更改爲此用戶和組即可。永遠不要chmod目錄到777,直到有一個很好的解釋。使用這個技巧,Web服務進程只能在該目錄中讀取,寫入和執行。

同樣,如果您希望瀏覽器客戶端不要查看(讀取)該目錄的內容,則應該拒絕該目錄中的列表。我認爲這是默認禁用的。

+0

我的目錄是:mapuploader所以我應該只是:chown -R apache mapuploader? :s – Karevan

+0

我現在明白了。是。你應該首先將它切換到apache用戶。 chown -R apache apache mapuploader/ –

+0

那麼我的問題是:我應該讓哪個用戶成爲該文件夾的所有者? 「apache」用戶不存在,我使用top命令查看進程所有者,並在apache2進程中有兩個所有者:root和www-data。我嘗試了兩種方式,並與萬維網數據,其始終公開(如使每個人的所有者),並與根php不能讀取它 – Karevan