Gibt es ein Sandboxing-Programm wie Sandboxie für Mac?

Mit Sandboxie für Windows können Sie Anwendungen, denen Sie nicht ganz vertrauen, in einer Sandbox ausführen; Es verfolgt alle Dateien, die das Programm erstellt und ändert, und obwohl die Dateien technisch gesehen an das System gehen, können Sie die Änderungen rückgängig machen, indem Sie diese Sandbox löschen. Dadurch werden alle vom Programm erstellten Dateien entfernt und geänderte Dateien in ihrem vorherigen Zustand wiederhergestellt. In gewisser Weise ist es wie eine Systemwiederherstellung, wenn Sie das System zu einem früheren Zeitpunkt wiederherstellen; In diesem Fall werden nur die Dateien wiederhergestellt, die das betreffende Programm betroffen hat, sodass die Verwendung viel einfacher ist. So verstehe ich zumindest, dass es funktioniert.

Unter macOS gibt es drei (ähnliche) Möglichkeiten, dies zu tun, die ich kenne:

  1. Erstellen Sie eine Time Machine-Sicherung und installieren Sie dann das Programm. Nachdem Sie es verwendet haben, stellen Sie es aus der Sicherung wieder her und alles wird intakt wie zuvor.
  2. Verwenden Sie eine VM, um es auszuführen; Ich möchte dies jedoch vermeiden, da dies die Sache erheblich erschwert
  3. Verwenden Sie AppCleaner, um Dateien zu entfernen, die das Programm hinterlassen hat. Dies bewirkt jedoch nichts für Dateien, die das Programm (vielleicht böswillig?) modifiziert hat, und wenn Sie ein Programm mit Administratorrechten oder ein Paket installieren, werden höchstwahrscheinlich Dateien im System installiert, die AppCleaner nicht abrufen kann aus. Außerdem bin ich mir nicht sicher, ob es für normale Apps sowieso 100% genau ist.

Gibt es also eine Möglichkeit, dies auf einem Mac zu tun, ohne eine VM zu verwenden?

Antworten (2)

MacOS hat eine eingebaute Sandbox-Funktion , die Ihnen helfen kann, aber nicht genau die gleiche Funktionalität wie Sandboxy hat.

Dieser Blogbeitrag von Paolo Fabio Zaino aus dem Jahr 2015 erklärt, wie Anwendungen in einer Mac OS X-Sandbox ausgeführt werden. Er fasst es so zusammen:

Durch die Verwendung von Sandboxing können Sie den Zugriff einer Anwendung auf Betriebssystemressourcen wie Dateisystem oder Netzwerk usw. einschränken.

Zitat aus seinem Blogbeitrag:

Wie kann man eine Anwendung sandboxen?

Damit Mac OS X weiß, welche Ressourcen Ihre Anwendung benötigt, um ordnungsgemäß ausgeführt werden zu können, müssen wir zunächst eine Sandbox-Konfigurationsdatei erstellen. Diese Aktivität erfordert einige Zeit und Tests, da jede Anwendung unterschiedliche Anforderungen hat

Hier ist ein Beispiel (ändern Sie MyApp durch Ihren Anwendungsnamen):

;; This is my first sandbox configuration file!
(version 1) 
(deny default)

;; Let's allow file read and write in specific locations and not 
;; all over my filesystem!
;; Please note you can add more (regex "^/Users/user_name/xxxxxxxxxxx") lines depending 
;; on what your MyApp needs to function properly.
(allow file-write* file-read-data file-read-metadata
  (regex "^/Users/user_name/[Directories it requires to write and read from]")
  (regex "^/Applications/MyApp.app")
  (regex "^(/private)?/tmp/"))

;; You can also add a sperate section for reading and writing files outside your
;; user_name account directory.
(allow file-read-data file-read-metadata
  (regex "^/dev/autofs.*")
  (regex "^/System/Library")
  (regex "^/Applications/MyApp.app")
  (regex "^/usr/lib")
  (regex "^/var")
  (regex "^/Users/user_name"))

