Autorisation refusée lorsque vous essayez d'ajouter un fichier à la racine appartient fichier avec sudo [fermé]

C'est la commande shell qui se traduit par "Permission denied" lorsque j'essaie d'ajouter les données dans un fichier vers un autre fichier avec sudo:

sudo cat add_file >> /etc/file

Le fichier /etc/file est la propriété de root (c'est à dire moi) et ses autorisations sont rw-r--r--. Devrais-je devenir root pour un moment pour le faire fonctionner ou est-il une solution pour sudo?

39
demandé sur Desmond Hume 2012-12-08 19:22:52

6 réponses

Exécuter bash comme sudo:

$ sudo bash -c "cat add_file >> /etc/file"

$ whoami;sudo bash -c "whoami";whoami
iiSeymour
root
iiSeymour
59
répondu Chris Seymour 2014-07-13 11:47:48

Essayez de le faire à la place:

sudo tee -a /etc/file < add_file

C'est plus léger que de lancer bash ou sh -c command

24
répondu Gilles Quenot 2012-12-08 15:38:47

Une drôle de possibilité est d'utiliser ed (l'éditeur standard):

sudo ed -s /etc/file <<< $'r add_file\nwq'

Je sais que je ne me ferai pas voter pour cette merveilleuse réponse, mais je voulais l'inclure ici de toute façon (parce que c'est drôle). Fait!

9
répondu gniourf_gniourf 2012-12-08 15:42:58

Vous essayez d'écrire le résultat de la commande sudo cat add_file dans le fichier /etc/fichier. Et apparemment, vous n'avez pas ce droit.

man sudo donne cet exemple:

   To make a usage listing of the directories in the /home partition.  Note
   that this runs the commands in a sub-shell to make the cd and file
   redirection work.

    $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

Donc, vous devriez essayer:

sudo sh -c "cat add_file >> /etc/file"

4
répondu Maxime Chéramy 2012-12-08 15:32:57

Approche similaire à @ gniourf_gniourf réponse, mais en utilisant ex:

sudo ex +"r in.txt" -cwq out.txt

, Qui est équivalent à vi/vim Ex-mode (-e).

Cet exemple d'édition sur place est une approche simple, sûre et pratique, car il n'utilise aucun tuyau de shell, FIFOs ou shell dans les solutions de contournement du shell.

Pour augmenter les performances à des fins de script, envisagez d'utiliser le mode silence (-s).

1
répondu kenorb 2017-05-23 11:47:01

Essayez

sudo bash -c 'cat add_file >> /etc/file'

Ou

cat add_file | sudo tee -a /etc/file > /dev/null
-2
répondu montells 2014-02-27 21:19:11