28 votos

¿Hay alguna forma de proteger con contraseña las aplicaciones individuales?

¿Es posible proteger con contraseña una aplicación específica de Mac?

Por ejemplo, me interesa proteger a Mail porque aunque no se puedan recuperar los correos nuevos, se pueden leer todos los ya recibidos.

No se trata de una cuestión de seguridad. Se trata de compartir un dispositivo dentro de una familia. No tengo información crucial. Sólo quiero evitar que mi chica o mi hijo envíen accidentalmente correos electrónicos desde mi cuenta o impedir que lean algunos de ellos.

30 votos

Esto parece un ejemplo de la Problema XY . Quieres evitar que la gente husmee en tu correo electrónico (X), así que preguntas sobre cómo proteger tu programa de correo electrónico (Y). Lo que realmente querrías preguntar es What's the best way to protect my email from snooping? Y la respuesta sería que lo mejor es impedir por completo que usuarios no autorizados utilicen su cuenta, por ejemplo, exigiendo una contraseña para desactivar el salvapantallas o después de despertar el sistema de la suspensión.

3 votos

Upvote para el comentario de @Austin. Aunque impidas que Mail.app se abra, no habrás evitado que alguien acceda a tu correo electrónico. Mail.app mantiene tu correo electrónico en texto plano en el disco en ~/Library/Application Support -- Si alguien quiere tu correo electrónico, sabrá que tiene que coger los archivos de ahí y se los llevará.

0 votos

@Ian Creo que el texto plano .emlx se encuentran en realidad en ~/Library/Mail pero su punto es bien entendido.

27voto

Christopher Scott Puntos 665

Respecto a tu comentario sobre la respuesta de Paul, queriendo dejar tu ordenador por un momento: tienes que bloquear tu ordenador. Y punto.

Abra las Preferencias del Sistema, haga clic en Seguridad (fila superior, penúltima opción), en la pestaña "General", marque la casilla de "Requerir contraseña [inmediatamente] después de que se inicie la suspensión o el protector de pantalla".

Entonces, cuando vayas a alejarte de tu ordenador;

Ctrl + Shift + Eject

(Notas adicionales: Haga clic en la línea anterior).

Bloquea tu Mac. Aléjate. Vuelve, introduce tu contraseña para desbloquearlo. Consola asegurada.

3 votos

+1 Paul fue el primero en mencionar esto en un comentario debajo de su propia respuesta, pero como todavía no lo ha integrado en su propia respuesta, voy a votar esto. Me gustaría poder dar este +3 por you have to lock your computer. Period.

0 votos

-1 ya que esto es ahora la respuesta a la pregunta formulada. El OP pregunta, de manera excéntrica, por la protección de las aplicaciones individuales con contraseña en una cuenta multiusuario. Otro escenario: Hay otro administrador que puede fácilmente restablecer su contraseña y por que el inicio de sesión como usted y acceder a todas sus aplicaciones.

0 votos

Lo he abordado en mi primera frase. Además, si hay otra cuenta de administrador local, no se puede proteger con contraseña una aplicación lejos de ellos. Simplemente no es posible.

11voto

erichui Puntos 1488

Es posible utilizando scripts.

En primer lugar, debes activar el menú script de la barra de menús de OS X. Lee la sección "Menú script" aquí: Habilitar el menú script

Ahora abre tu carpeta Library/scripts y crea un archivo llamado "run_with_password.rb" con estos contenidos (cambia "johndoe" por tu nombre de usuario):

#!/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

A continuación, inicia el editor de script y pega este código (de nuevo cambiando johndoe por tu nombre de usuario):

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

Guarde el archivo en Library/scripts como "mail_with_password", asegurándose de que el Formato de Archivo es "scriptsscriptscripts".

Ahora "mail_with_password" aparecerá en tu menú script. Cada vez que lo ejecutes, te pedirá tu contraseña (como hacen algunos instaladores). Cuando termine de ejecutarse, deshabilitará el acceso a la aplicación normal de Mail. Así que ejecuta el script una vez, y luego intenta ejecutar la aplicación Mail. No se ejecutará. Tenga en cuenta que esto significa que TODOS los usuarios de su máquina no podrán ejecutar Mail directamente, no sólo su usuario.

