Есть ли способ защитить паролем отдельные приложения?

Можно ли защитить паролем определенное приложение Mac?

Например, я заинтересован в защите почты, потому что даже если вы не можете получить новые электронные письма, вы все равно можете прочитать все уже полученные электронные письма.

Это не вопрос безопасности. Речь идет о совместном использовании устройства в семье. У меня нет важной информации. Я просто хочу, чтобы моя девушка или сын случайно не отправили электронные письма с моей учетной записи или помешали им прочитать некоторые из них.

Это звучит как пример проблемы XY . Вы хотите, чтобы люди не подглядывали в вашу электронную почту (X), поэтому вы спрашиваете, как защитить вашу почтовую программу (Y). Что вы действительно можете спросить, так это What's the best way to protect my email from snooping?то, что ответ на этот вопрос будет заключаться в том, что лучше всего полностью предотвратить использование вашей учетной записи неавторизованными пользователями, например, запрашивая пароль для деактивации заставки или после выхода системы из спящего режима.
Проголосуйте за комментарий @Austin. Даже если вы запретите открытие Mail.app, вы не предотвратите доступ кого-либо к вашей электронной почте. Mail.app хранит вашу электронную почту в виде открытого текста на диске ~/Library/Application Support— если кому-то понадобится ваша электронная почта, он будет знать, что нужно просто взять оттуда файлы и сбежать с ними.
@Ian Я считаю, что текстовые .emlxфайлы на самом деле находятся в ~/Library/Mail, но ваша точка зрения понятна.
Это также похоже на притчу о том, как бронированный грузовик отправили доставить деньги бездомному, который спит в картонной коробке. Да, наличные деньги более безопасны при транспортировке, но очевидно, что скоро наличные деньги будут незащищенными и их будет легко взять.
@Everybody: это не вопрос безопасности. Речь идет о совместном использовании устройства в семье. У меня нет важной информации. Я просто хочу, чтобы моя девушка или сын случайно не отправили электронные письма с моей учетной записи или помешали им прочитать некоторые из них.
Это делает его намного яснее - просто читая голые слова, это влечет за собой множество разветвлений, которых у вас просто нет с детьми и несчастными случаями. Мне любопытно, если в этом случае вы просто настроили им свои собственные учетные записи или использовали мое предложение для родительского контроля некоторых приложений в вашей учетной записи... (Или просто ответьте на это сами - вы можете сказать, что вы выбрали, и люди вряд ли продолжит пытаться помочь сделать ответы лучше, предполагая, что вы все еще ищете решение)
→ Рабскатран: ваша проблема связана с элементарной проблемой безопасности. Ваша потребность является основной: контролировать, кто читает ваши файлы (включая вашу сохраненную электронную почту). Если бы я правильно угадал вашу проблему ☂, я бы проголосовал за совет Майка: один аккаунт на всех ! Это бесплатно :).

Ответы (12)

Что касается вашего комментария к ответу Пола, который хочет на мгновение оставить свой компьютер: вы должны заблокировать свой компьютер. Период.

Откройте «Системные настройки», нажмите «Безопасность» (верхняя строка, предпоследняя опция), на вкладке «Общие» установите флажок «Требовать пароль [немедленно] после начала сна или заставки».

Затем, когда вы уходите от компьютера;

Ctrl ⌃+ Shift ⇧+Eject ⏏

(Дополнительные примечания: щелкните строку выше.)

Заблокируйте свой Mac. Уходи. Вернитесь, введите свой пароль, чтобы разблокировать его. Защищенная консоль.

+1 Пол был первым, кто упомянул об этом в комментарии под своим собственным ответом, но, поскольку он еще не интегрировал это в свой собственный ответ, я проголосую за это. Хотел бы я поставить этому +3 заyou have to lock your computer. Period.
-1 так как это теперь ответ на заданный вопрос. OP явно запрашивает пароль для защиты отдельных приложений в многопользовательской учетной записи. Другой сценарий: есть другой администратор, который может легко сбросить ваш пароль и войти в систему как вы и получить доступ ко всем вашим приложениям.
Я обратился к этому в своем первом предложении. Кроме того, если есть другая локальная учетная запись администратора, вы не сможете защитить паролем приложение от нее. Это просто невозможно.

