Как отключить процесс Game Center (Gamed) на OS X 10.11 El Capitan?

10

Кажется, я не могу отредактировать файл plist из LaunchAgents - даже если я sudo, я не могу удалить / изменить. Должен ли я обязательно отключить SIP, чтобы сделать это?

jrgd
источник
Вы попробовали это и увидели, что происходит?
Тетсуджин

Ответы:

16

Отключите LaunchAgent (не LaunchDaemons) и перезагрузите компьютер ( без sudo):

$ launchctl unload /System/Library/LaunchAgents/com.apple.gamed.plist

Если вы хотите включить его снова в одной точке:

$ launchctl load /System/Library/LaunchAgents/com.apple.gamed.plist
frdmn
источник
1
там написано: /System/Library/LaunchAgents/com.apple.gamed.plist: не удалось найти указанный сервис, которым я пользуюсь 10.11.2; спасибо за предложение!
jrgd
Я только попробовал это на своей машине, и это работало отлично. Та же ОС (10.11.2). Вы скопировали и вставили команду из моего ответа? Изменить: убедитесь, что не использоватьsudo
frdmn
да, я сделал; проверьте также внутри каталога и есть ли файл plist ... Вы случайно удаляли SIP / rootless в прошлом?
jrgd
Нет, у меня нет: paste.frd.mn/loyon - Вы видите сервис в launchctl list?
frdmn
1
Всегда пожалуйста!
frdmn
9

Согласно этой теме вы можете сделать:

defaults write com.apple.gamed Disabled -bool true

И для проверки текущего состояния демона используйте:

defaults read com.apple.gamed Disabled
ccpizza
источник
2

Одним из решений является создание bash-скрипта, который останавливает игровой сервис после входа в систему. Используйте Automator в OS X для создания сценария bash, а затем добавьте его в качестве элемента входа в свою учетную запись OS X. При следующем входе в систему вы получите приглашение выполнить скрипт. Обычно я жду, пока не увижу предупреждение от Little Snitch о том, что gamed звонит домой, затем нажимаю «Продолжить», чтобы запустить скрипт. Это не было усовершенствовано, и вы можете столкнуться с проблемами, если вы запустите его сразу после входа в OS X. Я предпочитаю держаться подальше от решений, которые отключают службу, поскольку те требуют отключения / переопределения SIP, против которых я советую.

Вот скрипт bash, который я использую. Любые предложения по его улучшению приветствуются.

    #!/bin/bash
        chkService=gamed
        chkCount=10
        chkStatus=$(ps ax | grep "$chkService" | grep -v grep | grep " T " | wc -l)
        while [ $chkStatus -ne 1 ]; do
            chkProcess=$(ps ax | grep -v grep | grep "$chkService" | wc -l)
            if [ $chkProcess -ne 0 ];
            then
                KILLALL -STOP "$chkService"
                chkCount=0
                chkStatus=$(ps ax | grep gamed | grep -v grep | grep " T " | wc -l)
            else
                SLEEP=1
                chkCount=$((chkCount-1))
            fi
        done
Le Sci
источник
2

Проблема в том, что принятый ответ приведен выше:

launchctl unload /System/Library/LaunchAgents/com.apple.gamed.plist

больше не работает. Я также видел это, используя -wфлаг. В любом случае, в последних обновлениях, я думаю, что вокруг El Capitan или Yosemite, вы вместо этого получите сообщение

Операция не разрешена, когда включена защита целостности системы

Защита целостности системы также известна под аббревиатурой SIP. Чтобы отключить его, вам нужно загрузиться в Recovery OS и запустить csrutil disable.

Я делал эту последовательность в предыдущих выпусках, и это привело к возможности отключить игру через launchctlкоманду.

Я полагаю, что после отключения gamed можно было бы снова включить SIP. Может быть, это будет лучшее из обоих миров, хотя в целом это утомительный процесс.

Джеффри Саймон
источник
0

о чем sudo launchctl unload /System/Library/Launch\ Daemons/com.apple.gamed.plist?

