macOS 로컬 네트워크 접근 허용 창을 자동으로 차단하는 도구
원제 Show HN: Auto Dismiss Mac OS "Allow <app> to find devices on local networks?"
105 포인트댓글 79
Key Point
macOS 앱들이 로컬 네트워크 접근 허용 창을 반복해서 표시하는 문제를 자동으로 해결하되, 정당한 사용 사례에서는 선택적으로 허용할 수 있는 방법을 제시한다.
핵심 요약
- dontallow는 macOS Sequoia 이상에서 앱이 로컬 네트워크 접근을 요청할 때마다 나타나는 "Allow to find devices on local networks?" 대화창을 자동으로 '차단'(Don't Allow) 버튼을 누르는 Swift 기반 도구다.
- Chrome, Brave, Edge 등 일부 브라우저는 실행할 때마다 임시 폴더로 앱 번들을 복사하는데, macOS가 이를 다른 앱으로 인식하면서 매번 같은 프롬프트를 표시하는 문제가 발생한다.
- 버전 경로를 포함한 앱들(/versions/1.2.3/)도 업데이트마다 새로운 권한 행(row)이 생기고, 실행 중이지 않은 앱의 프롬프트가 잘못된 앱에 첨부되는 등의 문제가 있다.
- Chromecast 발견, AirPlay, LAN 멀티플레이, 프린터/스캐너 유틸리티 등 일부 앱은 로컬 네트워크 접근이 정당하며, 이 경우 수동으로 '허용'을 선택하거나 allowlist에 추가할 수 있다.
- dontallow install로 설치하면 사용자 단위 launchd 에이전트를 생성하고, System Settings > Privacy & Security > Accessibility 권한 부여 후 자동으로 작동한다.
- dontallow pause로 10분~1일 등 일시적으로 프롬프트 차단을 멈출 수 있고, ~/.config/dontallow/allowlist 파일에 앱 이름을 추가하면 해당 앱 프롬프트는 건드리지 않는다.
- 내부적으로 UserNotificationCenter 시스템 프로세스의 접근성 옵저버로 창 생성을 감시하다가 로컬 네트워크 프롬프트임을 확인 후 'Don't Allow' 버튼을 자동으로 누르거나 합성 클릭으로 대체한다.
- Swift 파일 2개로 이루어졌고 의존성이 없으며, 유휴 상태에서 CPU를 소비하지 않고, 재부팅 후에도 유지된다.
- 명령줄 도구로는 dontallow status(상태 확인), dontallow rules(시스템 권한 규칙 해석), dontallow uninstall(제거), dontallow run --dry-run(시뮬레이션) 등이 있고, 각 차단 시 알림을 표시한다.
- Apple Silicon과 Intel 모두 지원하며, Command Line Tools만으로 빌드 가능하고(Xcode 불필요), 현재 영어 로컬라이제이션만 지원한다.
- MDM 환경에서는 Developer ID로 서명 후 PPPC 프로필로 접근성 권한을 미리 부여하면 수동 설정 없이 배포할 수 있고, macOS 업그레이드 후에는 dontallow status로 권한 상태를 확인해야 한다.
- MIT 라이선스로 공개되었으며, 단위 테스트는 순수 Swift 로직(대화 텍스트 파싱, 일시 중지 옵션, allowlist 매칭, launchd 설정 생성 등)을 swiftc로만 빌드해서 검증한다.