28 votes

Existe-t-il un moyen de protéger les applications individuelles par un mot de passe ?

Est-il possible de protéger par un mot de passe une application Mac spécifique ?

Par exemple, je suis intéressé par la protection de Mail car même si vous ne pouvez pas récupérer les nouveaux courriels, vous pouvez toujours lire tous les courriels déjà reçus.

Il ne s'agit pas d'une question de sécurité. Il s'agit de partager un appareil au sein d'une famille. Je n'ai pas d'informations cruciales. Je veux juste éviter que ma fille ou mon fils envoie accidentellement des e-mails à partir de mon compte ou les empêcher de lire certains d'entre eux.

27voto

Christopher Scott Points 665

En ce qui concerne votre commentaire sur la réponse de Paul, voulant quitter votre ordinateur pour un moment : vous devez verrouiller votre ordinateur. Point final.

Ouvrez les Préférences Système, cliquez sur Sécurité (rangée supérieure, avant-dernière option), sous l'onglet "Général", cochez la case "Demander un mot de passe [immédiatement] après la mise en veille ou l'économiseur d'écran".

Puis, lorsque vous vous éloignez de votre ordinateur ;

Ctrl + Shift + Eject

(Notes supplémentaires : cliquez sur la ligne ci-dessus).

Verrouillez votre Mac. Partez. Revenez, entrez votre mot de passe pour le déverrouiller. Console sécurisée.

11voto

erichui Points 1488

C'est possible en utilisant scripts.

Tout d'abord, vous devez activer le menu script dans la barre de menu d'OS X. Lisez la section "Menu script" ici : Activez le menu script.

Maintenant ouvrez votre dossier Library/scripts et créez un fichier appelé "run_with_password.rb" avec ce contenu (changez "johndoe" par votre nom d'utilisateur) :

#!/usr/bin/env ruby
# run an app at lower privilege

require 'etc'
require 'find'

# Note: anyone with sudo access will be able to run as this user. But they could do that anyway.
# run 'id' at the terminal to find out what your username is.
RUN_USER = 'johndoe'

def get_root_info
  root_entry = Etc.getpwnam('root')
  return root_entry.uid, root_entry.gid
end

ROOT_UID, ROOT_GID = get_root_info

def ensure_root
  Process.uid = ROOT_UID
  Process.gid = ROOT_GID
end

def print_user_info
  [
   [:uid, Process.uid],
   [:gid, Process.gid],
   [:euid, Process.euid],
   [:egid, Process.egid],
  ].each do |arr|
    $stderr.puts arr.inspect
  end
end

def set_effective(euid, egid)
  $stderr.puts "setting effective to #{[euid, egid].inspect}"  if $DEBUG
  # must set group first
  Process.egid = egid
  Process.euid = euid
end

def do_privileged(&block)
  orig_euid = Process.euid
  orig_egid = Process.egid
  begin
    $stderr.puts "raising privileges"  if $DEBUG
    set_effective(ROOT_UID, ROOT_GID)
    yield orig_euid, orig_egid
  ensure
    $stderr.puts "lowering privileges"  if $DEBUG
    set_effective(orig_euid, orig_egid)
  end
end

# must be called after ROOT_UID, ROOT_GID are set
def chmod_files_in_dir(mode, dir)
  mode_str = nil
  case mode
  when Integer
    mode_str = '%o' % mode
  when String
    mode_str = mode
  else
    raise TypeError
  end
  chmod_proc = proc do
    Find.find(dir) {|entry|
      if File.directory?(entry) and entry != dir
        Find.prune  # don't recurse into subdirs
      elsif File.file?(entry)
        $stderr.puts "chmod #{mode_str} #{entry}"  if $DEBUG
        system 'chmod', mode_str, entry
      end
    }
  end
  # assume that if dir is owned by root, the executables are also.
  if File.stat(dir).uid == ROOT_UID
    do_privileged(&chmod_proc)
  else
    chmod_proc.call
  end
end

def main(argv)
  # Important: this is to abort if we're not running as root.
  ensure_root

  app_path = argv.shift or raise "Need path to .app file, e.g. /Applications/Mail.app"
  app_macos_dir = File.join(app_path, 'Contents/MacOS')
  File.directory?(app_path) or raise "#{app_path} is not an app bundle"
  File.directory?(app_macos_dir) or raise "#{app_path} bundle doesn't have expected MacOS structure"

  pw_entry = Etc.getpwnam(RUN_USER)
  run_uid = pw_entry.uid
  run_gid = pw_entry.gid

  if $DEBUG
    $stderr.puts [:run_uid, run_uid].inspect
    $stderr.puts [:run_gid, run_gid].inspect
    print_user_info
  end

  # Effectively become RUN_USER
  set_effective(run_uid, run_gid)

  if $DEBUG
    print_user_info
  end

  begin
    chmod_files_in_dir('+x', app_macos_dir)
    # 'open' is asynchronous, so the ensure will run immediately after, and before the app exits.
    $stderr.puts "Running app: #{app_path}"  if $DEBUG
    system 'open', app_path
  ensure
    chmod_files_in_dir('-x', app_macos_dir)
  end
end

if __FILE__ == $0
  $DEBUG = false
  main(ARGV)
end

Ensuite, lancez l'éditeur script et collez ce code (en remplaçant à nouveau johndoe par votre nom d'utilisateur) :

