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
?
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
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
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!
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"
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
).
Essayez
sudo bash -c 'cat add_file >> /etc/file'
Ou
cat add_file | sudo tee -a /etc/file > /dev/null