Si quieres que Mail vuelva a funcionar normalmente, ejecuta este comando en el Terminal:

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

Puede omitir el "sudo". Utiliza sudo si obtienes "Operación no permitida". Tenga en cuenta que sudo le pedirá su contraseña para permitir la operación privilegiada.

Advertencias

  1. Si no has necesitado el comando "sudo" de arriba para hacer el chmod, eso significa que un usuario experto podría ser capaz de averiguar cómo habilitar la aplicación Mail de nuevo. Puedes reforzar la seguridad cambiando el propietario del archivo MacOS/Mail a Root. Esto se deja como un ejercicio para el lector.
  2. Si alguien es capaz de copiar la aplicación Mail en tu ordenador (por ejemplo, a través de una unidad USB) puede seguir accediendo a tu correo.
  3. El ruby script está pensado para funcionar con la mayoría de los paquetes de aplicaciones de OS X. No recomiendo ajustar el ruby script a menos que realmente sepas lo que estás haciendo porque está haciendo ciertas cosas como Root (el usuario privilegiado). Ajustar el código de applescript debería ser inofensivo; pero deberías saber cómo ajustar el comando chmod para hacer que tu aplicación sea directamente ejecutable de nuevo.
  4. Si la ruta a la aplicación en el archivo applescript tiene espacios u otros caracteres especiales, tendrás que hacer algo como poner comillas simples alrededor de toda la ruta.
  5. Edición: El usuario Austin sugirió que este procedimiento no protege los archivos .emlx. En realidad, no uso la aplicación Mail, así que no estoy familiarizado con el almacenamiento de datos. Los problemas similares se aplican a todas las aplicaciones - porque esta solución no oculta los datos del usuario.

Paranoia

Si alguien que sabe ruby tiene acceso a su usuario conectado, podría modificar el ruby script de manera que cause todo tipo de estragos cuando se ejecute el script, ya que se ejecuta como Root durante parte del tiempo. Si crees que esto puede ocurrir, debes hacer que el script sólo pueda ser escrito por Root. También tendrás que asegurarte de que alguien no reemplaza el script con el suyo propio - pueden hacerlo si la carpeta es escribible por ti. Si estás empezando a asustarte por estas advertencias y no sabes cómo protegerte, probablemente deberías olvidarte de esta solución y simplemente recordar bloquear tu pantalla cuando dejes el ordenador.

0 votos

Wow, ¿3 upvotes en 4 horas? No esperaba que mucha gente utilizara este hack, sobre todo porque hay que crear un applescript para cada aplicación que quieras proteger. Me gustaría saber cómo utiliza la gente mi solución, aunque sólo sea para aprender nuevos trucos.

8 votos

-1, pero espero que esto no se tome como algo personal. Me gusta mucho el nivel de detalle aquí, y está claro que se ha pensado mucho en esto, pero creo que esta solución da una falsa sensación de seguridad peligrosa. Una gran advertencia que no has mencionado es que no impide el acceso al texto plano .emlx archivos de correo almacenados en ~/Library/Mail .

3 votos

@Austin tienes derecho a tu downvote por supuesto, pero no entiendo tu razón. Creo que mis secciones de advertencias y paranoia deberían ser suficientes para indicar que esto no pretende ser una solución segura, sólo es un elemento disuasorio. Añadí tu advertencia, pero es esencialmente la misma idea detrás de la advertencia #2. Además, el OP dijo que no le importaba que otra persona leyera "correos electrónicos ya recuperados".

10voto

ggasp Puntos 608

Sólo tienes que establecer el control parental en la cuenta y luego determinar qué aplicaciones se pueden utilizar.

Alternativamente, puedes establecer una contraseña en tu protector de pantalla y también definir una "esquina caliente" adecuada para activar el protector de pantalla - de esa manera, cuando te alejes de tu ordenador, puedes simplemente mover el ratón a la esquina caliente para bloquear efectivamente la pantalla de tal manera que requiera una contraseña para acceder.

0 votos