Можно с помощью скриптов.

Во-первых, вы должны включить меню сценариев в строке меню OS X. Прочтите раздел «Меню сценариев» здесь: Включить меню сценариев

Теперь откройте папку Library/Scripts и создайте файл с именем «run_with_password.rb» со следующим содержимым (замените «johndoe» на ваше имя пользователя):

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

Затем запустите редактор сценариев и вставьте этот код (снова заменив johndoe на ваше имя пользователя):

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

Сохраните файл в Library/Scripts как «mail_with_password», убедившись, что формат файла — «Script».

Теперь в меню вашего скрипта появится «mail_with_password». Каждый раз, когда вы запускаете его, он будет запрашивать ваш пароль (как это делают некоторые установщики). После завершения работы он отключит доступ к обычному почтовому приложению. Поэтому запустите скрипт один раз, а затем попробуйте запустить приложение Mail. Это не будет работать. Обратите внимание, что это означает, что ВСЕ пользователи на вашем компьютере не смогут запускать Mail напрямую, а не только ваш пользователь.

Если вы когда-нибудь захотите, чтобы Mail снова работал в обычном режиме, выполните эту команду в Терминале:

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

Возможно, вы сможете опустить «sudo». Используйте sudo, если вы получаете «Операция не разрешена». Обратите внимание, что sudo запросит у вас пароль, чтобы разрешить привилегированную операцию.

Предостережения

  1. Если вам не нужна команда «sudo» выше, чтобы выполнить chmod, это означает, что опытный пользователь сможет выяснить, как снова включить приложение «Почта». Вы можете усилить безопасность, изменив владельца файла MacOS/Mail на root. Это оставлено в качестве упражнения для читателя.
  2. Если кто-то сможет скопировать приложение «Почта» на ваш компьютер (например, с помощью USB-накопителя), он все равно сможет получить доступ к вашей почте.
  3. Сценарий ruby ​​предназначен для работы с большинством пакетов приложений OS X. Я не рекомендую настраивать скрипт ruby, если вы действительно не знаете, что делаете, потому что он делает определенные вещи как root (привилегированный пользователь). Изменение кода applescript должно быть безвредным; но вы должны знать, как настроить команду chmod, чтобы ваше приложение снова запустилось напрямую.
  4. Если путь к приложению в файле applescript содержит пробелы или другие специальные символы, вам придется сделать что-то вроде заключения всего пути в одинарные кавычки.
  5. Изменить: пользователь Остин предположил, что эта процедура не защищает файлы .emlx. На самом деле я не использую приложение «Почта», поэтому я не знаком с хранилищем данных. Подобные проблемы относятся ко всем приложениям, потому что это решение не скрывает пользовательские данные.

Паранойя

Если кто-то, кто знает ruby, получит доступ к вашему вошедшему в систему пользователю, он может изменить сценарий ruby ​​таким образом, что это приведет к всевозможным разрушениям, когда вы запускаете сценарий, поскольку часть времени он работает от имени пользователя root. Если вы считаете, что это может произойти, вы должны сделать сценарий доступным для записи только пользователю root. Вы также должны будете убедиться, что кто-то не заменит сценарий своим собственным — они могут сделать это, если вы имеете право на запись в папку. Если вы начинаете пугаться этих предупреждений и не знаете, как защитить себя, вам, вероятно, следует забыть об этом решении и просто не забыть заблокировать экран, когда вы отходите от компьютера.

