X-Anwendungen mit den Rechten eines anderen Benutzers ausführen

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Wiki ‹ Sicherheit ‹ X-Anwendungen mit den Rechten eines anderen Benutzers ausführen


Review.png Review: Dieser Artikel ist für das Review freigegeben.


Dieser Artikel soll dir zeigen, wie man grafische Anwendungen unter einem anderen Benutzer ausführen kann.

Einleitung

Ich hatte mir mal Gedanken gemacht, was eigentlich bei mir am meisten gefährdet ist. Und im Endeffekt waren es alle Programme, die auf das Netzwerk zugreifen. Die meisten davon laufen eh unter eigenen Benutzer, aber speziell der Webbrowser Iceweasel/Firefox halt nicht.

Ich wollte ich eine Lösung aufzeigen, die mich insoweit absichern, dass bei einem ausgenutzten Bug der Webbrowser nicht an meine Daten kommt. Dieser ist zwar nicht Root, aber mein $HOME-Verzeichnis könnte ausgelesen und geschrottet werden.

Benutzer erstellen

Zuerst mal muss ein User erstellt werden, der nur für den Webbrowser zuständig ist (Hier als Beispiel internetuser)

root@debian:~#  adduser --system --disabled-login --ingroup $USER --shell /bin/false internetuser
root@debian:~#  adduser internetuser audio
root@debian:~#  adduser internetuser video

Skript das Programme unter dem anderen Benutzer startet anlegen

Dieses Skript startet die jeweiligen Anwendungen unter dem anderen Benutzer und so mit fremden Rechten.

root@debian:~#  editor /usr/local/bin/start
#!/usr/bin/env bash
# 1. Parameter = DISPLAY
# 2. Parameter = MIT COOKIE
# 3. Parameter = Anwendungen
# ab 4. = Parameter für die Anwendungen
DISPLAY=$1
COOKIE=$2
APP=$3
# Hack, weil das leider nicht korrekt gesetzt wird
export XAUTHORITY=$HOME/.Xauthority
/usr/bin/xauth add $DISPLAY MIT-MAGIC-COOKIE-1 $COOKIE
export DISPLAY
shift 3
$APP "$@"

Und das Skript ausführbar machen:

root@debian:~#  chmod go+rx /usr/local/bin/start

sudo einrichten

Ohne folgende sudo-Regel geht es nicht:

dein_user_name, internetuser ALL=(internetuser) NOPASSWD: /usr/local/bin/start

KDE-Variante

Nutzer von KDE haben es einfacher und können sich die Arbeit mit sudo ersparen. Das funktioniert wie folgt:

Zuerst mit root den Nutzer anlegen und ihm ein Passwort vergeben (in diesem Fall internetuser):

root@debian:~#  useradd -md /home/internetuser -s /bin/bash internetuser
root@debian:~#  passwd internetuser
Enter new UNIX password:
Retype new UNIX password:
passwd: Kennwort erfolgreich geändert

Im K-Menü den Menüpunkt Internet auswählen und anschließend auf den Eintrag Iceweasel Web Browser mit der rechten Maustaste klicken. In dem sich nun öffnenden Menü auf Eintrag bearbeiten klicken.

Es öffnet sich nun der KDE-Menü-Editor mit dem schon vorgeladenen Eintrag für Iceweasel. Nun auf die Schaltfläche Mit anderer Benutzerkennung ausführen klicken. Das grau unterlegte Benutzername-Feld wird nun aktiviert. Anschließend nur noch in das Feld den Namen des gewünschten Nutzers (hier:internetuser) eintragen, die Einstellungen unter Datei->Speichern abspeichern und schon wird Iceweasel beim nächsten Start als Benutzer internetuser aufgerufen.


Dateirechte setzen und Datenaustausch einrichten

root@debian:~#  chown :nogroup /home/internetuser/
root@debian:~#  -R $HOME go-rwx
root@debian:~#  -R $HOME/Downloads $HOME/Musik $HOME/Videos g+rx
root@debian:~#  ln -s -t /home/internetuser/ $HOME/Downloads $HOME/Musik $HOME/Video

Programme mit den fremden Rechten starten

Als Beispiel der Webbrowser (Iceweasel/Firefox):

Damit nun Anwendungen immer als internetuser laufen, müssen diese in /usr/local/bin/ "überschrieben" werden (Siehe auch Wrapper-Scripts).

root@debian:~#  editor /usr/local/bin/iceweasel
#!/bin/sh
umask 077
sudo -H -u internetuser /usr/local/bin/start $DISPLAY $(xauth list $DISPLAY |awk '{print $3}') /usr/bin/iceweasel "$@"

Und das Skript ausführbar machen:

root@debian:~#  chmod go+rx /usr/local/bin/iceweasel

Beim Webbrowser gibt es jedoch noch mehr Möglichkeiten diesen zu starten, weshalb hier speziell auch folgende weitere Aufrufe "überschrieben" werden müssen:

  • gnome-www-browser
  • sensible-browser
  • x-www-browser

Anwendungen die aus dem Webbrowser heraus gestartet werden, laufen dann auch unter dem Benutzer internetuser. Das sollte jedoch nicht als Einschränkung gesehen werden. Im Gegenteil sollten zB. folgende weitere Anwendungen genauso Standardmäßig mit den fremden Rechten starten:

  • Medien-Player wie VLC
  • Feedreader wie Liferea

Wie man dies einrichtet siehe das Webbrowser-Beispiel oben.