Os desenvolvedores não devem ter raiz na produção; todos, exceto os desenvolvedores, concordam com isso. Mas os desenvolvedores podem ter seu bolo e comê-lo também. Estou um pouco surpreso que ninguém tenha mencionado explicitamente isso:
Um dos meus clientes de muito tempo para pequenas empresas possui um site com uma instalação Drupal, vários sites WordPress, um fórum SMF e alguns outros aplicativos pequenos e aleatórios da Web. Eu sou o administrador do sistema do contrato (e, por razões históricas, também atualizo / hackeado o WordPress e o SMF quando necessário) e meu cliente tem seu próprio contrato com os desenvolvedores do Drupal. O ambiente é de várias máquinas virtuais da VMware em um provedor de nuvem pública.
Os desenvolvedores realmente querem ter acesso root e meio que precisam dele. É responsabilidade deles escrever as regras de reescrita do nginx para fazer com que todo o material Drupal personalizado funcione, por exemplo. Mas de jeito nenhum eu estou dando a eles acesso root no servidor de produção, e meu cliente concorda comigo nisso.
Por isso, comprometemo-nos: eles obtêm acesso root no servidor da Web de teste (que geralmente é idêntico à produção, exceto pelo endereço IP e está na mesma nuvem). Que, como a produção, possui o etckeeper para que eu possa ver as alterações necessárias e os pacotes instalados. Posso então colocar as alterações em produção ou dizer a elas o que há de errado com o que elas querem fazer. E se eles realmente estragaram tudo (ainda não o fizeram, graças a Deus), posso reverter facilmente as alterações.
Eles não têm acesso ao servidor de banco de dados de produção; eles nem têm logins de usuário. Somente eu e meu cliente.
(O aplicativo da Web em si, eles implantam diretamente com o git e, se o quebram, podem corrigi-lo e explicar ao meu cliente por que eles devem continuar sendo seus desenvolvedores. rir deles ou facepalm.)