Ого, 3 плюса за 4 часа? Я не ожидал, что слишком много людей будут использовать такой хак, тем более, что вам нужно создать один яблочный скрипт для каждого приложения, которое вы хотите защитить. Я хотел бы услышать, как люди используют мое решение, хотя бы просто для изучения новых трюков.
-1, но я надеюсь, что это не принимается на свой счет. Мне очень нравится уровень детализации здесь, и ясно, что на это ушло много размышлений, но я думаю, что это решение дает опасное ложное чувство безопасности. Одно огромное предостережение, о котором вы не упомянули, заключается в том, что оно не препятствует доступу к .emlxпочтовым файлам с открытым текстом, хранящимся в файлах ~/Library/Mail.
@ Остин, конечно, ты имеешь право на отрицательный голос, но я не понимаю твоей причины. Я думаю, что моих предостережений и разделов паранойи должно быть достаточно, чтобы указать, что это не должно быть безопасным решением — это только сдерживающий фактор. Я добавил ваше предостережение, но по сути это та же идея, что и предостережение № 2. Кроме того, ОП сказал, что его / ее не волнует, что другой человек читает «уже полученные электронные письма».
Я благоговею перед многими сложными вещами, которые никогда не буду использовать в реальной жизни. Это один - молодец, Кельвин - вы получили от меня +1 за это. :-) Я сомневаюсь, что это окажется «лучшим» ответом на этот вопрос, но я надеюсь, что он получит почетное упоминание.
Я думаю, вы неправильно понимаете эту часть вопроса (конечно, ее можно было бы сформулировать лучше). @Rabskatran - пожалуйста, поправьте меня, если я ошибаюсь, но я вполне уверен, что ОП пытался объяснить причину желания защитить приложение паролем. Перефразируя, даже если шпион не сможет получить новую почту (предположительно, потому, что пароль учетной записи не хранится в Mail), он сможет прочитать существующую загруженную почту, и именно поэтому ОП хотел, чтобы защита паролем .
Хороший скриптовый навык, но проблема рядом. Играть со скриптом sudo, чтобы решить проблему пользователя А, очень рискованно. Если пользователь А не защищен, любой доступ к клавиатуре позволит chmodобойти этот скрипт ruby. Как верно диагностировал Остин, проблема гораздо серьезнее и посложнее.

Вы можете просто установить родительский контроль для учетной записи, а затем определить, какие приложения можно использовать.

В качестве альтернативы вы можете установить пароль на заставку, а также определить подходящий «горячий угол» для активации заставки — таким образом, когда вы отходите от компьютера, вы можете просто переместить мышь в горячий угол, чтобы эффективно заблокировать экран, например что для доступа требуется пароль.

Нет, я хочу иметь возможность оставить свой компьютер включенным на несколько минут и быть уверенным, что никто не сможет прочитать мои полученные электронные письма (например, если Mail еще не запущен). Но в целом, что никто не сможет запустить приложение, сделать что-то и бросить за время моего отсутствия.
В этом случае просто установите «горячий угол» в заставке и запросите пароль для выхода из заставки. Когда вы покидаете свой Mac, нажмите мышью в горячий угол, чтобы заблокировать экран.
или установите короткое время ожидания для заставки — Почта не обязательно будет единственным приложением, которое вы хотите скрыть.
Таким образом, невозможно установить пароль в приложении...
Я уверен, что есть приложение, которое сделает это за вас. Вы также можете передать приложение другому пользователю на компьютере, и если вы правильно установите разрешения, вы не сможете запустить это приложение без предварительной аутентификации. Я думаю.
@Paul +1 Я бы порекомендовал отредактировать это отличное предложение о настройке заставки, защищенной паролем, прямо в ваш ответ.

Да, существует несколько способов защитить вашу почту паролем. Поскольку вы беспокоитесь о детях/членах семьи, проще всего просто ограничить эти приложения с помощью родительского контроля в вашей учетной записи. В какой-то момент у них могут быть свои учетные записи, и вы можете заблокировать всю свою учетную запись.


