Pergunta

Eu quero construir um front-end baseado na web para gerenciar / administrar minha caixa de Linux. Por exemplo. Eu quero ser capaz de adicionar usuários, gerenciar o sistema de arquivos e todos esses tipos de coisas. Pense nisso como um clone cPanel mas mais para administrador do sistema antes que web de administração.

Eu estava pensando sobre a criação de um serviço que é executado em minha caixa e que executa todas as tarefas níveis do sistema. Dessa forma eu posso ter uma separação clara entre a minha base front-end web e a lógica real. As páginas de servidor pode do que fazer chamadas para minhas tarefas do servidor ou fila especializados dessa forma. No entanto, eu não tenho certeza se isso seria a melhor maneira de fazer isto.

Eu acho que outra questão importante seria, como eu iria lidar com a segurança ao construir algo assim?

PS:. Isto apenas como um projeto de estimação e experiência de aprendizagem para que eu não estou interessado em soluções existentes que fazer uma coisa semelhante

Foi útil?

Solução

Tenha o serviço especializado daemon rodando como um usuário diferente - vamos chamá-lo 'managerd'. Configure o seu arquivo / etc / sudoers para que 'managerd' pode executar os vários comandos que você quer que ele seja capaz de executar, como root, sem senha.

Ter o web server soltar arquivos "gatilho" que contêm os comandos para executar em um diretório que é o modo de '770' com um grupo que apenas o usuário do servidor web e 'managerd' são membros. Certifique-se de que 'managerd' verifica que os arquivos têm a propriedade correcta antes de executar o comando.

Certifique-se de que o lado da interface web é bloqueado - executá-lo através de HTTPS somente, exigir autenticação, e se possível, colocar em ACLs específicas do IP, de modo que você só pode acessá-lo a partir de locais conhecidos, com antecedência.

Outras dicas

A sua solução parece ser uma solução muito sensível à questão 'root'.

Os pares de sugestões:

  1. Encadernação o 'serviço especializado' para localhost assim ajudaria a garantia de que os pedidos não podem ser feitas externamente.
  2. Verificar funções solicitação de chamada que executam as ações e não dão diretamente o serviço de acesso irrestrito completo. Então chamar uma função "addToGroup (usuário, grupo)" em vez de um genérico "performAction (comando)".
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top