Il s'agit de la commande Shell qui se traduit par "Autorisation refusée" lorsque j'essaie d'ajouter les données d'un fichier à un autre fichier avec Sudo:
Sudo cat add_file >> /etc/file
Le fichier à /etc/file
appartient à root
(c'est-à-dire moi) et ses autorisations sont rw-r--r--
. Dois-je devenir root
pendant un moment pour le faire fonctionner ou existe-t-il une solution pour Sudo
?
Exécutez bash
en tant que Sudo
:
$ Sudo bash -c "cat add_file >> /etc/file"
$ whoami;Sudo bash -c "whoami";whoami
iiSeymour
root
iiSeymour
Essayez plutôt de faire ceci:
Sudo tee -a /etc/file < add_file
C'est plus léger que d'exécuter bash ou sh -c command
Une possibilité amusante est d'utiliser ed
(l'éditeur standard):
Sudo ed -s /etc/file <<< $'r add_file\nwq'
Je sais que je ne serai pas voté pour cette merveilleuse réponse, mais je voulais quand même l'inclure ici (parce que c'est drôle). Terminé!
Vous essayez d'écrire le résultat de la commande Sudo cat add_file
dans le fichier/etc/file. 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"
Vous devriez donc 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 équivaut à vi
/vim
Ex-mode (-e
).
Cet exemple de modification sur place est une approche simple, sûre et pratique, car il n'utilise aucun tuyau Shell, FIFO ou Shell dans les solutions de contournement de Shell.
Pour améliorer les performances à des fins de script, envisagez d'utiliser le mode silence (-s
).