Existe uma maneira de proteger com senha aplicativos individuais?

27

É possível proteger com senha um aplicativo Mac específico?

Por exemplo, estou interessado em proteger o Mail porque, mesmo que você não possa recuperar novos emails, ainda poderá ler todos os emails já recebidos.

Esta não é uma pergunta sobre segurança. É sobre compartilhar um dispositivo dentro de uma família. Eu não tenho informações cruciais. Eu só quero evitar que minha filha ou filho enviem e-mails acidentalmente da minha conta ou impedi-los de ler alguns deles.

Pierre Watelet
fonte
30
Isso soa como um exemplo do problema XY . Você deseja impedir que as pessoas bisbilhotem seu e-mail (X), por isso está perguntando como proteger seu programa de e-mail (Y). O que você realmente gostaria de perguntar é What's the best way to protect my email from snooping? E a resposta é que é melhor impedir completamente que usuários não autorizados usem sua conta - por exemplo, exigindo uma senha para desativar o protetor de tela ou após acordar o sistema.
Austin
3
Voto positivo para o comentário de @ Austin. Mesmo que você impeça a abertura do Mail.app, não impedirá que alguém acesse seu email. O Mail.app mantém seu e-mail em texto sem formatação no disco ~/Library/Application Support- se alguém quiser o seu e-mail, saberá apenas pegar os arquivos de lá e sair com eles.
Ian C.
4
@ Todo mundo: Esta não é uma pergunta sobre segurança. É sobre compartilhar um dispositivo dentro de uma família. Eu não tenho informações cruciais. Eu só quero evitar que minha filha ou filho enviem e-mails acidentalmente da minha conta ou impedi-los de ler alguns deles.
Pierre Watelet 22/09
1
Isso fica muito mais claro - basta ler as palavras, isso levou a muitas ramificações que você simplesmente não tem com crianças e acidentes. Estou curioso para saber que, neste caso, você acabou de configurar suas próprias contas ou usou minha sugestão para controlar os pais de alguns dos aplicativos da sua conta ... (Ou apenas responda você mesmo - você pode dizer o que escolheu e as pessoas provavelmente não vai continuar a tentar ajudar a fazer melhores respostas supondo que você ainda estavam procurando uma solução)
bmike
4
→ Rabskatran: seu problema é um problema básico de segurança. Sua necessidade é básica: controle quem lê seus arquivos (que inclui o email armazenado). Se eu acertasse o seu problema ☂, votaria no conselho de Mike: uma conta para todos ! É grátis :).
dan

Respostas:

27

Em relação ao seu comentário sobre a resposta de Paul, querendo deixar o computador por um momento: você precisa bloquear o computador. Período.

Abra Preferências do Sistema, clique em Segurança (linha superior, penúltima opção), na guia "Geral", marque a caixa "Requer senha [imediatamente] após o sono ou a proteção de tela começar".

Então, quando você se afasta do seu computador;

Ctrl ⌃+ Shift ⇧+Eject ⏏

(Notas adicionais: clique na linha acima.)

Bloqueie o seu Mac. Ir embora. Volte, digite sua senha para desbloqueá-la. Console seguro.

Jason Salaz
fonte
3
+1 Paulo foi o primeiro a mencionar isso em um comentário abaixo de sua própria resposta, mas como ele ainda não o integrou em sua própria resposta, vou votar. Eu gostaria de poder dar este +3 parayou have to lock your computer. Period.
Austin
-1, pois agora é a resposta para a pergunta. O OP solicita, de forma explícita, a senha que protege aplicativos individuais em uma conta multiusuário. Outro cenário: há outro administrador que pode redefinir facilmente sua senha e fazer login como você e acessar todos os seus aplicativos.
Leymannx
Abordei isso na minha primeira frase. Além disso, se houver outra conta de administrador local, você não poderá proteger um aplicativo com senha. Simplesmente não é possível.
21817 Jason Salaz
10

