Não é possível editar o arquivo '/ etc / network / interfaces' através do script bash no Ubuntu [duplicado]

1

Eu preciso editar o / etc / network / interfaces através do script bash, estou fazendo algo como abaixo ...

sudo echo something > /etc/network/interfaces

Quando esta linha é executada, recebo o erro mencionado abaixo: bash: /etc/network/interfaces: Permission denied

Mas se eu editar o mesmo arquivo com algum editor, ele funcionará perfeitamente ... ou seja,

sudo nano /etc/network/interfaces

acima, deixe-me editar este arquivo.

    
por Saqlain 29.12.2012 / 19:14

1 resposta

4

Esta pergunta já foi respondida em algum lugar deste site, embora eu não tenha conseguido encontrá-lo.

Mas basicamente tudo se resume a isso:

sudo nano /etc/network/interfaces inicia nano / etc / network / interfaces como uid 0. Como nano é executado em uid 0 e tem permissão para gravar em / etc / network / interfaces.

sudo echo something > /etc/network/interfaces inicia echo algo como uid 0. Essa parte é bem-sucedida. A saída é redirecionada com o > para / etc / network / interfaces '. No entanto, esse redirecionamento é feito com sua própria conta. E esse não tem permissão para escrever para esse local.


Tente isso: sudo bash -c "echo something > /etc/network/interfaces"

Isso deve executar o bash como uid 0, e deixar o bash executar o comando inteiro como uid 0.

Ou simplesmente su - para raiz. Rodar o tempo todo como root não é recomendado, entretanto há momentos em que você simplesmente quer ter direitos suficientes sem digitar um comando sudo na frente de cada linha. Apenas não use root como usuário principal. Usá-lo para instalar e configurar um sistema é bom.

    
por 29.12.2012 / 19:44