Quando tenti di modificare un file senza avere i permessi di scrittura su di esso, viene visualizzato un errore:
> touch /tmp/foo && sudo chown root /tmp/foo
> echo test > /tmp/foo
zsh: permission denied: /tmp/foo
Sudoing non aiuta, perché esegue il comando come root, ma la shell gestisce il reindirizzamento stdout e apre comunque il file come te:
> sudo echo test > /tmp/foo
zsh: permission denied: /tmp/foo
Esiste un modo semplice per reindirizzare stdout a un file su cui non si dispone dell'autorizzazione per scrivere, oltre ad aprire una shell come root e manipolare il file in questo modo?
> sudo su
# echo test > /tmp/foo
Risposta accettata:
Sì, utilizzando tee
. Quindi echo test > /tmp/foo
diventa
echo test | sudo tee /tmp/foo
Puoi anche aggiungere (>>
)
echo test | sudo tee -a /tmp/foo