我在我的VPS上部署了许多Web应用程序和服务,包括Jenkins,Node.js应用程序,P2P文件同步服务等,但是我遇到了一些问题:
我使用NginX进行反向代理,其工作人员以用户www-data
身份运行。 我听说这个用户应该被授予尽可能less的权限。 它没有shell,其主目录是/var/www
。 所以我创build了另一个用户www-admin
进行web应用pipe理和部署。 那么目录/var/www
权限设置是什么? 对于www-data
应该是可读的,对于www-admin
可写的。
我应该使用用户www-data
来运行所有的Web服务吗? 如果是这样, www-data
应该被授予目录/var/www
(这是它的主目录)的写权限,因为我使用PM2进行进程pipe理,它将运行时数据保存在$HOME/.pm2
。
允许www-data
写入目录/var/www
是否危险? 我听说www-data
不应该在/var/www
上被授予写权限,因为恶意的web应用程序可能会威胁到其他web应用程序。
我使用Jenkins作为CI,它以用户jenkins
运行。 这使事情更复杂。 例如,当使用Jenkins部署Node.js应用程序时,新的PM2实例将以用户jenkins
开始运行。
总之,如何设置用户,用户组,目录权限和进程运行用户,以安全的方式妥善pipe理我的Web服务?