Вот варианты, которые я считаю пригодными для общего случая блокировки приложений или доступа к данным приложений.

  1. Сделайте свою учетную запись защищенной родительской учетной записью и добавьте в белый список приложения, которые вы хотите разрешить. Вы будете знать отдельного пользователя/пароль администратора, чтобы разрешить запуск запрещенных приложений. Вуаля — любое приложение, которое вы хотите, теперь защищено паролем.

  2. Переместите приложение в защищенный паролем образ диска, а затем создайте псевдоним для хранения в папке «Приложения». (сначала удалив исходное приложение) Когда какая-либо программа пытается получить доступ к приложению, вы получаете возможность ввести пароль, и средство поиска смонтирует образ диска. Вы также можете написать сценарий изменения разрешений и другие технические хитрости, чтобы потребовать пароль перед запуском сценария, чтобы снова запустить приложение.

  3. Храните данные приложения в зашифрованном образе диска, защищенном паролем . Вот некоторые распространенные приложения и папки, в которых они хранят пользовательские данные .

  4. Храните почтовое приложение на съемном диске — существует кустарная промышленность по созданию автономных пакетов приложений для запуска приложений с USB-накопителей.

Имейте в виду, что такие вещи, как Spotlight и другие приложения, использующие фреймворки внутри приложений, не будут работать так хорошо, пока образы не будут смонтированы. Если ваш пользовательский пароль защищен (от людей, которым вы не хотите видеть данные), вы можете хранить пароли образов дисков в цепочке ключей.

Кроме того, если вы не защитите файлы данных, это всего лишь безопасность из-за неизвестности, и кто-то может скопировать ваши данные в другое место или просто просмотреть их из прожектора или других приложений, таких как редактирование текста. Они также могут принести копию почтового (или любого другого) приложения с другого компьютера. Приложения могут запускаться из любого места, а не только из папки «Приложения», как только пользователь-администратор благословит их на первый запуск в этой системе.

Поэтому № 3 — единственный путь. Заблокируйте свои данные и не беспокойтесь о приложениях.

Вот утилита для Mac, которая сделает то, о чем вы просите. Он может защитить паролем отдельные приложения. Кроме того, вы можете установить значение тайм-аута, которое закроет приложение после того, как оно неактивно в течение выбранного времени.

Блокировщик приложений для Mac

Mac App Blocker — это именно то, что он ищет. Как технический специалист Apple, мы получаем этот запрос на эту возможность в течение многих лет (помните Oulook 2001?). Пользователей не беспокоит, что их дети или коллеги будут копаться в папках библиотеки, извлекать файлы .emlx и читать их. Дело не в этом — они не возражают против того, чтобы другие использовали их Mac, они просто не хотят, чтобы те читали их электронную почту. Легко и просто. Mac App Blocker делает то, что он делает, и это все, что ему нужно.

Отдельные аккаунты — решение этой проблемы.

Электронная почта может быть очевидным, но будут некоторые важные файлы, или закладки, или открытые банковские вкладки и т. д., которые могут быть столь же плохи для ребенка, если он случайно удаляет/открывает/возится с ними.

Отдельные учетные записи (только с родителями в качестве администраторов) означают, что вы можете хранить все файлы, электронные письма, настройки и т. д. отдельно, даже если приложения доступны всем.

Если пользователь X использует приложение Mail, его электронные письма и настройки учетной записи доступны только после входа в систему. Когда пользователь Y открывает Mail, у него будут свои собственные учетные записи/почта, даже если оба используют одно и то же приложение Mail.

У вас может быть общая учетная запись для взрослых и еще одна для детей или отдельные учетные записи для каждого человека. С отдельными учетными записями вам нужно будет заблокировать компьютер (через заставку или вернуться к экрану входа), когда вы покидаете его. Но даже если вы забудете, ваши дети захотят использовать свою собственную учетную запись (со своими закладками, сохраненными игровыми файлами, рекордами, документами и т. д.), а не вашу, что поможет предотвратить любой случайный доступ/повреждение. Даже что-то настолько простое, как отсутствие необходимости выходить из Facebook от того, кто последним использовал браузер (каждая учетная запись имеет свои собственные настройки браузера, которые запоминают, кто вошел в Gmail, facebook, icloud и т. д.).

Вы также можете запретить некоторым пользователям доступ к определенным приложениям, веб-сайтам и т. д. с помощью Родительского контроля в Системных настройках.

