2013-03-04 96 views
1

我用下面的目錄中的php.ini上傳照片上的Apache - 紅帽/ AWSPHP照片上傳 - upload_tmp_dir權限

drwxrwxr-x 2 user2 user2 4096 Mar 4 08:10 datingPhotoUploads 

Apache是​​運行作爲用戶 '阿帕奇'。

我該如何給這個文件夾權限,以便用戶'apache'可以寫入它,但否則它儘可能安全?

三江源

+0

我想你已經做到了,但不要忘記找出* PHP *是否運行爲「apache」。 – 2013-03-04 08:16:54

+0

是的,它運行爲Apache - 例如:ps aux | grep apache - 這個列表apache作爲用戶 – Adam 2013-03-04 08:19:26

回答

2

通常upload_tmp_dir是/ tmp。這個/ tmp目錄作爲一些特殊的權利(chmod 1777),其中真正特別的權利是1。這是粘性的。這意味着,對於目錄,只能由文件所有者刪除此目錄中創建的文件,即使其他任何rwx權限似乎適用於文件。

因此,上傳的文件存儲在臨時文件夾中,用戶上傳的權限意味着只有apache才能刪除這些文件。一個好的起點。

您可以在您的datingPhotoUploads目錄中使用此權限。但是您也可以嘗試通過目錄的組擁有權來管理它(chmod user2:apache; chmod 2770 datingPhotoUploads;)。這裏chmod的770部分表示對chmod部分的用戶和組擁有者進行讀寫和刪除。 2表示在該目錄上創建的每個文件都將具有與該目錄相同的所有權,因此user2:apache

upload_tmp_dir的主要問題是:

  • 這是Apache的可寫目錄由Apache用戶可達?如果您不使用/tmp而是/some/where/datingPhotoUpload,則apache必須能夠讀取/some/some/where的目錄內容。因此,對於所有上述路徑,必須爲其他人(或者如果apache是​​組所有者)設置x右部分。
  • 這個路徑可用於所有我的php應用程序或只有運行的應用程序?這是/tmp的主要問題,該目錄可用於主機上運行的所有PHP應用程序。根據每個應用程序更改upload_tmp_dir可限制對其他應用程序的訪問,尤其是如果您對所有php應用程序設置了open_basedir限制,並且只有當前應用程序允許open_basedir設置中的/some/where/datingPhotoUpload
  • 這個目錄的大小是否足夠大?要小心大量上傳或大量上傳。當這個目錄被惡意用戶填滿時會發生什麼?
  • 我確定沒有辦法在此目錄中執行任何代碼?在exim數據中上傳包含php代碼的圖像是代碼包含攻擊的一個例子,你確定這個目錄在web服務器目錄根目錄之外嗎?你確定任何針對這個目錄的特殊路徑不允許php執行(也許在這個目錄中刪除php處理程序)?
2

上傳圖片(創建文件)文件夾中應該有-wx權限。 只寫要求--x(與閱讀和執行相同)。

檢查用戶php是否在使用:<?php echo exec('whoami'); ?>