Como posso editar / atualizar anfitriões (etc / hosts) arquivo usando qualquer linguagem de programação

StackOverflow https://stackoverflow.com/questions/1642055

  •  10-07-2019
  •  | 
  •  

Pergunta

dinamicamente Quero editar / hosts de atualização de arquivos (etc / hosts) para adicionar domínio.

Para editar arquivo hosts (etc / hosts) requerem administração privilegiada. Usando Linux eu posso fazer isso por este comando

sudo gedit / etc / hosts

Mas eu estou tentando fazer isso a partir usando Linguagem de programação.

Como posso fazer isso?

Foi útil?

Solução

Sua melhor aposta é usar algo como SSH e se conectar ao computador como root (ou sudo em um sistema ()), modificar o arquivo, em seguida, desligue. A vantagem disso é a conveniência de avisar o usuário para a senha.

Para fazer isso sem avisar, o usuário tem que configurar alguns meios para realizá-lo como raiz. Ou seja, setuid'ing um aplicativo auxiliar, a instalação de uma chave sem senha, modificando uma árvore LDAP, ou várias outras maneiras. Isso é um pouco de 'nojenta' para a falta de um termo melhor.

Não há nenhuma maneira de fazer este trabalho para o usuário que normalmente não têm capacidades de escalonamento de privilégios.

Outras dicas

O programa terá de ser executado com privilégios apropriados. Uma das técnicas clássicas é fazer com que o arquivo de propriedade de raiz e definir o bit setuid. Quando o programa é executado, ele vai se tornar raiz e será capaz de modificar / etc / hosts.

Dito isto, código setuid é arriscado. Um bug no código pode causar o programa para fazer algo tão ruim que seu sistema se torna inutilizável. Alguns erros podem ser usados ??por usuários maliciosos para executar programas arbitrários como root e assumir o seu sistema.

Você ainda deve ter as permissões necessárias para editar o arquivo.

Para alterar o arquivo, abra o arquivo em leitura / gravação / append mode (ie. Modo "a" usando fopen()) e escrever o novo texto ao final do arquivo.

Eu estou supondo que você está no prompt de comando, onde você pode emitir esse comando sudo ..

Desde que você tenha os direitos de acesso, como afirma o fizer, então qualquer linguagem de programação que pode adicionar uma linha de texto para um ficheiro de texto existente (ou criá-la, quando não, o que é improvável), vai funcionar. Você pode habe para dar aquele programm alguns direitos adicionais, mas isso é um tópico diferente!

Resumo: que língua você sabe? => Uso isso!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top