Die Verwaltung der Snaps übernimmt der ständig im Hintergrund laufende Daemon "snapd", dem "snap" die passenden Befehle erteilt. Bei der Installation eines neuen Snaps kopiert der Daemon das Snap-Paket in das Unterverzeichnis "/var/snaps". Gleichzeitig mountet er das enthaltene "squashfs"-Dateisystem im Unterverzeichnis "/snap/Name/current", wobei "Name" für den Namen des Snaps steht. Die auch für Administratoren interessante "snap.yaml" finden Sie danach immer unter "/snap/Name/current/meta/snap.yaml". Des Weiteren zeigen unter "/snap/bin" symbolische Links auf die Snaps. Da zumindest unter Ubuntu "/snap/bin" in der Umgebungsvariable "$PATH" eingetragen ist, können alle Benutzer des Systems die Snap-Anwendungen einfach direkt über ihren Namen starten. Sofern das Snap eine Desktop-Datei (".desktop") und ein Icon enthält, bindet sie der Snap-Daemon zudem noch ins Startmenü ein.
Auf das Verzeichnis "/snap/»Name
«
/current" kann die Anwendung aus dem Snap aus Sicherheitsgründen nur lesend zugreifen. Jedes Snap besitzt deshalb vier weitere Verzeichnisse, auf die es Schreibrechte besitzt. Das erste im Bunde namens "/var/snap/»Name
«
/current/" untersteht der eingebauten Versionsverwaltung: Bei einem Update des Snap sichert der "snapd"-Daemon automatisch den Inhalt dieses Verzeichnisses.
Ein »snap revert
«
holt dann nicht nur die alte Version des Snap, sondern auch die Daten zurück. Der Ordner bietet sich folglich für Konfigurationsdateien an. Alle anderen Dateien kann das Snap unter "/var/snap/»Name
«
/common/" ablegen, das die Versionsverwaltung ignoriert. Für die Daten und Dokumente der einzelnen Benutzer stehen dem Snap zudem die beiden Verzeichnisse "~/snap/»Name
«
/cur-rent/" und "~/snap/»Name
«
/common/" zur Verfügung.
Jede gestartete Anwendung läuft in einer Sandbox, die gleich mehrere Sicherheitstechniken einsetzt. So blockieren Seccomp-Filter den Zugriff auf Systemfunktionen des Linux-Kernels. AppArmor wiederum verhindert den Zugriff auf Verzeichnisse. Für die Abschottung gegenüber anderen laufenden Prozessen sorgen Kernel-Namespaces und Cgroups. Die Ubuntu-Kernel bieten zudem noch weitere spezielle Patches, die den Kernel weiter härten sollen.
Als Grundlage für jede Sandbox dient ein spezielles Snap-Paket mit einem minimalen Linux-System. Dieses sogenannte OS-Snap enthält unter anderem die Glibc- und OpenSSL-Bibliotheken sowie Python und Systemd, die (fast) jedes Snap benötigt. Über das Dateisystem des OS-Snap legt das Snap-Paketsystem dann das Dateisystem aus dem normalen Snap (Bild 3). Sobald Sie das erste Mal ein Snap aus dem Ubunut Store herunterladen, wandert auch automatisch einmalig das OS-Snap nach "/snap".