2013-08-01 3 views
1

Je travaille sur Ubuntu et écrit un code en python. Je veux ajouter une ligne dans un fichier qui est placé dans le répertoire racine:répertoire racine IOError: [Errno 13] Autorisation refusée:

ins = open("/usr/local/etc/conf.d/test.txt", "r") 
array = [] 
for line in ins: 
    array.append(line) 
array.append('add this new line') 
f = open("/usr/local/etc/gnuradio/test.txt",'w') 
for line in array: 
    f.write(line) 

Je reçois cette erreur:

Traceback (most recent call last): 
    File "overwrite.py", line 6, in <module> 
    f = open("/usr/local/etc/gnuradio/test.txt",'w') 
IOError: [Errno 13] Permission denied: '/usr/local/etc/gnuradio/test.txt' 

Je sais que nous n'avons pas la permission de changer quoi que ce soit dans le répertoire racine sans en utilisant sudo. Mais y a-t-il un moyen de mettre à jour ce fichier depuis mon module python?

+1

Ce n'est pas un problème Python, ou même un problème de programmation; C'est une question fondamentale sur l'utilisation de systèmes de type Unix. – abarnert

+0

oui vous avez raison mais je sais que python a une solution pour exécuter la commande sudo comme pexpect, donc j'ai pensé qu'il pourrait avoir une solution pour un tel problème – user2460869

+0

'pexpect' ne sait rien à propos de' sudo'. Bien sûr, vous pouvez écrire du code qui l'utilise pour piloter 'sudo' pour exécuter une autre instance de Python sur un script qui fait le travail ... mais pourquoi? Si vous voulez vraiment laisser votre mot de passe en texte clair, il existe des façons plus amusantes de le faire. – abarnert

Répondre

2

Vous avez déjà répondu à votre question: Vous n'avez pas la permission de le faire.

Peu importe si vous utilisez sh, bash, python, C, erlang ou une attaque de tuyau en caoutchouc.

Exécutez votre script avec un utilisateur possédant les autorisations nécessaires ou accordez-vous l'accès au fichier.

Questions connexes