ubuntuusers.de

AppArmor-Profil für Wine

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Commander_Data

Avatar von Commander_Data

Anmeldungsdatum:
18. September 2011

Beiträge: 417

Hi,

vor ein paar Wochen habe ich ein AppArmor-Profil für Wine erstellt. Genau genommen sind es zwei Profile in einer Datei: Eins für wine-preloader und eins für wineserver. Angefangen habe ich mit Hilfe von http://wiki.apparmor.net/index.php/AppArmorWine, was allerdings noch einige Änderungen benötigte. Ich verwende momentan übrigens Ubuntu 12.10 mit Wine aus den Paketquellen (Version 1.4.1-0ubuntu1).

Wer es benutzen möchte, sollte es sich am besten vorher selbst anschauen und ggf. anpassen (wie üblich bei AppArmor-Profilen). Noch ein paar Anmerkungen vorab:

  • Netzwerkzugriffe werden verboten. Sollte man sie erlauben wollen, muss deny network, auskommentiert werden.

  • Bei der Programminstallation versucht Wine auch Starter zu erstellen, die unter Linux funktionieren (.desktop-Dateien u.ä.). Dies geschieht mittels der winemenubuilder.exe. Um dies zu erlauben, muss Wine Schreibzugriff auf die entsprechenden Dateien gewährt werden. Theoretisch könnte Wine bzw. ein in Wine gestartetes Programm dann (wie fast jedes andere Programm, das man ausführt, auch) auch andere Starter anlegen oder manipulieren, sodass z.B. der Firefox-Starter nicht (nur) Firefox aufruft. Das ist zwar, vor allem mit unten genannter Anpassung der Laufwerks-Konfiguration, nicht sehr wahrscheinlich, aber in diesem Kontext vmtl. doch einen Hinweis wert. 😉 Die nötigen Regeln, die den Zugriff erlauben, sind auskommentiert bereits enthalten, sodass keine großen Anpassungen nötig wären.

Vmtl. will man, wenn man dieses AppArmor-Profil nutzt, auch per winecfg z.B. Laufwerk Z:, das auf / verweist, sowie die Links für die "Desktop-Integration" deaktivieren (sofern noch nicht geschehen).

Anmerkungen, Vorschläge und Kritik sind immer willkommen. ☺

MfG,
Data

wine (3.2 KiB)
AppArmor-Profil(e) für Wine
Download wine

Kätzchen

Avatar von Kätzchen

Anmeldungsdatum:
1. Mai 2011

Beiträge: 7094

Wohnort: Technische Republik

Ich verwende POL mit allerlei verschieden Wine Versionen. Diese werden von POL als .deb Paket heruntergeladen und installiert.

Klappt dein (unser ☺ ) Apparmor Skript auch damit?

Wenn du POL auch benutzt fraue ich mich über eine Antwort!

Danke schonmal

Commander_Data

(Themenstarter)
Avatar von Commander_Data

Anmeldungsdatum:
18. September 2011

Beiträge: 417

Da PlayOnLinux nur ein grafisches Frontend für Wine ist, sollte es auch damit funktionieren. Dazu reicht es vmtl. die Variable @{WINEPREFIX} anzupassen, indem man @{HOME}/.PlayonLinux/wineprefix/* hinten anfügt:

@{WINEPREFIX}=@{HOME}/.wine* /opt/wine/.wine* @{HOME}/.PlayonLinux/wineprefix/*

in Zeile 5. Die oben beschriebenen Anpassungen mittels Wine-Konfiguration (winecfg) sind wohl auch unter POL möglich. Ich selbst verwende POL nicht.

Um das Profil verwenden zu können, muss man es in das richtige Verzeichnis kopieren und dann einlesen lassen (was sonst beim Neustart automatisch geschieht) - egal ob man POL oder Wine direkt verwendet:

sudo cp ~/Downloads/wine /etc/apparmor.d/wine
sudo apparmor_parser -r /etc/apparmor.d/wine 

Nun kann man zum Testen ein Programm unter Wine / POL starten. Die zugehörigen Prozesse (ein mal wineserver und mehrmals wine-preloader) sollten dann im "enforce"-Modus ausgeführt werden, wobei die angegebenen Prozess-IDs (hier z.B. 5383 für wineserver) natürlich nicht übereinstimmen müssen:

a@A:~$ sudo aa-status 
apparmor module is loaded.
27 profiles are loaded.
27 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/evince
   /usr/bin/evince-previewer
   /usr/bin/evince-previewer//sanitized_helper
   /usr/bin/evince-thumbnailer
   /usr/bin/evince-thumbnailer//sanitized_helper
   /usr/bin/evince//sanitized_helper
   /usr/bin/wine-preloader
   /usr/bin/wineserver
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/cups/backend/cups-pdf
   /usr/lib/firefox/firefox{,*[^s][^h]}
   /usr/lib/firefox/firefox{,*[^s][^h]}//browser_java
   /usr/lib/firefox/firefox{,*[^s][^h]}//browser_openjdk
   /usr/lib/firefox/firefox{,*[^s][^h]}//sanitized_helper
   /usr/lib/lightdm/lightdm/lightdm-guest-session-wrapper
   /usr/lib/lightdm/lightdm/lightdm-guest-session-wrapper//chromium_browser
   /usr/lib/telepathy/mission-control-5
   /usr/lib/telepathy/telepathy-*
   /usr/lib/telepathy/telepathy-*//sanitized_helper
   /usr/lib/x86_64-linux-gnu/lightdm-remote-session-freerdp/freerdp-session-wrapper
   /usr/lib/x86_64-linux-gnu/lightdm-remote-session-freerdp/freerdp-session-wrapper//chromium_browser
   /usr/lib/x86_64-linux-gnu/lightdm-remote-session-uccsconfigure/uccsconfigure-session-wrapper
   /usr/lib/x86_64-linux-gnu/lightdm-remote-session-uccsconfigure/uccsconfigure-session-wrapper//chromium_browser
   /usr/sbin/cupsd
   /usr/sbin/tcpdump
0 profiles are in complain mode.
11 processes have profiles defined.
11 processes are in enforce mode.
   /sbin/dhclient (1633) 
   /usr/bin/wine-preloader (5389) 
   /usr/bin/wine-preloader (5393) 
   /usr/bin/wine-preloader (5401) 
   /usr/bin/wine-preloader (5408) 
   /usr/bin/wine-preloader (5410) 
   /usr/bin/wineserver (5383) 
   /usr/lib/firefox/firefox{,*[^s][^h]} (3641) 
   /usr/lib/firefox/firefox{,*[^s][^h]}//sanitized_helper (4975) 
   /usr/lib/telepathy/mission-control-5 (2208) 
   /usr/sbin/cupsd (1165) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Die Logeinträge kann man in /var/log/syslog bzw. /var/log/kern.log betrachten (siehe AppArmor (Abschnitt „AppArmor-Modi-flags“)). Interessant sind in diesem Zusammenhang dann vor allem die Einträge mit profile="/usr/bin/wine-preloader" oder profile="/usr/bin/wineserver". (operation="profile_replace"-Einträge bzgl. dieser Profile sollten auch vorhanden sein. Diese stellen keine Fehler dar.)

So kannst du und natürlich auch andere ausprobieren, ob das Profil verwendet wird und nicht zu restriktiv ist. (Ob es nicht zu offen ist, müsste man selbst untersuchen. - Ich denke, dass es das nicht ist, aber das muss nicht heißen, dass das jeder so sieht.)

Data

Antworten |