Você pode simplesmente definir o controle dos pais na conta e determinar quais aplicativos podem ser usados.

Como alternativa, você pode definir uma senha no protetor de tela e também definir um "canto quente" adequado para ativar o protetor de tela - assim, quando você se afasta do computador, basta mover o mouse para o canto quente para bloquear efetivamente a tela, que exige uma senha para obter acesso.

Paul R
fonte
Não, quero poder deixar meu computador conectado por alguns instantes e ter certeza de que ninguém pode ler meus e-mails recebidos (se o Mail ainda não tiver sido iniciado), por exemplo. Mas, mais geralmente, ninguém seria capaz de iniciar um aplicativo, fazer algumas coisas e sair durante a minha ausência.
Pierre Watelet
10
Nesse caso, basta definir um "canto quente" no protetor de tela e solicitar uma senha para sair do protetor de tela. Quando você sair do Mac, empurre o mouse no canto quente para bloquear a tela.
Paul R
ou definir o tempo limite para a proteção de tela para ser curto - Mail não será necessariamente o único aplicativo que você deseja esconder
user151019
Portanto, não é possível definir um passoword em uma App ...
Pierre Watelet
1
@Paul +1 Eu recomendaria editar essa ótima sugestão sobre como configurar o protetor de tela protegido por senha diretamente na sua resposta.
Austin
9

É possível usando scripts.

Primeiro, você deve ativar o menu de script na barra de menus do OS X. Leia a seção "Menu Script" aqui: Habilite o menu Script

Agora abra sua pasta Library / Scripts e crie um arquivo chamado "run_with_password.rb" com este conteúdo (altere "johndoe" para seu nome de usuário):

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

Em seguida, inicie o Editor de scripts e cole neste código (novamente alterando johndoe para seu nome de usuário):

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

Salve o arquivo na Biblioteca / Scripts como "mail_with_password", certificando-se de que o Formato do arquivo seja "Script".

Agora "mail_with_password" aparecerá no seu menu de script. Toda vez que você o executa, solicita sua senha (assim como alguns instaladores). Depois de terminar a execução, desabilitará o acesso ao aplicativo Mail normal. Portanto, execute o script uma vez e tente executar o aplicativo Mail. Não vai correr. Observe que isso significa que TODOS os usuários da sua máquina serão impedidos de executar o Mail diretamente, não apenas o seu usuário.

Se você quiser permitir que o Mail seja executado normalmente novamente, execute este comando no Terminal:

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

Você pode omitir o "sudo". Use sudo se você receber "Operação não permitida". Observe que o sudo solicitará sua senha para permitir uma operação privilegiada.

Ressalvas

  1. Se você não precisou do comando "sudo" acima para executar o chmod, isso significa que um usuário experiente poderá descobrir como habilitar o aplicativo Mail novamente. Você pode aumentar a segurança alterando o proprietário do arquivo MacOS / Mail para root. Isso é deixado como um exercício para o leitor.
  2. Se alguém puder copiar o aplicativo Mail para o seu computador (por exemplo, via unidade USB), ainda poderá obter acesso ao seu email.
  3. O script ruby ​​deve funcionar para a maioria dos pacotes de aplicativos OS X. Eu não recomendo ajustar o script ruby, a menos que você realmente saiba o que está fazendo, porque ele está fazendo certas coisas como root (o usuário privilegiado). Ajustar o código AppleScript deve ser inofensivo; mas você deve saber como ajustar o comando chmod para tornar seu aplicativo executável diretamente novamente.
  4. Se o caminho para o aplicativo no arquivo AppleScript tiver espaços ou outros caracteres especiais, será necessário colocar aspas simples em todo o caminho.
  5. Edit: O usuário Austin sugeriu que este procedimento não protege os arquivos .emlx. Na verdade, eu não uso o aplicativo Mail, por isso não estou familiarizado com o armazenamento de dados. Problemas semelhantes se aplicam a todos os aplicativos - porque esta solução não oculta os dados do usuário.

