Ein X11-Kommando als Root zwischendurch
Wer möchte nicht mal eben eine X-Anwendung lokal als Root ausführen.
Nur leider ist das immer richtig lästig, weil da immer einige Kommandos fällig sind:
xhost +localhost su - export DISPLAY=:0 xeyes :)
Oder auch:
ssh -X root@localhost
Nachdem mir das mittlerweile etwas lästig wird, habe ich mich an die wichtigste Administratorenpflicht (Faulheit) erinnert und ein kleines Programm geschrieben, das es etwas vereinfacht:
#!/usr/bin/perl # Programmname: xrooted use Tk; Tk::CmdLine->SetArguments(); my $main = Tk::MainWindow->new(-title => "ROOTed"); my $cmd; $entry=$main->Entry(-textvariable => \$cmd )->pack(); $entry->focus(); my $exit; $main->bind('<Return>' => sub { $exit="execute"; $main->destroy();} ); $main->bind('<Escape>' => sub { $exit="cancelled"; $main->destroy();} ); MainLoop; print $exit."\n"; if $exit eq "execute") { # Komischerweise ist DISPLAY nach ssh -X auf $HOSTNAME:10.0, deswegen der Umweg system('xhost +localhost'); system('ssh -X root@localhost DISPLAY=:0.0 \;. /etc/profile \; '. "$cmd"); }
Dieses Skript schaltet als erstes den aktuellen X-Server für alle Benutzer von localhost frei. Danach wird eine SSH-Sitzung zum Benutzer root auf dem aktuellen Rechner hergestellt.
Wer das Ganze ohne Passworteingabe haben möchte, kann den öffentlichen Schlüssel des Benutzers zu den zugelasssenen Schlüsseln von root hinzufügen:
su - Passwort: cat ~MeinBenutzer/.ssh/id_dsa.pub >>.ssh/authorized_keys2
oder
cat ~MeinBenutzer/.ssh/id_rsa.pub >>.ssh/authorized_keys2
oder
cat ~MeinBenutzer/.ssh/identity.pub >>.ssh/authorized_keys
je nach Schlüsseltyp.
So, das Ganze kann aber noch angenehmer werden. Ich bin einer, der gerne unter KDE arbeitet, und eine Sache gefällt mir ganz gut: Die direkte Kommandoausführung mit Alt+F2. Also ist es doch ganz bequem, das genauso einzubinden. Da habe ich mal Alt+F3 genommen. Diese Kombination ist zwar schon belegt, aber ich habe sie noch nie gebraucht. Also einfach im KDE-Kontrollzentrum rausschmeissen.
Dann mit kmenuedit eine Verknüpfung irgendwo anlegen, wo dann etwa folgendes ausgeführt wird:
/usr/local/bin/xrooted --geometry 0x0+484+384
Die Option --geometry sorgt dafür, daß das Programm bei einer Auflösung von 1024x768 ungefähr in der Mitte erscheint. So, jetzt noch die Tastenkombination zuweisen, und fertig.