@H_502_1@我在网上看到了很多不同的建议,关于从哪里提供Web应用程序,用什么用户来运行它等等.
@H_502_1@例如,我见过它来自:/ var / www / site,/ srv / www / site,/ home / $USER / site.
@H_502_1@我已经看到用户是www-data,$USER(即我的用户帐户),或专门为此目的创建的自定义用户(例如用户uwsgi).
@H_502_1@在安全性方面,我可以选择的最佳方案是什么?
@H_502_1@作为参考,我正在尝试使用Nginx和uwsgi部署Django站点.
@H_502_1@现在,uwsgi在emperor模式下以root身份运行,uid / gid设置为www-data,因此vassals以与Nginx worker相同的权限生成.我在/家里服务,但想着搬家.
最佳答案
对于位置,选择最适合您的位置.以下是一些需要帮助的注意事项:
@H_502_1@> / var下的位置适用于change in size或通常为“变量”的文件.
> / srv通常表示与计算机上运行的某些服务相关的文件.
> / home通常应保留给交互式用户.但是,您可以将系统用户的主目录设置为任何内容. @H_502_1@为了安全起见,您应该尽可能地进行细分.应用程序不应该与Web服务器作为同一用户运行,因此不能滥用它来读取与服务器本身相关的敏感文件(.htaccess或其他).应用程序的二进制文件(或Django,python源)应该由root拥有,而无需对应用程序用户的写访问权. @H_502_1@这是关于如何设置它的2美分: @H_502_1@> Django应用程序:/usr/lib / appname /或/usr/lib / python / site-packages / appname /如果已安装.由root拥有,chmod 644.
> App的文件(例如sqlite db文件,FastCGI的Unix套接字,上传的文件存储等):/ var / lib / appname /.由app-user拥有,chmod 600.
> app-user的shell是/ bin / nologin,home是/ var / lib / appname /.用户没有配置密码.
> / srv通常表示与计算机上运行的某些服务相关的文件.
> / home通常应保留给交互式用户.但是,您可以将系统用户的主目录设置为任何内容. @H_502_1@为了安全起见,您应该尽可能地进行细分.应用程序不应该与Web服务器作为同一用户运行,因此不能滥用它来读取与服务器本身相关的敏感文件(.htaccess或其他).应用程序的二进制文件(或Django,python源)应该由root拥有,而无需对应用程序用户的写访问权. @H_502_1@这是关于如何设置它的2美分: @H_502_1@> Django应用程序:/usr/lib / appname /或/usr/lib / python / site-packages / appname /如果已安装.由root拥有,chmod 644.
> App的文件(例如sqlite db文件,FastCGI的Unix套接字,上传的文件存储等):/ var / lib / appname /.由app-user拥有,chmod 600.
> app-user的shell是/ bin / nologin,home是/ var / lib / appname /.用户没有配置密码.