Paranóia

Se alguém que conhece ruby ​​obtém acesso ao seu usuário conectado, ele pode modificar o script ruby ​​de uma maneira que causa todo tipo de confusão quando você executa o script, pois ele é executado como raiz por parte do tempo. Se você acha que isso pode acontecer, você deve tornar o script gravável somente pela raiz. Você também precisará garantir que alguém não substitua o script pelo próprio - eles podem fazer isso se a pasta for gravável por você. Se você está começando a ficar assustado com esses avisos e não sabe como se proteger, provavelmente deve esquecer esta solução e lembre-se de bloquear a tela quando sair do computador.

Kelvin
fonte
Uau, 3 votos positivos em 4 horas? Eu não esperava que muitas pessoas usassem esse tipo de hack, principalmente porque você precisa criar um AppleScript para cada aplicativo que deseja proteger. Gostaria de ouvir como as pessoas estão usando minha solução, mesmo que apenas para aprender novos truques.
Kelvin12 /
8
-1, mas espero que isso não seja levado pessoalmente. Eu realmente gosto do nível de detalhe aqui, e é claro que muita reflexão foi feita sobre isso, mas acho que essa solução fornece uma falsa sensação de segurança perigosa. Uma grande ressalva que você não mencionou é que ela não impede o acesso aos .emlxarquivos de texto sem formatação armazenados em ~/Library/Mail.
Austin
3
@ Austin, você tem direito ao voto negativo, é claro, mas eu não entendo sua razão. Acho que minhas seções de advertências e paranóia devem ser suficientes para indicar que essa não é uma solução segura - é apenas um impedimento. Eu adicionei sua ressalva, mas é essencialmente a mesma idéia por trás da advertência nº 2. Além disso, o OP disse que não se importava com outra pessoa lendo "e-mails já recuperados".
Kelvin
3
Eu admiro muitas coisas complicadas que nunca vou usar na vida real. Este é um - Kelvin bem feito - você ganhou um +1 de mim nisso. :-) Duvido que seja a "melhor" resposta possível para esta pergunta, mas espero que consiga uma menção honrosa.
Bmike
Eu acho que você está entendendo mal essa parte da pergunta (concedido, provavelmente poderia ser melhor formulado). @ Rabskatran - corrija-me se estiver errado, mas estou bastante confiante de que o OP estava tentando explicar o motivo de querer proteger o aplicativo com senha. Parafraseando, embora um snoop não seria capaz de recuperar novo correio (presumivelmente porque a senha da conta não foi armazenado no Mail), que iria ser capaz de ler existente de correio baixado, e é por isso que uma OP queria a proteção por senha .
Austin
5

Sim - várias maneiras de proteger seus e-mails com senha são práticas. Como você está preocupado com filhos / familiares, o mais fácil pode ser restringir esses aplicativos usando o Controle dos Pais na sua conta. Em algum momento, eles podem ter suas próprias contas e você pode bloquear toda a sua conta.


Aqui estão as opções que considero viáveis ​​para o caso geral de aplicativos de bloqueio ou que os aplicativos de dados podem acessar.

  1. Torne sua conta uma conta parental protegida e faça uma lista branca dos aplicativos que você deseja permitir. Você saberá o usuário / senha de administrador separados para permitir o lançamento de aplicativos proibidos. Voila - qualquer aplicativo que você deseja agora está protegido por senha.

  2. Mova o aplicativo para uma imagem de disco protegida por senha e crie um alias para armazenar na pasta Aplicativos. (excluindo o aplicativo original primeiro) Quando qualquer programa tenta acessar o aplicativo, você tem a chance de inserir uma senha e o localizador montará a imagem do disco. Você também pode alterar as permissões de script e outros truques técnicos para exigir uma senha antes de executar o script para tornar o aplicativo executável novamente.

  3. Armazene os dados do aplicativo em uma imagem de disco criptografada protegida por senha . Aqui estão alguns aplicativos comuns e as pastas em que eles armazenam dados do usuário .

  4. Armazene seu aplicativo de e-mail em uma unidade removível - existe uma indústria caseira sobre a criação de pacotes de aplicativos independentes para executar aplicativos de unidades USB.

