Quais são os benefícios de executar um servidor de aplicativos no espaço do usuário, como o Unicorn, ao contrário do sudo?

1

Eu tenho usado o Phusion Passenger + Rails / Sinatra para muitos projetos. O passageiro é executado no processo principal do Nginx ou do Apache.

Mas estou interessado no Unicorn, em parte porque ele é executado no espaço do usuário. Você acabou de configurar o Nginx para proxy_pass solicitações para um soquete unix que está conectado a processos Unicorn que você acesse sob uma conta de usuário normal.

Há algo a ser dito sobre as vantagens e desvantagens dessas duas abordagens alternativas para executar um aplicativo da web? Quero dizer, em termos de facilidade de administração, estabilidade, simplicidade, etc.

    
por dan 03.07.2012 / 16:10

3 respostas

2

Bem, o Phusion / Nginx / Unicorn é executado no espaço do usuário e no espaço do kernel, eu acho que você queria dizer rodando como usuário não privilegiado versus privilegiado / usuário root . Há algumas vantagens nisso:

  1. Mais segurança, se seu aplicativo fizer algo estúpido, não poderá acessar partes críticas do servidor
  2. Portabilidade, o aplicativo é compartimentalizado em um único espaço.
  3. Se você usa rails, provavelmente usa o capistrano para a implantação, o que significa que você pode iniciar o processo de unicórnio diretamente do processo de implantação sem precisar de um sudo

Além disso, sugiro que você use a opção de soquete do Unicorn com Nginx, que simplifica um pouco o processo de implantação, e leia o documento sobre implantar sem precisar reiniciar totalmente o servidor de aplicativos

    
por 03.07.2012 / 17:08
2

Eu digo root aqui quando você diz que sudo-sudo eleva um usuário a privilégios de root, mas essencialmente é o mesmo.

Bem, as portas de baixo número estão disponíveis apenas para usuários root, portanto, em muitos casos, a execução de um aplicativo como um usuário comum pode precisar de algumas alterações de firewall.

Com o userspace, você tem a opção de melhor compartimentação (no mínimo por usuários de aplicativo / pilha, para que você possa configurar tudo em um só lugar e movê-lo entre os sistemas facilmente) ou até mesmo chroot. Em geral, evitar executar as coisas como root é bom (muitos aplicativos são removidos para 'nobody' ao começar a evitar a execução como root), pois se um processo em execução como root for comprometido, você poderá fazer com que um invasor obtenha privilégios de root.

A execução como um usuário comum geralmente é melhor para a segurança, mas o IMO realmente depende do seu aplicativo.

    
por 03.07.2012 / 16:16
1

Como o coredump disse, o que você quis dizer é rodar como um usuário privilegiado em comparação com um usuário comum. Mas o Phusion Passenger definitivamente não é executado como um usuário privilegiado .

  • Todos os processos de aplicativos gerados pelo Phusion Passenger são executados como usuários regulares. Mais especificamente, como o usuário que possui config / environment.rb ou config.ru, não como o usuário Apache / Nginx . Isso faz parte do recurso "User Switching", que o Phusion Passenger tem desde a versão 1.0.
  • Com o Unicorn, você precisa iniciar manualmente os processos como o usuário desejado. O Passageiro de Phusion automaticamente cuida disso para você.
  • O Phusion Passenger se recusa absolutamente a executar qualquer processo de aplicativo como root. Você não pode substituir esse comportamento. O Phusion Passenger leva a segurança muito a sério, por isso, adicionou esta precaução de segurança.
  • O Apache / Nginx não é executado como usuário privilegiado. Na maioria dos sistemas, eles são configurados para serem executados na conta www-data .
  • Existem alguns processos auxiliares do Phusion Passenger que são executados como root para que possam gerar processos como outros usuários, mas você pode desabilitar isso desativando o usuário, em cujo caso todos processos do Phusion Passenger ( incluindo processos de aplicativos) execute uma conta de usuário que você especificar.

O Phusion Passenger é mais simples de administrar e instalar do que o Unicorn porque ele automatiza mais coisas para você. O Phusion Passenger é muito estável por causa de sua arquitetura de watchdog. Ele supervisiona seus processos auxiliares internos e os reinicia se algum deles falhar. Phusion Passenger é usado por mais de 150.000 websites incluindo

    
por 24.10.2012 / 11:21