Duplication possible :
Redirection de stdout vers un fichier sur lequel vous n'avez pas d'autorisation d'écriture
echo "some words" >> /etc/apt/source.list
permission denied
sudo echo "some words" >> /etc/apt/source.list
renvoie également l'autorisation refusée
Ensuite, je pense que l'opérateur d'ajout est peut-être une autre commande, je devrais mettre le sudo avant, alors j'essaie
echo "some words" >> sudo /etc/apt/source.list
renvoie également l'autorisation refusée
comment dois-je faire cette tâche ?
Réponse acceptée :
sudo sh -c 'echo "some words" >> /etc/apt/source.list'
La raison pour laquelle sudo echo "quelques mots">> /etc/apt/source.list ne fonctionne pas est que sudo augmente les privilèges de la commande "echo", et non la redirection.
La redirection>> amène le shell actuel à créer/ajouter au fichier. Il échoue car votre shell n'a pas les autorisations pour le faire.
La raison pour laquelle ma réponse fonctionne est que vous exécutez le tout (écho et la redirection) dans un nouveau shell qui a été sudo. sh -c ...
appelle un nouveau shell et exécute la commande donnée dans ce sous-shell. Le sudo avant qu'il ne fasse exécuter ce sous-shell avec des privilèges élevés.
Le deuxième exemple sudo n'a pas de sens, car sudo prend une commande à exécuter, et ce n'est pas ce que vous passez. Je parie que vous avez maintenant un fichier dans le répertoire local appelé sudo avec le contenu "quelques mots". N'hésitez pas à supprimer ça 🙂