Wie erstellt Firejail seine Standard-Blacklist?

Wie erstellt Firejail seine Standard-Blacklist?

Beim Start firejailwird mein komplettes Home-Verzeichnis angezeigt. Beim Start firejail --whitelist=~/somethingwird nur somethingmein Home-Verzeichnis angezeigt. Nun möchte ich den Zugriff auf das System weiter einschränken. Ich kann beispielsweise hinzufügen --blacklist=/mediaund es funktioniert wie erwartet.

Aber wie bestimmt das Standardverhalten, ob die Dateien auf der Whitelist ausgeblendet werden /home/OTHERUSERund /home/*ob sie nicht? Ich sehe keine entsprechende Regel in /etc/firejail/*.

--blacklist=/media --whitelist=/media/dataUnd sind erlaubte Unterverzeichnisse möglich? Funktioniert beispielsweise nicht wie erwartet, auch wenn in der Manpage steht, dass die Whitelist andere Optionen wie überschreibt --read-only.

Sind diese Regeln im Binärcode fest codiert? Wenn nicht, welche Regel bewirkt dies?

Ein Beispiel, was ich gerne hätte. Grundregeln:

  1. Das Haus ist leer, bis auf die Dinge, die im Profil aufgeführt sind
  2. Schwarze Liste/media/data
  3. Erlaube symbolischen Link ~/apps ->/media/data/appsnur zum Lesen.
  4. Erlauben Sie /media/data/apps(falls nötig) schreibgeschützten Zugriff.

1, 2 funktionieren, 3 funktioniert nur mit 4 (wahrscheinlich ok), aber das Aufheben des Lesezugriffs für ein Unterverzeichnis eines verbotenen Verzeichnisses funktioniert nicht.

Es scheint etwas kontraintuitiv, dass es funktionieren sollte, aber auf der Dateisystemebene mkdir -p foo/bar;chmod 111 foo;ls foo/bar/(wobei dies 111bedeutet, dass es keine Leseberechtigung (Verzeichnisauflistung) für foo gibt, sondern nur der ausführbare Teil (Eingeben von Unterverzeichnissen) funktioniert, selbst wenn ls foo/dies fehlschlägt.

Das erweiterte Szenario würde alles außer einer Whitelist (Profil + /usr, /bin, /lib usw.) verbieten. Eine andere Sache, die ohne Root nicht möglich zu sein scheint (und dann läuft die App selbst als Root), ist, z. B. /etc/passwd durch eine Datei zu ersetzen, die keine Benutzer enthält, die im Jail nicht bekannt sein sollten. /etcenthält ziemlich viele lesbare Daten, die vor nicht vertrauenswürdigen Anwendungen verborgen werden sollten.

Aber möglicherweise würde das erweiterte Szenario wirklich einen vollständigen Chroot + Userspace-lxc-Container rechtfertigen.

verwandte Informationen