Flask应用目录与权限设置?
我在Ubuntu服务器上搭建了一个简单的Flask应用,并把代码放在了以下目录:
主应用代码:/home/user/flaskapp
WSGI配置:www/flaskapp/app.wsgi
我有几个问题:
- 把应用代码放在我的个人目录里,在生产环境中这样可以吗?
- 为了让网站安全运行,我的文件夹权限应该设置成什么样的?
- 我的Ubuntu用户名是'flask_user',我需要给它什么特别的权限或加入什么组吗?
2 个回答
我觉得这个问题需要一个更明确的答案,我对权限和良好的安全实践的了解有限。在其他更懂安全的人验证之前,大家可以对这个答案保持一点怀疑。
我正在使用gunicorn来配置我的flask服务器,跟着Digital Ocean的教程在做。
gunicorn的.service文件定义了用户和组,文件的所有权应该匹配。
/etc/systemd/system/your-project-name.service
[Service]
User=sammy
Group=www-data
从这里我们可以看到文件所需的所有者和组。
chown -R sammy:www-data ~/path-to-flask_files/
使用chown命令时要小心,递归操作要像对待sudo rm -rf那样谨慎。
我还在检查应该分配什么权限。chmod命令对于在八进制(比如chmod 777)和符号(chmod a+rwx)格式之间转换很有用。
这个链接可以帮助你了解chmod命令:https://chmodcommand.com/
@jbkkd提到的策略很好。
Start off with denying your web server user all permissions to the file.
If that doesn't work, give it read permissions, and so on until the site works.
That would be the minimum needed permission.
我明白你在用Apache或Nginx作为你的网页服务器。如果没错的话,我建议把你的应用代码和app.wsgi文件放在你的主目录下。
把文件放在/var/www目录下,通常可以让外界看到这个文件(也就是说,除非你特别设置让你的网页服务器忽略这个文件或者拒绝访问)。而把文件放在/home/user目录下,外界是看不到的,除非你特别设置允许访问。
关于权限,你需要给网页服务器的用户(通常在Apache中是www-data
,除非flask_user
也是你的网页服务器用户)给予WSGI文件的读取权限,可能还需要执行权限。至于其他Python文件的权限,我不太确定,但这很容易测试。可以先从拒绝网页服务器用户对这个文件的所有权限开始。如果这样不行,再给它读取权限,依此类推,直到网站能正常工作。这就是所需的最低权限。