Lembre-se de coisas como holofotes e outros aplicativos que usam estruturas dentro de aplicativos não funcionarão tão bem até que as imagens sejam montadas. Se sua senha de usuário for segura (das pessoas que você não deseja ver os dados), você poderá armazenar as senhas da imagem do disco no chaveiro.

Além disso - a menos que você proteja os arquivos de dados - é apenas segurança pela obscuridade e alguém pode copiar seus dados em outro lugar ou apenas observá-los a partir dos holofotes ou de outros aplicativos como edição de texto. Eles também podem trazer uma cópia do aplicativo de email (ou qualquer outro) de outro computador. Os aplicativos podem ser executados de qualquer lugar e não apenas da pasta Aplicativos, uma vez que um usuário administrador os abençoe pela primeira execução nesse sistema.

Portanto, o nº 3 é o único caminho a percorrer. Bloqueie seus dados e não se preocupe com os aplicativos.

bmike
fonte
5

Aqui está um utilitário para Mac que fará o que você está pedindo. Pode proteger com senha aplicativos individuais. Além disso, você pode definir um valor de tempo limite que sairá do aplicativo após ficar inativo pelo tempo selecionado.

Bloqueador de aplicativos para Mac

Ken
fonte
1
O Mac App Blocker é exatamente o que ele está procurando. Como técnico da Apple, recebemos esse pedido por essa capacidade há anos (lembra-se de Oulook 2001?). Os usuários não estão preocupados com o fato de seus filhos ou colegas de trabalho explorarem as pastas da Biblioteca para extrair arquivos .emlx e lê-los. Esse não é o ponto - eles não se importam em deixar os outros usarem o Mac, eles simplesmente não querem que eles leiam seus e-mails. Claro e simples. O Mac App Blocker faz o que faz e é tudo o que eles precisam.
2

É um tópico antigo que eu conheço, mas tive o mesmo problema que você ... Aqui está a solução: Um aplicativo chamado iLock. Protege aplicativos únicos com uma senha após sua escolha. Simples, eficiente e totalmente gratuito! https://www.macupdate.com/app/mac/49881/ilock

user75894
fonte
1

Hmm. Eu queria fazer isso por um tempo agora. Vamos dar outro exemplo que não mantém arquivos locais, a menos que seja solicitado - programas de bate-papo como Skype ou Trillian, por exemplo. O problema dos controles dos pais é que você não pode ser um usuário administrador na máquina E ter controles dos pais na sua conta de usuário administrador.

Minha sugestão seria simplesmente fazer o seguinte:

chmod 600 /Applications/Trillian.app ; chown `whoami`:staff /Applications/Trillian.app

Isso impede qualquer um de executá-lo, mas o marca como seu

Então, para executá-lo,

sudo /Applications/Trillian.app/Contents/MacOS/Trillian

Isso ultrapassa as 600 (rw- --- ---) permissões de acesso acima e você precisará digitar uma senha de administrador para executá-la.

Você também pode examinar o bit setuid e ver se isso ajuda (faça o aplicativo funcionar como outro usuário, em outras palavras).

John
fonte
a propósito, o "whoami" acima deve ter sotaques graves ou reticências em ambos os lados. O material anti-hackers neste site retirou essas marcas.
John
2
Fixo. Sinta-se livre para clicar em editar e ver como eu o corrigi.
Jason Salaz 22/09
1

Que tal configurar contas de usuário separadas com seu próprio ID de maçã, email com restrições dos pais ou nenhum email. Os aplicativos podem ser compartilhados por diferentes contas. Dependendo da idade de seus filhos, se eles tiverem capacidade de administrador, ou seja, sua conta, eles poderão prejudicá-la sem querer. Com você como administrador, você pode controlar o que eles podem fazer com a conta deles.