do shell script "ruby /Users/johndoe/Library/Scripts/run_with_password.rb /Applications/Mail.app" with administrator privileges

Enregistrez le fichier dans Library/scripts sous le nom de "mail_with_password", en vous assurant que le Format du fichier est "scripts".

Maintenant "mail_with_password" apparaîtra dans votre menu script. Chaque fois que vous l'exécuterez, il vous demandera votre mot de passe (comme le font certains installateurs). Une fois qu'il aura fini de s'exécuter, il désactivera l'accès à l'application Mail ordinaire. Exécutez donc le script une fois, puis essayez de lancer l'application Mail. Elle ne fonctionnera pas. Notez que cela signifie que TOUS les utilisateurs de votre machine seront empêchés d'exécuter directement Mail, et pas seulement votre utilisateur.

Si vous voulez à nouveau permettre à Mail de fonctionner normalement, exécutez cette commande dans le Terminal :

sudo chmod +x /Applications/Mail.app/Contents/MacOS/Mail

Vous pouvez peut-être omettre le "sudo". Utilisez sudo si vous obtenez "Operation not permitted". Notez que sudo vous demandera votre mot de passe pour permettre une opération privilégiée.

Avertissements

  1. Si vous n'avez pas eu besoin de la commande "sudo" ci-dessus pour effectuer le chmod, cela signifie qu'un utilisateur avisé pourrait être en mesure de comprendre comment réactiver l'application Mail. Vous pouvez renforcer la sécurité en changeant le propriétaire du fichier MacOS/Mail en Root. C'est un exercice pour le lecteur.
  2. Si quelqu'un parvient à copier l'application Mail sur votre ordinateur (par exemple, via une clé USB), il peut toujours accéder à votre courrier.
  3. Le ruby script est destiné à fonctionner pour la plupart des paquets d'applications OS X. Je ne recommande pas de modifier le ruby script à moins que vous ne sachiez vraiment ce que vous faites, car il fait certaines choses en tant que Root (l'utilisateur privilégié). Modifier le code applescript devrait être inoffensif ; mais vous devriez savoir comment ajuster la commande chmod pour rendre votre application directement exécutable à nouveau.
  4. Si le chemin d'accès à l'application dans le fichier applescript contient des espaces ou d'autres caractères spéciaux, vous devrez faire quelque chose comme mettre des guillemets simples autour de tout le chemin.
  5. Edit : L'utilisateur Austin a suggéré que cette procédure ne protège pas les fichiers .emlx. En fait, je n'utilise pas l'application Mail et je ne suis pas familier avec le stockage des données. Des problèmes similaires s'appliquent à toutes les apps - car cette solution ne cache pas les données de l'utilisateur.

Paranoïa

