我用下面的目錄中的php.ini上傳照片上的Apache - 紅帽/ AWSPHP照片上傳 - upload_tmp_dir權限
drwxrwxr-x 2 user2 user2 4096 Mar 4 08:10 datingPhotoUploads
Apache是運行作爲用戶 '阿帕奇'。
我該如何給這個文件夾權限,以便用戶'apache'可以寫入它,但否則它儘可能安全?
三江源
我用下面的目錄中的php.ini上傳照片上的Apache - 紅帽/ AWSPHP照片上傳 - upload_tmp_dir權限
drwxrwxr-x 2 user2 user2 4096 Mar 4 08:10 datingPhotoUploads
Apache是運行作爲用戶 '阿帕奇'。
我該如何給這個文件夾權限,以便用戶'apache'可以寫入它,但否則它儘可能安全?
三江源
通常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的主要問題是:
/tmp
而是/some/where/datingPhotoUpload
,則apache必須能夠讀取/some
和/some/where
的目錄內容。因此,對於所有上述路徑,必須爲其他人(或者如果apache是組所有者)設置x右部分。/tmp
的主要問題,該目錄可用於主機上運行的所有PHP應用程序。根據每個應用程序更改upload_tmp_dir可限制對其他應用程序的訪問,尤其是如果您對所有php應用程序設置了open_basedir限制,並且只有當前應用程序允許open_basedir
設置中的/some/where/datingPhotoUpload
。上傳圖片(創建文件)文件夾中應該有-wx
權限。 只寫要求--x
(與閱讀和執行相同)。
檢查用戶php是否在使用:<?php echo exec('whoami'); ?>
。
我想你已經做到了,但不要忘記找出* PHP *是否運行爲「apache」。 – 2013-03-04 08:16:54
是的,它運行爲Apache - 例如:ps aux | grep apache - 這個列表apache作爲用戶 – Adam 2013-03-04 08:19:26