GNU/Linux >> Linux Esercitazione >  >> Linux

Reindirizzamento di Stdout a un file su cui non disponi dell'autorizzazione di scrittura?

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

Linux
  1. Echo sia a stdout che a stderr

  2. Come impostare autorizzazioni file specifiche durante il reindirizzamento dell'output?

  3. unix:///var/run/supervisor.sock nessun file di questo tipo

  4. Come modificare /tmp predefinito in /home/user/tmp

  5. Differenza e uso corretto per /tmp e /var/tmp

Come correggere l'errore Non hai l'autorizzazione per accedere...

Directory Linux tmp:tutto ciò che devi sapere

In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

>&- è più efficiente di>/dev/null?

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?