应该为WSGIDaemonProcess使用哪个用户帐户?

我有一些使用Apache2和mod_wsgi部署的Django站点。 在configurationWSGIDaemonProcess指令时,大多数教程(包括官方文档)build议将WSGI进程作为代码所在的主目录中的用户来运行。 例如:

WSGIScriptAlias / /home/joe/sites/example.com/mod_wsgi-handler.wsgi WSGIDaemonProcess example.com user=joe group=joe processes=2 threads=25 

但是,我想知道是否将wsgi守护进程作为开发代码的相同用户(具有相应的权限)运行是非常明智的。 我应该build立一个服务帐户,其唯一的特权是对代码的只读访问,以便有更好的安全性? 还是我的担忧被夸大?

尽可能使用未授权的帐户运行您的服务是一个很好的惯例。 对于只需要根资源的进程(端口<1024,访问某些文件),进程应该获取它们,然后立即删除权限。

一些其他的技巧..从你的短语“运行…过程作为同一个用户…开发代码”这听起来有点像开发人员在生产主机上编写代码。 你使用某种forms的源代码更改控制系统(例如git,svn)吗? 开发人员应该在只有开发的机器上编码,并提交到一个共享的存储库,从中可以释放稳定的版本。 集成testing后从代码库中部署代码,并理想地将其安装(DEB,RPM,EGG等)。 这将减less错误投入生产,使版本可重复,避免代码丢失,如果主机死亡,等等。

你最好做chown www-user:www-data -R你的代码的dirname(或apache:apache)。 您电脑上最重要的数据就是您的用户数据,因此将服务从用户处移开更好。

之所以说用户应该是主目录的原因是因为在许多系统上,主目录具有“drwx ——”的权限,这意味着只有用户可以在那里读取内容。 所以,如果你打算把东西放在用户的主目录下,你基本上没有select。

你也会发现它build议最好不要把它放在你的主目录下,而应该放在其他web服务器的东西,而不是放在任何虚拟服务器或主服务器的DocumentRoot下面。 通过这样做,目录限制不会适用,Apache用户可以阅读它。

总的来说,最好的想法,特别是如果这个盒子也是你自己的开发机器的话,就是将代码单独部署到这个单独的区域,使得代码文件不可写,然后把它们全部作为一个单独的非专用用户来运行。