rc.local vs upstart vs systemd [fechado]

2

Estamos desenvolvendo um produto que depende de um script de inicialização. Nosso protótipo utiliza o rc.local para esse propósito, mas notamos que o upstart e o systemd são abordagens mais modernas. No entanto, não descobrimos muitas evidências concretas de por que preferir upstart ou systemd em rc.local.

Por que preferir upstart ou systemd? Estamos particularmente preocupados com a segurança em termos de decidir sobre um método.

    
por lasalla 06.06.2017 / 17:14

2 respostas

1

Para começar, seu produto não deve usar rc.local em todos os . rc.local é para o administrador do sistema mexer com; eles podem fazer o que quiserem (contanto que saia com sucesso). Isso torna a edição complicada, na melhor das hipóteses.

Agora, qual você deve usar? A resposta é simples.

Todos eles.

Um sistema usa um único sistema init a qualquer momento. Se você fornecer configuração para todos eles, o que for mais compatível com o que estiver em execução será usado automaticamente.

Uma visão geral rápida

init do System V

  • Tanto o Upstart quanto o systemd suportam estes, para que você possa escrever scripts de init sysv e fazer com que funcionem em qualquer lugar.
  • Esse sistema init faz apenas uma coisa: chame seu script com um parâmetro apropriado. Todo o resto - rastreando os processos iniciados, alterando usuários, definindo o ambiente, etc., deve ser feito no seu script. Isso torna o método de script init frágil se você não for bom em scripts (scripts geralmente são scripts de shell, mas suponho que possa ser outra coisa). Algumas funções padrão são fornecidas por conveniência, locais que variam de distro a distro.
  • O pedido de scripts de inicialização é feito com base em nomes de arquivos e presença nos vários diretórios /etc/rc* e nos cabeçalhos de comentários especiais .

Upstart (≤ 14,04)

  • Baseado em eventos. Torna possível que o seu trabalho espere que um determinado evento aconteça (sistemas de arquivos montados, rede) antes de começar.
  • Infelizmente, a implementação do Upstart dificulta o uso de configurações de inicialização mais complexas. Além disso, é difícil inserir seu trabalho na cadeia de dependência de outro trabalho após o fato.

systemd (≥ 16.04)

  • baseado em dependência. Unidades são iniciadas quando necessário. Consulte Systemd para usuários do Upstart para obter mais informações. O init padrão atual nos sistemas baseados em Debian, Ubuntu e RHEL.
  • A abordagem baseada em cgroups do Systemd para rastrear processos é a mais confiável. Isso dificulta que os processos escapem de um determinado contexto (de segurança) ou limitação de recursos.
  • Os administradores podem facilmente substituir a configuração do init sem pisar nos dedos do mantenedor do pacote.

Tanto o Upstart quanto o systemd têm claras vantagens sobre o sysv init. Ambos são mais declarativos do que imperativos, com suporte embutido para várias tarefas envolvidas no gerenciamento de serviços. Você deve usar o sistema de inicialização mais moderno disponível em qualquer versão suportada.

    
por muru 07.06.2017 / 03:08
0

O Systemd é um avanço no Upstart, então perguntar qual é melhor ou seguro na minha opinião, não faz justiça. Melhor perguntar a si mesmo " eu quero fazer as coisas da maneira antiga " se assim for Upstart, senão Systemd.

Verifique as diferenças aqui , pessoalmente, eu gosto de seguir em frente como essa é a intenção do Systemd. Ambos têm excelente segurança e, desde que você veio do Windows, leia a história do Linux Security , então acredito que você decidirá melhor.

Mais uma vez, rc.local é a velha escola bem-vinda ao Linux, acreditamos no futuro, então faça as coisas no agora, e não no passado.

    
por George Udosen 06.06.2017 / 17:52