
Beim Start firejail
wird mein komplettes Home-Verzeichnis angezeigt. Beim Start firejail --whitelist=~/something
wird nur something
mein Home-Verzeichnis angezeigt. Nun möchte ich den Zugriff auf das System weiter einschränken. Ich kann beispielsweise hinzufügen --blacklist=/media
und es funktioniert wie erwartet.
Aber wie bestimmt das Standardverhalten, ob die Dateien auf der Whitelist ausgeblendet werden /home/OTHERUSER
und /home/*
ob sie nicht? Ich sehe keine entsprechende Regel in /etc/firejail/*
.
--blacklist=/media --whitelist=/media/data
Und 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:
- Das Haus ist leer, bis auf die Dinge, die im Profil aufgeführt sind
- Schwarze Liste
/media/data
- Erlaube symbolischen Link
~/apps ->/media/data/apps
nur zum Lesen. - 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 111
bedeutet, 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. /etc
enthä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.