J'essaie d'ajouter une ligne dans le fichier hosts sur mon Mac en exécutant une commande d'une ligne sur le terminal.
Je pensais que ce serait facile d'utiliser sudo, mais cela renvoie "permission refusée" lorsque j'essaie d'ajouter >>
au fichier hosts, mais cela fonctionne si j'essaie de remplacer >
le contenu des hôtes.
sudo echo test >> /etc/hosts
-bash: /etc/hosts: Permission denied
$
sudo echo test > /etc/hosts
Password:
$
Le système d'exploitation est à jour.
Réponses:
C'est parce qu'il
echo
est exécuté en tant que root, mais le shell est celui qui effectue réellement la redirection. Vous devez générer un nouveau shell pour que cela fonctionne:Edit: je n'ai pas vu le fait que la
>
redirection fonctionne; Je ne peux pas l'expliquer.la source
tee
car autoriser une exécution de sous-shell à partir desudo
est et devrait être bloqué dans la plupart des environnements de production pour des raisons de sécurité.Plutôt que d'exécuter echo via une redirection qui sera exécutée en tant qu'utilisateur actuel, et non root car echo est exécuté dans votre exemple, utilisez tee comme Steve Buzonas suggère
Le sudo est maintenant appliqué à la commande tee. Le '-a' s'ajoute au fichier
Cela produira également la sortie té vers la sortie standard. Si vous ne voulez pas voir «test» dans votre terminal, ajoutez également:
> /dev/null
à la fin de cette ligne.la source
Pour m'assurer qu'une nouvelle ligne a été créée en premier, j'ai utilisé ceci:
la source