23 votes

Existe-t-il un programme de sandboxing comme Sandboxie pour Mac ?

Avec Bac à sable pour Windows, vous pouvez exécuter des applications auxquelles vous n'avez pas entièrement confiance dans un bac à sable ; celui-ci suit tous les fichiers que le programme crée et modifie, et bien que les fichiers soient techniquement transférés au système, vous pouvez annuler les modifications en supprimant ce bac à sable. Cela supprime tous les fichiers créés par le programme et rétablit les fichiers modifiés dans leur état antérieur. D'une certaine manière, c'est comme une restauration du système lorsque vous rétablissez le système à un point précédent ; dans ce cas, cela ne restaurerait que les fichiers que le programme en question a affectés, et c'est donc beaucoup plus facile à utiliser. Du moins, c'est ainsi que je comprends son fonctionnement.

Sous MacOS, il y a trois (ou presque) façons de le faire, à ma connaissance :

  1. Faites une sauvegarde Time Machine, puis installez le programme. Après l'avoir utilisé, restaurez à partir de la sauvegarde et tout sortira intact comme avant.
  2. Utiliser une VM pour l'exécuter ; cependant, j'aimerais éviter de le faire car cela complique grandement les choses.
  3. Utilisez AppCleaner pour supprimer les fichiers que le programme a laissé derrière lui. Cependant, cela ne fait rien pour les fichiers que le programme a modifié (peut-être malicieusement ?), et si vous installez un programme avec des privilèges administratifs ou un paquet, il est fort probable qu'il installe des fichiers dans le système qu'AppCleaner ne pourra pas enlever. De plus, je ne suis pas sûr qu'il soit 100% précis pour les applications normales, de toute façon.

Existe-t-il un moyen de faire cela sur un Mac sans utiliser une VM ?

10voto

xhalarin Points 21

MacOS a un intégration de la fonction Sandbox qui peut vous aider mais qui n'a pas exactement les mêmes fonctionnalités que Sandboxy.

Este Article du blog de Paolo Fabio Zaino de 2015 explique comment exécuter des applications dans un bac à sable Mac OS X. Il le résume de la façon suivante :

en utilisant le sandboxing, vous pouvez restreindre l'accès d'une application aux ressources du système d'exploitation comme le système de fichiers ou le réseau, etc

Je cite son billet de blog :

Comment mettre une application en sandbox ?

Tout d'abord, pour permettre à Mac OS X de savoir quelles ressources votre application nécessite pour pouvoir s'exécuter correctement, nous devons créer un fichier de configuration de configuration. Cette activité nécessitera un certain temps et des tests car chaque application a des exigences différentes

Voici un exemple (remplacez MyApp par le nom de votre application) :

;; 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*)

Une fois que nous avons terminé avec notre fichier de configuration sandbox pour notre application, nous pouvons simplement l'exécuter à l'aide de la commande suivante depuis la ligne de commande la ligne de commande :

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

Où myapp est le nom de l'application que vous voulez exécuter dans un bac à sable.

Si mon fichier sandbox générique est trop générique pour vous et que vous voulez des exemples plus pratiques (déjà implémentés), exécutez votre application de terminal et jetez un coup d'oeil à tous les exemples déjà gentiment fournis par Apple :

ls /usr/share/sandbox

Dans ce répertoire, vous trouverez de nombreux fichiers tels que

sshd.sb

Pour examiner et avoir plus d'informations/tutoriels pour écrire votre propre bac à sable. pour votre application spécifique.

2voto

boni aditya Points 31

Eh bien, il y a cette application - https://www.macupdate.com/app/mac/19025/sandbox

Sandbox, mais je ne suis pas sûr que cela fonctionne bien avec la dernière édition. En tant que telles, toutes les applications doivent être mises en sandbox selon des mesures de sécurité renforcées, mais cela ne s'applique qu'aux APPS du Mac Store, mais pas à toutes les autres applications qui ne sont pas sur le magasin !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X