GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Stdout in eine Datei umleiten, für die Sie keine Schreibberechtigung haben?

Wenn Sie versuchen, eine Datei zu ändern, ohne über Schreibberechtigungen zu verfügen, erhalten Sie eine Fehlermeldung:

> touch /tmp/foo && sudo chown root /tmp/foo
> echo test > /tmp/foo
zsh: permission denied: /tmp/foo

Sudoing hilft nicht, weil es den Befehl als root ausführt, aber die Shell handhabt die Umleitung von stdout und öffnet die Datei trotzdem wie Sie:

> sudo echo test > /tmp/foo
zsh: permission denied: /tmp/foo

Gibt es eine einfache Möglichkeit, stdout in eine Datei umzuleiten, in die Sie keine Schreibberechtigung haben, außer eine Shell als root zu öffnen und die Datei auf diese Weise zu manipulieren?

> sudo su
# echo test > /tmp/foo

Akzeptierte Antwort:

Ja, mit tee . Also echo test > /tmp/foo wird

echo test | sudo tee /tmp/foo

Sie können auch (>> )

echo test | sudo tee -a /tmp/foo

Linux
  1. So beheben Sie den Fehler Sie haben keine Zugriffsberechtigung…

  2. Ist>&- effizienter als>/dev/null?

  3. Ist Rsync ~/foo Target/foo dasselbe wie Rsync ~/foo/Target/foo/?

  4. So bereinigt systemd-tmpfiles /tmp/ oder /var/tmp (Ersatz von tmpwatch) in CentOS / RHEL 7

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Linux-tmp-Verzeichnis:Alles, was Sie wissen müssen

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Warum andere Dinge als /home auf eine separate Partition legen?

echo oder print /dev/stdin /dev/stdout /dev/stderr

So ändern Sie das Standard-/tmp in /home/user/tmp

Unterschied und korrekte Verwendung für /tmp und /var/tmp