托pipenetworking应用程序的服务器的用户和文件权限设置的最佳做法是什么?

我在我的VPS上部署了许多Web应用程序和服务,包括Jenkins,Node.js应用程序,P2P文件同步服务等,但是我遇到了一些问题:

  1. 我使用NginX进行反向代理,其工作人员以用户www-data身份运行。 我听说这个用户应该被授予尽可能less的权限。 它没有shell,其主目录是/var/www 。 所以我创build了另一个用户www-admin进行web应用pipe理和部署。 那么目录/var/www权限设置是什么? 对于www-data应该是可读的,对于www-admin可写的。

  2. 我应该使用用户www-data来运行所有的Web服务吗? 如果是这样, www-data应该被授予目录/var/www (这是它的主目录)的写权限,因为我使用PM2进行进程pipe理,它将运行时数据保存在$HOME/.pm2

  3. 允许www-data写入目录/var/www是否危险? 我听说www-data不应该在/var/www上被授予写权限,因为恶意的web应用程序可能会威胁到其他web应用程序。

  4. 我使用Jenkins作为CI,它以用户jenkins运行。 这使事情更复杂。 例如,当使用Jenkins部署Node.js应用程序时,新的PM2实例将以用户jenkins开始运行。

总之,如何设置用户,用户组,目录权限和进程运行用户,以安全的方式妥善pipe理我的Web服务?