3 votes

script n'a pas la permission d'écrire dans /etc/network/interfaces

Bonjour Je dois écrire un script avec le nom setip qui peut être exécuté comme suit :

./setip <ip> <mask>

et qui doit définir l'adresse IP à <ip> et le masque à <mask> sur le lo1 l'interface. Voici le contenu de mon script, mais lorsque j'essaie de l'exécuter, j'obtiens l'erreur suivante "permission denied". Qu'est-ce qui ne va pas avec mon script et comment dois-je procéder ?

#! /bin/bash
sudo echo 
"
auto lo:1
iface lo:1 inet static
address $1
netmask $2" >/etc/network/interfaces

3voto

T'Saavik Points 13
sudo echo "  
auto lo:1  
iface lo:1 inet static  
address $1  
netmask $2" | sudo tee /etc/network/interfaces

La dernière ligne de votre script netmask $2" >/etc/network/interfaces tente de modifier le fichier d'interfaces sur lequel seul root peut écrire. (Ou du moins, il devrait appartenir à root).
Cependant, sudo echo "" > ne fonctionne probablement pas comme vous le souhaitez.

Ce qu'il fait, c'est qu'il exécute echo "" avec les permissions de la racine, mais le fichier > ne s'exécute pas avec ces autorisations.

Vous pouvez reformuler votre commande de la manière suivante de cet exemple. Dans ce cas, la commande qui produit un fichier est exécutée en tant que root, alors que les autres commandes n'ont pas besoin de l'être. Je vous en ai montré un exemple plus haut.

1voto

Joe the Person Points 5090

Je ne pense pas que sudo fait ce que vous pensez qu'il fait. Ce qui se passe en réalité, c'est que sudo n'affecte que le echo il n'affichera pas ce dont vous avez besoin dans le fichier /etc/network/interfaces/ car sudo ne couvre pas réellement le > .

Que pouvez-vous faire ? Deux possibilités s'offrent à vous :

  1. reformatez votre commande pour qu'elle fonctionne comme celle fournie dans le lien de robobenklein dans sa réponse.
  2. Exécutez l'ensemble du script avec sudo ce qui aurait pour effet d'exécuter toute la commande en tant que superutilisateur et la redirection pourrait fonctionner.

0voto

ShadowMitia Points 875

Vous devez exécuter chmod +x setip pour permettre à votre script d'être exécutable. Pour plus d'informations sur les permissions de fichiers, voir aquí .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X