Apenas as contas interativas nas quais você pretende fazer login devem ter direitos sudo ou root. O número de cenários em que um serviço poderia justificadamente ter privilégios sudo ou root é extremamente limitado: backups, antivírus, prevenção contra invasões de host.
Não recomendo usar sudoers para conceder direitos de administrador restritos às contas de serviço. É muito difícil conter o conjunto de ações permitidas. Sudoers funciona bem com colegas razoavelmente sensatos que não querem prejudicar intencionalmente o seu sistema. Um servidor da Web comprometido não é um detentor competente de tais privilégios e você deseja limitar os danos que podem causar.
O risco de segurança de permitir a instalação do root npm é bastante significativo. A instalação do npm não requer direitos de root. Dito isso, permitir que seu aplicativo da web se auto-modifique em resposta a solicitações de usuários é bastante arriscado, a menos que seja feito com muito cuidado.
Se você quiser atualizar seu aplicativo da Web, use um trabalho ou serviço cron separado que faça isso e, em seguida, reconfigure e reinicie o Apache. Esse serviço pode ter os direitos de executar git e npm install e isso deve ser limitado ao npm install em nível de usuário, em vez de ao nível do sistema. É muito provável que privilégios suficientes sejam apenas do sistema de arquivos e possam ser limitados às pastas do aplicativo, de modo que o usuário do atualizador possa alterar as coisas, enquanto o www-data não pode.
As coisas mais vitais para fazer quando o harding nginx está desabilitando os módulos que você não está usando e fazendo com que os server_tokens mostrem informações de versão menos detalhadas. Muito mais endurecimento de nginx é possível dependendo da sensibilidade do sistema ou serviço.
Não permita o login root por SSH. Entre na sua instância como seu usuário não-root e use sudo para executar comandos ou sudo su -l para se tornar root e fazer isso.
Você deve ter usuários e privilégios separados para coisas separadas? Idealmente sim. Quanto mais compartimentalização de componentes você puder ter praticamente dessa maneira, mais seguro ficará seu sistema. Também torna mais fácil adicionar ou remover permissões, porque cada usuário tem uma função definida de maneira muito restrita no sistema com acesso a privilégios mínimos.