PEM8000
источник
/ System / Library / Launch Daemons / com.apple.gamed.plist: Нет такого файла или каталога --- Я нахожусь на 10.11.2 (спасибо за предложение)
jrgd
мой плохой, это LaunchAgent: sudo launchctl unload / System / Library / Launch \ Agents / com.apple.gamed.plist
PEM8000
Спасибо; каталог - LaunchAgents на моей машине; после использования правильного пути я получил «Не удалось найти указанную услугу», что меня огорчает
jrgd
0

на ОС Sierra зайдите в Системные настройки, Учетные записи в Интернете и удалите (со знаком минус) Game Center из списка (слева).

Марлон Шанхай
источник
Это просто удаляет учетную запись Game Center и не отключает игровой процесс. Кроме того, этот вопрос касается Эль-Капитана, а не Сьерры. Пожалуйста, смотрите Как ответить, чтобы получить советы о том, как дать хорошие ответы на вопросы. - Из обзора
ФСБ
0

Это мало что меняет с точки зрения безопасности, поскольку просто возвращает систему к тому состоянию, в котором она работала до SIP, и к тому, как почти все системы Unix все еще работают. Значение SIP является в лучшем случае спорны. Он отвечает на этот вопрос, потому что единственный способ использовать команду Launchctl для выгрузки файла PLM Gamed - это сначала отключить SIP, загрузиться, выгрузить файл PLIST, а затем, при желании, снова включить SIP.

Марк Чой
источник
0

Другой вариант, работающий на 10.11.6, - это вариант метода, предложенного @ Le-Sci. Создайте скрипт оболочки, который отключает игровой процесс:

#!/bin/bash
sleep 30 && kill -9 "$(pgrep gamed)"

Здесь команда sleep говорит сценарию подождать 30 секунд перед началом процесса выхода из gamed, чтобы дать системе достаточно времени для загрузки gamed, прежде чем пытаться завершить его; Вы можете настроить количество времени ожидания, если это необходимо. Команда «kill -9» принудительно завершает запрошенный вами процесс, но принимает только номер идентификатора процесса, а не имя процесса, поэтому «pgrep» используется для поиска идентификатора процесса. Запишите, где вы сохраняете скрипт (для этого примера я сохраню его как «forceQuitGamed» в / Users / myaccountname /).

Дайте разрешение на выполнение скрипта:

sudo chmod +x ~/forceQuitGamed

Создайте файл plist агента запуска, который будет запускаться при каждом входе в учетную запись. Если вы ранее не создавали файл plist, вы можете сделать это с помощью TextEdit. Файл сценария должен быть сохранен в виде простого текста, поэтому, если настройки по умолчанию для TextEdit требуют форматирования Rich Text, выполните команду «Формат»> «Создать обычный текст» для преобразования в обычный текст, прежде чем пытаться использовать новый plist-файл агента запуска.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.myaccountname.loginscript</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/myaccountname/forceQuitGamed</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Строка в массиве в разделе «ProgramArguments» - это путь к сценарию / к / вашему / оболочке. Сохраните файл в ~ / Library / LaunchAgents /. В этом примере я назвал файл plist com.myaccountname.forceQuitGamed.plist, поэтому он находится по адресу

/Users/myaccountname/Library/LaunchAgents/com.myaccountname.forceQuitGamed.plist

Теперь при каждом входе в свою учетную запись gamed следует принудительно завершать через несколько секунд после загрузки. (Если вам нужно, чтобы он был завершен как можно скорее после его загрузки, посмотрите на метод @ Le-Sci.) Этот подход работает без необходимости отключения защиты целостности системы.

Cam U
источник
-4

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

Но я не знаю, какие процессы при модификации могут поставить под угрозу загрузку в El Capitan

user169708
источник
Это позволяет войти в систему root. Какое это имеет отношение к Gamed?
Безымянный_1
Это действительно очень плохая идея с точки зрения безопасности, и она не решает вопрос.
Риф