;; If your MyApp requires to access sysctl (in read)
(allow mach* sysctl-read)

;; If you want to import extra rules from 
;; an existing sandbox configuration file: 
(import "/usr/share/sandbox/bsd.sb")

;; If you want to decide in which filesystem paths 
;; MyApp is forbidden to write:
(deny file-write-data
   (regex #"^(/private)?/etc/localtime$"
     #"^/usr/share/nls/"
   #"^/usr/share/zoneinfo/"))

;; If your MyApp wants to run extra processes it's be allowed to run only
;; child processes and nothign else
(allow process-exec 
  (regex "^/Applications/MyApp.app"))

;; If your MyApp requires network access you can grant it here:
(allow network*)

Sobald wir mit unserer Sandbox-Konfigurationsdatei für unsere Anwendung fertig sind, können wir sie einfach mit dem folgenden Befehl von der Befehlszeile ausführen:

sandbox-exec -f myapp-sandbox-conf /Applications/MyApp.app/Contents/MacOS/MyApp-bin

Wobei myapp der Name der Anwendung ist, die Sie in einer Sandbox ausführen möchten.

Wenn meine generische Sandbox-Datei für Sie zu generisch ist und Sie weitere praktische Beispiele (bereits implementiert) wünschen, führen Sie Ihre Terminalanwendung aus und sehen Sie sich alle Beispiele an, die bereits freundlicherweise von Apple bereitgestellt wurden:

ls /usr/share/sandbox

In diesem Verzeichnis finden Sie viele Dateien wie z

sshd.sb

Um mehr Einblicke/Tutorials zu erhalten und Ihre eigene Sandbox-Konfigurationsdatei für Ihre spezifische Anwendung zu schreiben.

Willkommen bei Ask Different! Wir versuchen, die besten Antworten zu finden, und diese Antworten liefern Informationen darüber, warum sie die besten sind. Erklären Sie, warum Sie denken, dass Ihre Antwort dem OP helfen wird oder besser ist als andere da draußen. Das Bereitstellen von Links ist gut, aber die Antworten sollten in sich geschlossen sein und nicht nur ein Link zu einer anderen Website. Siehe Wie antworte ich , um eine qualitativ hochwertige Antwort zu geben. - Aus Bewertung
Ich würde das nicht mit dem vergleichen, was Sandboxie für Windows tut. Sie beschreiben die an macOS vorgenommenen Änderungen, um die von Security-Enhanced Linux vorgenommenen Änderungen einzubeziehen. en.wikipedia.org/wiki/Security-Enhanced_Linux In macOS müssten Sie die Kontrollen manuell implementieren, während Sandboxie diese Kontrollen automatisch durchführt. Mit Sandboxie können Sie alle Änderungen durch die App rückgängig machen.
Richtig, die macOS Sandbox-Funktion ist nicht dasselbe wie Sandboxie. Soll ich meine Antwort löschen?
Nein, bitte löschen Sie es nicht, da Ihre Antwort alternative Sandboxing-Funktionen beschreibt, die andere möglicherweise nützlich finden (ich fand es nützlich). Sie können Ihre Antwort bearbeiten, um zu sagen: "Dies ist jedoch nicht genau wie Sandboxie ...".

Nun, es gibt diese App - https://www.macupdate.com/app/mac/19025/sandbox

Sandbox, aber ich bin mir nicht sicher, ob das mit der neuesten Ausgabe gut funktioniert. Daher müssen alle Apps gemäß erweiterten Sicherheitsmaßnahmen sandboxed werden, aber dies gilt nur für APPS im Mac Store, aber nicht für alle anderen Apps, die nicht im Store sind!

Es scheint, dass diese App unter dem angegebenen Link nicht mehr existiert
Probleme traten zuletzt seit OS X 10.6.x im Jahr 2008 auf: web.archive.org/web/20160609020915/http://www.macupdate.com:80/…