No, quiero poder dejar mi ordenador conectado durante unos instantes y estar seguro de que nadie puede leer mis correos electrónicos recibidos (si Mail no está ya iniciado), por ejemplo. Pero más generalmente, que nadie pueda lanzar una aplicación, hacer algunas cosas y salir durante mi ausencia.

10 votos

En ese caso, simplemente establezca una "esquina caliente" en el protector de pantalla y requiera una contraseña para salir del protector de pantalla. Cuando salgas de tu Mac entonces empuja el ratón en la esquina caliente para bloquear la pantalla.

0 votos

O establecer el tiempo de espera del protector de pantalla para que sea corto - Mail no será necesariamente la única aplicación que quieras ocultar

7voto

Oskar Puntos 1242

Sí, hay varias formas de proteger el correo con contraseña. Dado que te preocupan los niños y los miembros de tu familia, lo más fácil sería restringir esas aplicaciones mediante el control parental en su cuenta. En algún momento pueden tener sus propias cuentas, y puedes bloquear toda tu cuenta.


Estas son las opciones que veo viables para el caso general de bloquear aplicaciones o los datos a los que pueden acceder las aplicaciones.

  1. Haz que tu cuenta sea una cuenta parental protegida y pon en la lista blanca las aplicaciones que quieres permitir. Conocerás el usuario/contraseña del administrador para permitir el lanzamiento de las aplicaciones prohibidas. Voilà - cualquier aplicación que quieras está ahora protegida por contraseña.

  2. Mueve la aplicación a una imagen de disco protegida por contraseña y luego haz un alias para almacenarla en la carpeta de aplicaciones. (borrando primero la aplicación original) Cuando cualquier programa intente acceder a la aplicación, tendrás la oportunidad de introducir una contraseña y el finder montará la imagen de disco. También puedes cambiar los permisos del script y otros trucos técnicos para requerir una contraseña antes de ejecutar el script para hacer que la app se pueda ejecutar de nuevo.

  3. Almacenar los datos de la aplicación en un imagen de disco encriptada y protegida por contraseña . Aquí hay algunos aplicaciones comunes y las carpetas donde almacenan los datos del usuario .

  4. Almacena tu aplicación de correo en una unidad extraíble: hay una industria artesanal que fabrica paquetes de aplicaciones independientes para ejecutarlas desde unidades USB.

Ten en cuenta que cosas como Spotlight y otras aplicaciones que utilizan frameworks dentro de las aplicaciones no funcionarán tan bien hasta que las imágenes estén montadas. Si tu contraseña de usuario es segura (de las personas que no quieres que vean los datos) entonces puedes almacenar las contraseñas de las imágenes de disco en el llavero.

Además - a menos que protejas los archivos de datos - es sólo seguridad por oscuridad y alguien podría copiar tus datos en otro lugar o simplemente mirarlos desde spotlight u otras aplicaciones como la edición de texto. También podrían traer una copia de la aplicación de correo (o cualquier otra) desde otro ordenador. Las aplicaciones pueden ejecutarse desde cualquier lugar y no sólo desde la carpeta de aplicaciones una vez que un usuario administrador las bendice para la primera ejecución en ese sistema.

Por lo tanto, el #3 es el único camino a seguir. Bloquea tus datos y no te preocupes por las aplicaciones.

6voto

Styler2go Puntos 61

Aquí hay una utilidad para Mac que hará lo que pides. Puede proteger con contraseña aplicaciones individuales. Además, puede establecer un valor de tiempo de espera que saldrá de la aplicación después de estar inactiva durante el tiempo seleccionado.

Bloqueador de aplicaciones para Mac

2 votos

Mac App Blocker es exactamente lo que está buscando. Como técnico de Apple, llevamos años recibiendo esta petición (¿recuerdas Oulook 2001?). A los usuarios no les preocupa que sus hijos o compañeros de trabajo vayan a rebuscar en las carpetas de la Biblioteca para sacar los archivos .emlx y leerlos. Esa no es la cuestión: no les importa dejar que otros usen su Mac, simplemente no quieren que lean sus correos electrónicos. Simple y llanamente. El Mac App Blocker hace lo que hace y eso es todo lo que necesitan que haga.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X