Mac-приложение для переключения между файлами / etc / hosts, как разрешить доступ? - PullRequest
0 голосов
/ 30 апреля 2018

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

try? FileManager.default.copyItem(at: URL(fileURLWithPath: "/etc/hosts__ENV_1"), 
to: URL(fileURLWithPath: "/etc/hosts"))

Вышеуказанное возвращает nil, я полагаю из-за отсутствия привилегий.

Как предоставить права на замену /etc/hosts файла?

1 Ответ

0 голосов
/ 30 апреля 2018

Чтобы изменить такие файлы, как /etc/hosts, которые доступны для записи только пользователю root, вам потребуется использовать привилегированный вспомогательный инструмент, установить его с помощью SMJobBless() и связаться с ним через XPC.

Пример Apple EvenBetterAuthorizationSample демонстрирует рекомендуемый способ сделать это, наряду с предоставлением небольшой библиотеки примеров, которую вы можете использовать. Это в Objective-C, но код Objective C не сложно интегрировать в проект Swift. (На днях я опубликую свою собственную Swift-нативную версию этого, но в настоящее время она нуждается в очистке, прежде чем я буду гордиться источником.)

...