sudo & Pipes

Wenn man einen Befehl mit sudo durch eine Pipe leiten möchte, wie z.B.:

sudo echo "xscreensaver-command -lock" > usr/lib/kde4/libexec/kscreenlocker

besteht das Problem, dass nur der Teil vor dem > mit root-Rechten ausgeführt wird und nicht der ganze Befehl.
Nach kurzem Googlen habe ich auf dieser Seite folgende Lösung gefunden:
Statt sudo BEFEHL  gibt man sudo bash -c 'BEFEHL' ein. Das führt dazu, dass sudo eine Bash mit root-Rechten ausführt, die dann den eigentlichen Befehl ausführt.
Also für mein Beispiel:

sudo bash -c 'echo "xscreensaver-command -lock" > /usr/lib/kde4/libexec/kscreenlocker'

(Dieser Befehl sorgt übrigens dafür, dass man in KDE seinen Bildschirm mit xscreensaver statt mit kscreensaver sperren kann.)

Advertisements

2 Responses to sudo & Pipes

  1. JamesIsIn says:

    Thanks for your visit and your citation. I am migrating my technology posts. Please update your link:

    http://jamesisin.com/a_high-tech_blech/index.php/2010/06/bash-sudo-through-a-pipe/

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s