Я знаю, что это старая тема, но у меня была такая же проблема, как и у вас… Вот решение: приложение под названием iLock. Защищает отдельные приложения паролем по вашему выбору. Просто, эффективно и совершенно бесплатно! https://www.macupdate.com/app/mac/49881/ilock

Хм. Я давно хотел это сделать. Давайте возьмем другой пример, который не хранит локальные файлы, если ему не сказано об этом, — например, чат-программы, такие как Skype или Trillian. Проблема с родительским контролем заключается в том, что вы не можете быть администратором на машине И иметь родительский контроль в своей учетной записи администратора.

Мое предложение состояло бы в том, чтобы просто сделать следующее:

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

Это мешает кому-либо запускать его, но помечает его как ваше

Затем, чтобы запустить его,

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

Это выходит за рамки прав доступа 600 (rw- --- ---) выше, и вам нужно будет ввести пароль администратора, чтобы запустить его.

Вы также можете изучить бит setuid и посмотреть, поможет ли это (другими словами, заставить приложение работать от имени другого пользователя).

между прочим, у "whoami" выше должны быть серьезные акценты или обратные кавычки по обе стороны от него. Антихакерские материалы на этом сайте удалили эти отметки.
Зафиксированный. Не стесняйтесь нажать «Изменить» и посмотреть, как я это исправил.

Как насчет настройки отдельных учетных записей пользователей с их собственным идентификатором Apple, электронной почты с родительскими ограничениями или вообще без электронной почты. Приложения могут быть общими для разных учетных записей. В зависимости от возраста ваших детей, если у них есть права администратора, то есть ваша учетная запись, они могут нанести вред вашей учетной записи без намерения. Поскольку вы являетесь администратором, вы можете контролировать, что они могут делать со своей учетной записью.

Быстро и грязно: откройте дисковые утилиты, создайте защищенный паролем образ диска в папке приложений, переместите туда любые приложения, которые вы хотите защитить. Вам нужно будет ввести пароль один раз, чтобы использовать их каждый раз, когда вы входите в систему, затем вы можете просто размонтировать образ диска, чтобы люди с той же учетной записью могли по-прежнему использовать ваш компьютер без доступа к этим приложениям.

Если вы хотите использовать приложение для достижения этой цели, кажется, что в «бесплатном» диапазоне не так много выбора. AppLocker и AppCrypt позволяют заблокировать только 1 приложение в бесплатной версии, и есть несколько других приложений, которые предлагают бесплатные пробные версии на 15 дней или около того. В противном случае есть платные варианты. Я предполагаю, что способ получить бесплатное решение (для более чем 1 приложения) - это использовать метод сценария Кельвина .

Вот приложения, которые мне удалось найти:

Бесплатно(миум):

AppLocker

AppCrypt

Бесплатные пробные версии:

iLocker

MacAppBlocker

Оплаченный:

iLock

Замок Про

Лично я только что попробовал и до сих пор использую AppLocker. Мне это нужно только для одного приложения, поэтому для меня бесплатная версия просто идеальна. Очень прост в использовании и надежен. Рекомендуемые!

Некоторые дополнительные сведения о приложениях, которые вы найдете, повысят ценность вашего ответа.
@JoelMellon, конечно, с удовольствием. Если вы найдете другие, пожалуйста, сообщите нам! ;)

Блокировщик приложений для Mac

Делает именно то, что вы просите. С их сайта:

С помощью Mac App Blocker вы можете защитить паролем КАЖДОЕ приложение на вашем Mac. Защитите свои приложения и свой Mac. Установите значение тайм-аута для автоматического выхода из защищенного приложения, поэтому, даже если вы оставляете компьютер без присмотра, вы по-прежнему защищены.

Ответы на Ask Different должны быть чем-то большим, чем просто ссылка. Можно включить ссылку, но, пожалуйста, подведите итог или выделите ее в ответе. Идея состоит в том, чтобы сделать ответ самостоятельным.
Спасибо @Ian C. за предложение этой ссылки, выпавшей из копии.