как избежать предупреждения «загруженное приложение» для обычного пользователя

Это продолжение моего поста: Разрешения приложений для обычного пользователя

Сейчас я использую MacOS High Sierra 10.13.5, и эта проблема все еще раздражает.

Я использую свой Mac как стандартный пользователь. Когда я впервые настроил его, все приложения были загружены/установлены с использованием пользователя Admin.

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

"Whatever.app" is an application downloaded from the Internet.
Are you sure you want to open it?

С опциями Cancelи Open. Конечно выбираю Openи все работает нормально.

Теперь я привык к этому уведомлению, которое появляется при первой попытке запустить приложение из Интернета. Моя проблема в том, что он появляется каждый раз.

Обратите внимание, что у меня не запрашиваются учетные данные администратора, и эти приложения уже были установлены в /Applicationsкаталоге в качестве администратора.

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

Как сделать так, чтобы это уведомление появлялось только при первом запуске?

================================================= ========

Подробнее:

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

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

У этой проблемы есть «решение», но оно невероятно неэлегантно. Для каждого приложения, которое я загрузил и установил, войдя в систему как администратор, просто установить приложение недостаточно. Я должен войти в систему как администратор и запустить приложение хотя бы один раз, чтобы убрать предупреждение для всех остальных пользователей. Это кажется невероятно глупым. Наверняка должен быть лучший способ сделать это?

Ответы (2)

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

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

  1. Сначала используйте su(сменить пользователя), чтобы переключиться на пользователя-администратора (введите " su", затем пробел, затем имя учетной записи вашего пользователя-администратора, затем нажмите клавишу возврата и введите пароль учетной записи администратора; обратите внимание, что пароль не будет отображаться как вы печатаете). Это должно выглядеть примерно так:

    Dans-Mac:~ dan$ su adminacct
    Password:
    bash-3.2$
    
  2. Если это работает, введите « xattr -r -d com.apple.quarantine», затем пробел, затем перетащите все приложения, которые вы хотите удалить из карантина, из Finder в окно терминала; когда они все будут перечислены, нажмите клавишу возврата. Обратите внимание, что вы можете перетаскивать их по одному или группами, как вам удобно. Что-то вроде этого:

    bash-3.2$ xattr -r -d com.apple.quarantine /Applications/BBEdit.app /Applications/Firefox.app
    
Это работает для каждого приложения. Большое спасибо. Я просто хочу, чтобы это xattr -r -d com.apple.quarantine /Applications/*.appсработало. Это не так.
@Daniel Это даст вам огромную кучу ошибок, но между ошибками это должно работать для всех приложений, из которых у вас есть разрешения на удаление карантина. Вы можете проверить наличие оставшихся приложений в карантине с помощью ls -l@ /Applicationsи найти «com.apple.quarantine в списке после любого из приложений. Если они есть, вам, возможно, придется работать xattrот имени их владельца или, возможно, от имени пользователя root, добавив к команде префикс sudo(примечание что вы уже должны работать как администратор, чтобы использовать sudo).
Почему бы не запустить sudo xattr ...с самого начала? Полное переключение на root просто немного жутко, если вы время от времени запускаете и случайно rm -r ...запускаете его ./
Кроме того, вместо того, чтобы перетаскивать приложения, вы можете просто добавить их путь, например, /Application/<...>где вы можете использовать подстановочные знаки, регулярное выражение или табуляцию для того, что необходимо.
@qwerty_so sudoне будет работать из учетной записи без прав администратора; вот почему я рекомендовал использовать suдля переключения на учетную запись администратора, которая установила приложения ( не на root). Что касается завершения табуляции, подстановочных знаков и т. д.: да, здесь они отлично сработают, но я нацеливался на инструкции для тех, кто не привык к синтаксису оболочки.
О да. Конечно, моя учетная запись является учетной записью администратора, и мне просто нужен sudo :-) Маленькие различия...

Ответ Гордона Дэвиссона сработал для меня, но по какой-то причине моя папка «Приложения» отображалась как пустая в Finder и с помощью ls . Итак, чтобы получить путь/имя для приложения, которое я хотел очистить, мне пришлось использовать

sudo find / -iname *.app

чтобы получить пути для всех установленных приложений (как можно найти на https://www.howtogeek.com/409377/how-to-list-all-applications-on-a-mac/ ).