Si quelqu'un qui connaît ruby obtient l'accès à votre utilisateur connecté, il pourrait modifier le script ruby d'une manière qui provoque toutes sortes de ravages lorsque vous exécutez le script, puisqu'il s'exécute en tant que Root pendant une partie du temps. Si vous pensez que cela pourrait se produire, vous devriez rendre le script uniquement accessible en écriture par Root. Vous devrez également vous assurer que quelqu'un ne remplace pas le script par le sien - il peut le faire si le dossier est accessible en écriture par vous. Si vous commencez à être effrayé par ces avertissements et que vous ne savez pas comment vous protéger, vous devriez probablement oublier cette solution et vous souvenir de verrouiller votre écran lorsque vous quittez l'ordinateur.

10voto

ggasp Points 608

Vous pouvez simplement définir un contrôle parental sur le compte et déterminer ensuite quelles applications peuvent être utilisées.

Vous pouvez également définir un mot de passe pour votre économiseur d'écran et définir un "coin chaud" pour activer l'économiseur d'écran. Ainsi, lorsque vous vous éloignez de votre ordinateur, il vous suffit de déplacer la souris dans le coin chaud pour verrouiller l'écran de manière à ce qu'un mot de passe soit nécessaire pour y accéder.

7voto

Oskar Points 1242

Oui, il existe plusieurs façons pratiques de protéger votre courrier par un mot de passe. Puisque vous êtes préoccupé par les enfants/membres de votre famille, le plus simple serait de restreindre ces applications à l'aide du contrôle parental de l'application votre compte. À un moment donné, ils peuvent avoir leurs propres comptes, et vous pouvez verrouiller l'ensemble de votre compte.


Voici les options qui me semblent réalisables dans le cas général du verrouillage des applications ou des données auxquelles elles ont accès.

  1. Faites de votre compte un compte parental protégé et mettez en liste blanche les applications que vous souhaitez autoriser. Vous connaîtrez l'utilisateur/mot de passe administrateur distinct pour autoriser le lancement des applications interdites. Voilà, toutes les applications que vous voulez sont maintenant protégées par un mot de passe.

  2. Déplacez l'application dans une image disque protégée par un mot de passe, puis créez un alias à stocker dans le dossier Applications. (en supprimant d'abord l'application d'origine) Lorsqu'un programme tente d'accéder à l'application, vous avez la possibilité d'entrer un mot de passe et le Finder montera l'image disque. Vous pouvez également script des changements de permission et d'autres astuces techniques pour exiger un mot de passe avant d'exécuter le script pour rendre l'app exécutable à nouveau.

  3. Stockez les données de l'application dans un image disque cryptée et protégée par un mot de passe . Voici quelques les applications courantes et les dossiers où elles stockent les données des utilisateurs .

  4. Stockez votre application de messagerie sur un disque amovible - il existe une industrie artisanale de création de paquets d'applications autonomes pour exécuter des applications à partir de disques USB.

Gardez à l'esprit que des choses comme Spotlight et d'autres applications utilisant des frameworks au sein d'applications ne fonctionneront pas aussi bien tant que les images ne seront pas montées. Si votre mot de passe d'utilisateur est sécurisé (par rapport aux personnes dont vous ne voulez pas qu'elles voient les données), vous pouvez stocker les mots de passe de l'image disque dans le trousseau.

De plus, à moins que vous ne protégiez les fichiers de données, il ne s'agit que d'une sécurité par l'obscurité et quelqu'un pourrait copier vos données ailleurs ou simplement les regarder à partir de Spotlight ou d'autres applications comme l'édition de texte. Il pourrait également apporter une copie de l'application de messagerie (ou de toute autre application) depuis un autre ordinateur. Les applications peuvent être exécutées depuis n'importe où et pas seulement depuis le dossier Applications, une fois qu'un utilisateur administrateur les a approuvées pour la première exécution sur ce système.

Par conséquent, le numéro 3 est la seule solution possible. Verrouillez vos données et ne vous inquiétez pas pour les applications.

6voto

That_Knight_Guy Points 1646

Voici un utilitaire Mac qui fera ce que vous demandez. Il peut protéger les applications individuelles par un mot de passe. Vous pouvez également définir une valeur de délai d'attente qui quittera l'application après avoir été inactive pendant la durée sélectionnée.

Bloqueur d'applications pour Mac

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