Доступ служби macOS до ваших файлів
Якщо ви запускаєте SyncThemAll як фонову службу на macOS, вона може повідомляти «Permission denied» про теки, які явно належать вам — «Документи», «Робочий стіл», «Завантаження», iCloud Drive, зовнішній диск.
Це не збій, і ви нічого не налаштували неправильно. macOS навмисно не пускає фонові служби до ваших особистих файлів, доки ви не дозволите це самі — вручну й один раз.
Спочатку: чи потрібна вам служба взагалі?
Більшості користувачів — ні. Працювати без вікна SyncThemAll вміє двома різними способами, і лише один з них потребує всього описаного нижче:
| Що вам потрібно | Рекомендована опція |
|---|---|
| Синхронізація працює, поки я в системі, і вікно тримати відкритим не треба | Автозапуск — Налаштування → Система → Працювати у фоні та Запускати під час входу. Без пароля адміністратора, без налаштувань безпеки, без зайвих кроків. |
| Синхронізація має працювати, навіть коли ніхто не увійшов у систему — Mac перезавантажився сам і продовжує працювати | Служба — і тоді ця сторінка для вас. |
Якщо вам підходить перший рядок, увімкніть автозапуск і не читайте далі. Служба існує для комп'ютерів, які працюють, коли за ними ніхто не сидить, — і саме ця можливість потребує одного додаткового кроку налаштування.
Чому macOS вимагає цього від вас
macOS захищає деякі теки — «Робочий стіл», «Документи», «Завантаження», iCloud Drive, знімні та мережеві томи — механізмом під назвою TCC. Коли звичайний застосунок уперше звертається до такої теки, система показує діалог: «SyncThemAll запитує доступ до файлів у теці "Документи"». Ви дозволяєте один раз і більше про це не думаєте.
Служба в цій розмові брати участь не може. Вона стартує до того, як хтось увійшов у систему, і працює поза вашим сеансом: діалог показати ніде і відповідати на нього нікому. У таких випадках macOS не вгадує — вона просто відмовляє, і робить це щоразу.
Права адміністратора тут нічого не змінюють. TCC діє не на рівні файлових прав: служба блокується, навіть коли запущена з повними системними повноваженнями. З тієї самої причини про таке саме налаштування просять програми резервного копіювання на кшталт Backblaze, Carbon Copy Cloner та Arq.
Отже, дозвіл має надійти безпосередньо від вас, у «Системних налаштуваннях». Про це — все інше на сторінці.
Як надати доступ
SyncThemAll сам підкаже, який саме файл потрібно додати, — шукати його не доведеться.
- Відкрийте SyncThemAll і натисніть «Служба» на панелі ліворуч.
- У діалозі натисніть «Відкрити налаштування». macOS відкриє «Конфіденційність і безпека → Повний доступ до диска».
- Поверніться до SyncThemAll і натисніть «Скопіювати шлях» — у буфер потрапить розташування програми служби.
- У «Системних налаштуваннях» натисніть + під списком. Відкриється вікно вибору файлу.
- Натисніть ⌘ + Shift + G, вставте шлях, натисніть Return і потім «Відкрити».
- Переконайтеся, що перемикач навпроти доданого запису увімкнено.
- Поверніться до SyncThemAll і натисніть на службі «Зупинити», а потім «Запустити».
Останній крок важливий: macOS застосовує новий дозвіл під час наступного запуску програми, тому запущена служба не помітить зміни, доки її не перезапустити. Кнопки «Зупинити» та «Запустити» розташовані в тому самому діалозі.
Повідомлення «Служба поки не бачить ваші файли» після цього має зникнути. Якщо ні — перевірте, що перемикач із кроку 6 справді увімкнено і що ви додали файл із кроку 3, а не сам застосунок SyncThemAll (про це нижче).
Чому не можна просто додати застосунок SyncThemAll?
Тому що для macOS служба — самостійна програма, а не частина застосунку, і такі дозволи система видає кожній програмі окремо. Доступ, наданий застосунку, на службу не поширюється, і навпаки. Шлях, який копіюється на кроці 3, веде всередину пакета застосунку — до тієї програми, яку служба й запускає:
SyncThemAll.app/Contents/Resources/engine/syncthemall
Finder зазвичай приховує вміст пакетів застосунків — тому на кроці 5 використовується ⌘ + Shift + G, щоб перейти одразу за шляхом. Якщо вам зручніше перетягнути файл до списку мишею, натисніть у діалозі SyncThemAll не «Скопіювати шлях», а «Показати у Finder» — відкриється тека з уже виділеним файлом.
Що змінюється після надання доступу
Служба зможе читати й записувати ваші теки, включно з тими, що ви синхронізуєте. Два наслідки варто знати заздалегідь:
Файли, створені службою, належать системі, а не вам. Якщо служба завантажить файл до теки «Документи», а ви потім захочете видалити або перейменувати його у Finder, macOS попросить пароль. Це нормально: файл створено програмою системного рівня. Видалення того самого файлу із самого SyncThemAll пароля не потребує.
Дозвіл прив'язаний саме до цієї програми. Якщо ви перенесете SyncThemAll до іншої теки або перевстановите його так, що програму буде замінено, доступ може знадобитися надати заново. Звичайні оновлення дозвіл зберігають.
Як відкликати доступ
Відкрийте «Системні налаштування → Конфіденційність і безпека → Повний доступ до диска», виберіть запис і або вимкніть перемикач, або видаліть його кнопкою −. Служба працюватиме далі — просто перестане бачити ваші особисті теки. Якщо ви видаляєте саму службу із SyncThemAll, видаліть і запис: він посилатиметься на неіснуючу програму.
Усе ще виникають проблеми?
Якщо повідомлення лишається після перезапуску служби або служба повідомляє про помилку доступу до теки, якої немає в списку захищених, напишіть нам — вкажіть шлях до теки і те, що показує діалог «Служба». За цією парою одразу видно, чи блокує доступ macOS, чи справа в чомусь іншому.