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

27

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

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

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

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

Ответы:

27

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

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

Затем, когда вы идете, чтобы уйти от вашего компьютера;

Ctrl ⌃+ Shift ⇧+Eject ⏏

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

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

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

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

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

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

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

Во-первых, вы должны включить меню сценариев в строке меню 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

Затем запустите Script Editor и вставьте этот код (снова сменив 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 нормально, запустите эту команду в Терминале:

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

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

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

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

паранойя

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

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

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


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

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

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

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

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

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

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

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

bmike
источник
5

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

Mac App Blocker

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

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

user75894
источник
1

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

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

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

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

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

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

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

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

Джон
источник
Кстати, у "whoami" выше должны быть серьезные акценты или кавычки по обе стороны от него. Анти-хакерский материал на этом сайте лишил эти отметки.
Джон
2
Исправлена. Не стесняйтесь нажать кнопку редактирования и посмотреть, как я это исправил.
Джейсон Салаз
1

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

rclyde
источник
1

Отдельные учетные записи является решением этой проблемы.

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

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

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

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

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

drfrogsplat
источник
0

Mac App Blocker

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

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

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

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

superjonbot
источник
0

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

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

Free (Mium):

AppLocker

AppCrypt

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

iLocker

MacAppBlocker

Выплачено:

iLock

Lock Pro

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

illustribe
источник
Некоторые дополнительные сведения о приложениях, которые вы найдете, повысят ценность вашего ответа.
холме
хорошо, спасибо @nohillside :)
иллюстрирую