Script sem permissão para escrever

2

Olá eu tenho que escrever um script com o nome setip que pode ser executado assim: ./setip ip mask, e que deve definir o ip ip e máscara de máscara na interface lo1.este é o conteúdo do meu script , mas diz permissão negada quando eu executar o script.how posso modificá-lo?

#! /bin/bash
sudo echo 
"
auto lo:1
iface lo:1 inet static
address 
netmask " >/etc/network/interfaces
    
por andrei985 13.12.2014 / 22:39

3 respostas

2

sudo echo "  
auto lo:1  
iface lo:1 inet static  
address   
netmask " | sudo tee /etc/network/interfaces

A última linha do seu script netmask " >/etc/network/interfaces tenta editar o arquivo de interfaces que somente o root pode gravar. (Ou pelo menos deve ser propriedade de raiz)
No entanto, sudo echo "" > provavelmente não funciona como você deseja.

O que ele está fazendo é executar echo "" com permissões de root, mas o operador > não está executando com essas permissões.

Você pode reformatar o seu comando nas linhas deste exemplo. Neste caso, o comando que é enviado para o arquivo está sendo executado como root, enquanto os outros comandos não precisam ser. Eu mostrei um exemplo disso acima.

    
por Robobenklein 13.12.2014 / 22:55
1

Eu não acho que sudo esteja fazendo o que você acha que está fazendo. O que realmente está acontecendo é que sudo está afetando apenas o comando echo - na verdade, ele não produzirá o que você precisa para o arquivo /etc/network/interfaces/ porque sudo realmente não cobre o > .

Então, o que você pode fazer? Você tem duas opções:

  1. reformate seu comando para funcionar como o fornecido no link de robobenklein em sua resposta.
  2. Execute o script inteiro com sudo , o que efetivamente executaria o comando inteiro como superusuário e o redirecionamento poderia funcionar.
por Thomas Ward 13.12.2014 / 23:09
0

Você precisa executar chmod +x setip para permitir que seu script seja executável. Mais informações sobre permissões de arquivos podem ser encontradas aqui .

    
por ShadowMitia 13.12.2014 / 22:49