Nach einem weiteren Neustart zeigt sich bei man less die gleiche Fehlermeldung. journalctl -f zeigt jedoch
Code: Alles auswählen
Nov 03 09:54:02 +++ audit[3080]: AVC apparmor="DENIED" operation="open" profile="/usr/bin/man" name="/usr/share/man/de/" pid=3080 comm="man" requested_mask="r" denied_mask="r" fsuid=1026 ouid=0
Nov 03 09:54:02 +++ audit[3080]: AVC apparmor="DENIED" operation="open" profile="/usr/bin/man" name="/usr/local/share/man/man7/" pid=3080 comm="man" requested_mask="r" denied_mask="r" fsuid=1026 ouid=0
Nov 03 09:54:02 +++ audit[3080]: AVC apparmor="DENIED" operation="open" profile="/usr/bin/man" name="/usr/share/man/man7/" pid=3080 comm="man" requested_mask="r" denied_mask="r" fsuid=1026 ouid=0
Nov 03 09:54:02 +++ kernel: audit: type=1400 audit(1604393642.544:50): apparmor="DENIED" operation="open" profile="/usr/bin/man" name="/usr/local/share/man/man1/" pid=3080 comm="man" requested_mask="r" denied_mask="r" fsuid=1026 ouid=0
Nov 03 09:54:02 +++ kernel: audit: type=1400 audit(1604393642.544:51): apparmor="DENIED" operation="file_lock" profile="/usr/bin/man" name="/var/cache/man/oldlocal/index.db" pid=3080 comm="man" requested_mask="k" denied_mask="k" fsuid=1026 ouid=6
Nov 03 09:54:02 +++ kernel: audit: type=1400 audit(1604393642.544:52): apparmor="DENIED" operation="file_lock" profile="/usr/bin/man" name="/var/cache/man/oldlocal/index.db" pid=3080 comm="man" requested_mask="k" denied_mask="k" fsuid=1026 ouid=6
Nov 03 09:54:02 +++ kernel: audit: type=1400 audit(1604393642.544:53): apparmor="DENIED" operation="open" profile="/usr/bin/man" name="/usr/share/man/man1/" pid=3080 comm="man" requested_mask="r" denied_mask="r" fsuid=1026 ouid=0
Nov 03 09:54:02 +++ kernel: audit: type=1400 audit(1604393642.544:54): apparmor="DENIED" operation="file_lock" profile="/usr/bin/man" name="/var/cache/man/index.db" pid=3080 comm="man" requested_mask="k" denied_mask="k" fsuid=1026 ouid=6
Nov 03 09:54:02 +++ kernel: audit: type=1400 audit(1604393642.544:55): apparmor="DENIED" operation="file_lock" profile="/usr/bin/man" name="/var/cache/man/index.db" pid=3080 comm="man" requested_mask="k" denied_mask="k" fsuid=1026 ouid=6
Nov 03 09:54:02 +++ kernel: audit: type=1400 audit(1604393642.544:56): apparmor="DENIED" operation="open" profile="/usr/bin/man" name="/usr/share/man/de/" pid=3080 comm="man" requested_mask="r" denied_mask="r" fsuid=1026 ouid=0
Obige shell- un dLinux-Magie machen daraus:
Code: Alles auswählen
name="/usr/local/share/man/man7/"
name="/usr/share/man/de/"
name="/usr/share/man/man7/"
Das sieht so aus, als müsste jeder Unterordner in usr.bin.man eingetragen werden. Geht das nicht einfacher?
Lesen hilft weiter, z.B.
https://wiki.ubuntuusers.de/AppArmor/.
Danach sieht usr.bin.man so aus:
Code: Alles auswählen
# Last Modified: 20201103 09:39 MEZ
# read-access auf /etc/manpath.config und Ordner mit Handbuchseiten.
# ------------------------------------------------------------------
#
# Copyright (C) 2002-2005 Novell/SUSE
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public
# License published by the Free Software Foundation.
#
# ------------------------------------------------------------------
# vim:syntax=apparmor
#
#include <tunables/global>
/usr/bin/man {
#include <abstractions/base>
#include <abstractions/nameservice>
capability setgid,
capability setuid,
/usr/bin/man r,
/etc/manpath.config r,
/usr/lib/man-db/man Px,
# read-access für die Manpages/Handbuchseiten sowie die zugehörigen index.db
/usr/local/share/man/** r,
/usr/share/man/** r,
# Sicherheitsrisiko
/home/*/.local/man/**
/var/cache/man/index.db r,
/var/cache/man/oldlocal/index.db r,
}
find /usr/ -iname man bringt noch ein paar mehr Vorkommen. Aber zunächst will ich prüfen, ob
funktioniert. Das kann zum Sicherheitsrisiko auf Maschinen mit mehr als einem Benutzer werden. Ein anderer Nutzer könnte versuchen man über eine speziell designte manpage in seinem .local/man an zu greifen.
Gut, das funktioniert jetzt. Keine Fehlermeldungen mehr in journalctl. /home/*/.local/man scheint auch zu funktionieren. Da ich hier aber nur einen Manpage habe, kommt die nach /usr/local/share/man und die Zeile wird auskommentiert.
Zusammenfassung:
/usr/bin/man bekommt Zugriffsprobleme, wenn apparmor mit Standardeinstellung (kein usr.bin.man in apparmor.d) läuft und firejail installiert und mit firecfg konfiguriert wird.
Die Einrichtung des obigen /etc/apparmor.d/usr.bin.man (Pfadname mit Punkten statt Schrägern!) behebt die Zugriffsprobleme in apparmor für die gegebenen Pfade.
Ob dies auch durch ein eigens firejail-profile hätte gelöst werden können, habe ich noch nicht versucht.
Quellen
Vielen Dank an
1. fossonly, der mich mit seinem zweiten Satz zur Problemlösung gebracht hat.
2. Dem Blogger, der darauf hinwies, dass, obwohl aa-status /usr/bin/man anzeigt, nur eine apparmor interne Standardeinstellung verwendet wird. Er wies mir auch den Weg zur Installation eines profiles für /usr/bin/man. Leider taucht sein blog nur unter bestimmten Umständen in metager.de auf. Jetzt gerade nicht, deswegen finde ich leider keinen Namen.
Wünsche
Aktualisierung der apparmor-utils damit die Fehlermeldung
Code: Alles auswählen
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
apparmor-utils : Hängt ab von: python3-apparmor (= 2.13.2-10) soll aber nicht installiert werden
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.
einer Installation nicht mehr im Wege steht.
28.03.2021 Nachdem ich firejail noch eine weitere Chance gegeben habe, habe ich mich mal durch die vielen Optionen gearbeitet.
Nach einem upgrade von apparmor (nichts mehr in /etc/apparmor.d) und einer Neuinstallation von firejail funktionierte /usr/bin/man wieder mit den gleichen Problemen nicht.
Nach
funktionierte es wieder.