rclyde
fonte
1

Contas separadas é a solução para esse problema.

O e-mail pode ser o mais óbvio, mas haverá alguns arquivos ou indicadores importantes, ou abas bancárias abertas, etc., que podem ser igualmente ruins para uma criança excluir / abrir / mexer aleatoriamente.

Contas separadas (com apenas pais como administradores) significa que você pode manter os arquivos, e-mails, configurações etc. de todos separados, mesmo que os aplicativos sejam acessíveis a todos.

Se o usuário X usar o aplicativo Mail, seus e-mails e configurações de conta estarão acessíveis apenas quando estiverem conectados. Quando o usuário Y abrir o Mail, eles terão suas próprias contas / email, mesmo que ambos estejam usando o mesmo aplicativo Mail.

Você pode ter uma conta compartilhada para adultos e outra para crianças ou contas individuais para cada pessoa. Com contas separadas, você desejará bloquear o computador (através do protetor de tela ou retornando à tela de login) quando sair. Mas mesmo se você esquecer, seus filhos vão querer usar sua própria conta (com seus próprios favoritos, ou salvar arquivos de jogos, pontuações altas ou documentos etc.) em vez da sua, o que ajudará a evitar qualquer acesso / dano acidental. Mesmo algo tão simples como não ter que sair do facebook de quem usou o navegador pela última vez (cada conta tem suas próprias configurações de navegador, que lembram quem está logado no Gmail, facebook, icloud etc.).

Você também pode impedir que alguns usuários acessem aplicativos, sites, etc. específicos, por meio dos controles dos pais nas Preferências do sistema.

drfrogsplat
fonte
0

Bloqueador de aplicativos para Mac

Faz exatamente o que você está pedindo. No site deles:

Com o Mac App Blocker, você pode proteger CADA aplicativo com senha no seu Mac. Mantenha seus aplicativos e seu Mac em segurança. Defina um valor de tempo limite para sair automaticamente do aplicativo protegido. Assim, mesmo quando você deixa o computador sem vigilância, ainda está protegido.

xerife
fonte
As respostas no Ask Different precisam ser mais do que apenas um link. Não há problema em incluir um link, mas faça um resumo ou trecho da resposta. A idéia é tornar a resposta independente.
nohillside
Agradecemos a @Ian C. por fazer uma frase deste link cair de uma cópia e colar.
dan
0

Rápido e sujo: abra utilitários de disco, crie uma imagem de disco protegida por senha na pasta de aplicativos, mova todos os aplicativos que você deseja proteger para lá. Você precisará digitar a senha uma vez para usá-las sempre que fizer login, basta desmontar a imagem do disco para que as pessoas na mesma conta ainda possam usar o computador sem acesso a esses aplicativos.

superjonbot
fonte
0

Se você deseja usar um aplicativo para conseguir isso, parece que não há muita escolha no intervalo "gratuito". O AppLocker e o AppCrypt permitem que apenas 1 aplicativo seja bloqueado na versão gratuita, e existem outros aplicativos que oferecem testes gratuitos por 15 dias ou mais. Caso contrário, há as opções pagas. Acho que o caminho a seguir para uma solução gratuita (para mais de um aplicativo) é seguir o método de script de Kelvin .

Aqui estão os aplicativos que eu consegui encontrar:

Grátis (mium):

AppLocker

AppCrypt

Avaliações gratuitas:

iLocker

MacAppBlocker

Pago:

iLock

Lock Pro

Pessoalmente, eu apenas tentei e ainda uso o AppLocker. Eu só preciso dele para um aplicativo, para mim a versão gratuita está ótima. É muito fácil de usar e sólido. Recomendado!

illustribe
fonte
Mais alguns detalhes sobre os aplicativos encontrados aumentariam o valor da sua resposta.
nohillside
ok obrigado @nohillside :)
illustribe