Lorsque vous tentez de modifier un fichier sans avoir les droits d'écriture dessus, vous obtenez une erreur :
> touch /tmp/foo && sudo chown root /tmp/foo
> echo test > /tmp/foo
zsh: permission denied: /tmp/foo
Sudoing n'aide pas, car il exécute la commande en tant que root, mais le shell gère la redirection de stdout et ouvre le fichier comme vous de toute façon :
> sudo echo test > /tmp/foo
zsh: permission denied: /tmp/foo
Existe-t-il un moyen simple de rediriger stdout vers un fichier sur lequel vous n'êtes pas autorisé à écrire, en plus d'ouvrir un shell en tant que root et de manipuler le fichier de cette façon ?
> sudo su
# echo test > /tmp/foo
Réponse acceptée :
Oui, en utilisant tee
. Donc echo test > /tmp/foo
devient
echo test | sudo tee /tmp/foo
Vous pouvez également ajouter (>>
)
echo test | sudo tee -a /tmp/foo