2013-05-06 129 views
4

我正在尋找一組基於文件權限的基線,以儘可能保持django安裝的安全。安全django文件權限

我似乎無法找到任何關於Django的網站或谷歌的任何明顯的參考。

任何鏈接或線索?

我使用Apache + mod_wsgi + django。我沒有上傳目錄的權限。這是一個非常基本的設置。

我目前運行我的代碼成功這樣的:

/var/www/djangodir 
        /django 
        /3rdpartyapp 
        /myapp 
         /serverfiles/my.wsgi 

all directorys: 755 owned by root.root 
all files:  644 owned by root.root 

exceptions to all files 
----------------------- 
settings.py file: 400 owned by apache.apache 
my.wsgi:   400 owned by apache.apache 

我不喜歡644上的所有文件,並想擰緊了,但似乎無法與400或500 WSGI脫身如果我這樣做,應用程序無法從django導入任何內容。

幫助!

回答

6

使用的mod_wsgi daemon模式,並在它你的Django應用程序運行。將該守護進程組的用戶/組設置爲與Apache用戶不同的特殊專用Django應用程序用戶。讓您使用的WSGI腳本文件位於Django項目區域之外。

包含WSGI腳本文件,然後可以700,如果由Apache用戶所擁有的目錄。其中的WSGI腳本文件只需要400個,甚至不需要由Apache用戶擁有,但可以由root用戶或專用的Django應用程序用戶擁有。所有Apache用戶將需要的是能夠查看目錄中的WSGI腳本文件,它不需要打開WSGI腳本文件的能力。然後

所有項目的代碼和虛擬環境,可以在與所有的目錄是0700專用Django的用戶所擁有的目錄結構和,你認爲合適或所需的文件可讀/寫的。只有專用的Django應用程序用戶需要訪問,因爲所有訪問都將來自以該用戶身份運行的守護程序進程組。

通過做這種方式,你有限制,從而使Apache用戶甚至不能看到你的項目代碼。這樣,如果在相同的Apache上託管其他內容(如PHP),則不存在中斷PHP代碼訪問文件的風險。

5

感謝您的回覆!我不知道你是如何找到時間來回答我在這些年看到過你指紋的所有問題的,但是你正在爲整個python/django/wsgi社區做一個巨大的服務。我喜歡你的博客文章:http://blog.dscpl.com.au 2012年12月5日關於這些論壇上的好建議和善意的稀釋。這絕對是一個挑戰Google所有廢話的挑戰。

無論如何,任何人看這個線程,這個工程。

root.root:    755 /var/saas     <- topdir 
apache.apache:   755 /var/saas/wsgi    <- apache folder 
vsn.vsn:    400 /var/saas/wsgi/vsn.wsgi  <- wsgi file 
vsn.vsn:    700 /var/saas/vsn    <- django code 
root.root:    700 /var/saas/scripts   <- operations scripts 
root.root:    700 /var/saas/config   <- temp config folder 
apache.apache   444 /var/www/html/static  <- destination of django's: python ./manage.py collectstatic 

我不能讓這與Apache許可700的工作,但我很高興與755相同的Apache偉大的未解之謎我猜的。