我刚刚开始部署我的第一个实时Django网站,我想知道如何以最佳安全方式设置Ubuntu服务器文件权限,同时仍然授予所需的权限。 / p>
首先是目录问题:我目前正在~/www/mysite.com/{Django apps}
存储该网站,但经常看到有人使用/var/www/...
或/srv/www
;有没有理由选择其中一个目录比另一个好?或者为什么将网站保留在我的家庭目录中是一个坏主意?
其次,dir和文件本身的权限。我使用带有mod_wsgi
的apache提供服务,并拥有文件WSGIScriptAlias / ~/www/mysite.com/mainapp/wsgi.py
文件。 Apache以www-data
用户身份运行。为了获得最佳安全性,谁应该拥有wsgi.py
文件,以及我应该授予哪些权限及其包含的目录?
同样,对于www
,www/mysite.com
和www/mysite.com/someapp
目录?目录和文件需要的最小权限是什么?
目前我正在使用755
和644
用于dir和文件,它们运行良好,允许网站运行,但我想知道它是否是最优/过于自由。我的Ubuntu用户是大多数文件的所有者,www-data
拥有sqlite
dbs。
答案 0 :(得分:1)
关于从主目录提供应用程序,这主要是基于偏好的。但是,可以根据情况做出部署决定。例如,如果您有多个用户使用此服务器来托管其网站,那么您可能会从其主目录中提供文件。从系统管理员的角度来看,正在部署应用程序;您可能希望它们都可以从/ var / www中访问...因此它们更容易找到。
您为服务文件设置的权限似乎很好,但是它们可能需要作为不同的用户运行...取决于使用此计算机的人数。例如,假设您在服务器上运行了另一个应用程序,并且这两个应用程序都以www-data运行。如果www-data用户具有Django配置文件的读权限,则其他用户可以部署可以读取数据库凭据的脚本。