MaC OS X 10.8 Mountain Lion의 보안 및 개인정보 설정에 있는 위치 서비스에서 애플리케이션을 제거하고 싶었습니다. (앱을 제거했는데도 앱이 계속 표시됩니다.) 게시물을 찾았습니다.Mac OS X 10.7의 보안 및 개인 정보 보호에 있는 위치 서비스에서 응용 프로그램 제거, 그 덕분에 저는 올바른 방향으로 나아갈 수 있었습니다. 다음은 나에게 도움이 되는 OS X 10.8.2 Mountain Lion과 동등한 버전입니다. 주요 차이점은 클라이언트.plist 파일의 위치입니다. 또한 단계별 프로세스를 제공하고 싶었습니다.
면책 조항 : 이것은 나에게 효과적이었습니다. 시스템을 제대로 백업했는지 확인하세요. 이 프로세스에는 클라이언트.plist 파일의 백업이 포함되지만 결코 안전할 수는 없습니다.
1. 터미널을 시작한 다음 루트 셸로 sudo를 실행합니다.
sudo -s
2. /var/db/locationd로 이동합니다.
cd /var/db/locationd
3. 클라이언트.plist 파일의 백업을 만듭니다.
cp -p clients.plist clients.plist.save
4. 클라이언트.plist를 xml(편집 가능한 형식)로 변환
plutil -convert xml1 clients.plist
5. vi(vim)를 사용하여 클라이언트.plist 파일을 편집하고 애플리케이션을 제거합니다.
vi clients.plist
파일에는 많은 응용 프로그램 항목이 포함될 가능성이 높습니다. 단일 애플리케이션 항목의 형식은 다음과 같습니다(이 경우 Safari). 전체 항목을 삭제해야 합니다.
<key>com.apple.Safari</key>
<dict>
<key>Authorized</key>
<true/>
<key>BundleId</key>
<string>com.apple.Safari</string>
<key>Executable</key>
<string>/Applications/Safari.app/Contents/MacOS/Safari</string>
<key>LocationTimeStopped</key>
<real>376348187.80421197</real>
<key>Registered</key>
<string>/Applications/Safari.app/Contents/MacOS/Safari</string>
<key>RequirementString</key>
<string>identifier "com.apple.Safari" and anchor apple</string>
<key>Whitelisted</key>
<false/>
</dict>
6. 클라이언트.plist 파일을 다시 바이너리로 변환
plutil -convert binary1 clients.plist
7. 위치를 다시 시작합니다.
killall locationd
앱이 여전히 존재하는 경우 다음과 같이 PID를 결정한 후 kill -9를 사용하여 위치를 다시 시작하는 것을 제외하고 프로세스를 다시 수행하십시오. PID는 ps 출력의 두 번째 필드입니다.
ps -ef | grep locationd | grep -v grep
산출:205 427 1 0 6:31PM ?? 0:00.07 /usr/libexec/locationd
kill -9 427
한 번에 하나의 앱을 제거하기 위해 프로세스를 두 번 실행했습니다. 처음에는 killall로 충분했습니다. 두 번째는 그렇지 않았습니다. 이유는 모르겠습니다. 그것은 캐시를 유지하고 클라이언트.plist를 재구축하는 것처럼 행동했습니다. killall을 실행한 후, 심지어 재부팅한 후에도 항목이 클라이언트.plist에 다시 추가되었기 때문에 이렇게 말하는 것입니다. 근본 원인이 무엇이든, kill -9를 사용하면 문제가 해결되었습니다.
문제가 발생하면 원본 파일을 다시 복사하고 위치를 다시 시작하세요.
cp -p clients.plist.save clients.plist
killall locationd
(또는 kill -9 방법)
이게 도움이 되길 바란다. 건배!
답변1
Xcode의 속성 목록 편집기를 사용하여 기존 앱의 항목을 삭제할 수도 있지만 파일에 접근하기 어렵기 때문에 권한을 일시적으로 열어야 합니다.
mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist
따라서 모든 사용자가 디렉터리와 파일을 읽고 쓸 수 있습니다. 그런 다음 편의를 위해 로그인 ID를 사용하십시오.
mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist
이는 Xcode가 *.plist 파일을 여는 기본 앱이고 사용자가 속성 목록 편집기에 익숙하다고 가정합니다. 루트 속성에는 다음과 같은 3개의 기본 사전 항목이 있습니다.
com.appl
com.appl.locationd.executable-/usr/libexec/UserEventAgent
com.appl.aosnotifyd
그것들은 제거되어서는 안 됩니다. 오래 전에 사라진 앱에 속한 항목의 경우 해당 앱 행의 사전 열 바로 왼쪽에 마우스를 가져가면 역회색 '-'가 표시됩니다. 이를 클릭하면 항목과 모든 하위 항목이 제거됩니다. 항목을 먼저 검사하려면 키 문자열 왼쪽에 있는 회색 삼각형(Finder 목록 보기 사용자에게 친숙함)을 클릭하면 사전이 확장되고 해당 요소가 표시됩니다.
만족스럽게 키를 삭제하거나 비활성화한 후 파일을 저장하고 Xcode를 종료하십시오. 그런 다음 터미널로 돌아가서 다음을 수행합니다.
mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root#
위쪽 화살표를 두 번 눌러 chmod 명령을 불러오고, ctrl-A줄의 시작 부분으로 cursor-right약 8번 이동하고, '+'를 '-'로 변경하거나, 표시된 대로 다음을 입력하여 권한을 원래대로 복원합니다.
mini-nevie:~ root# chmod o-rwx /var/db/locationd /var/db/locationd/clients.plist
그런 다음 위치 데몬을 HUP합니다.
mini-nevie:~ root# killall -HUP locationd
Security.PrefPane Privacy 탭을 빠르게 확인하면 변경 사항을 확인할 수 있습니다.
표준 면책 조항, 비애에 대한 경고 이야기, 꾸짖음, 꼬꼬댁 소리, "이 여행이 정말 필요한가요?" 특히 반사가 적용 가능합니다.
답변2
tccutil(OS X 명령줄 유틸리티) 사용
내 생각에 이 작업을 수행하는 가장 빠르고 안전한 방법은 OS X 명령줄 유틸리티를 사용하는 것입니다.tccutil
- 새 터미널 창 열기
- 열려 있는 "보안 및 개인 정보 보호" 기본 창을 모두 닫습니다.
- 다음 강조 표시된 명령을 입력하거나 붙여넣으세요.
위치 서비스 재설정
tccutil reset CoreLocationAgent
연락처/주소록에 대한 액세스 재설정:
tccutil reset AddressBook
알림에 대한 액세스 재설정
tccutil reset Reminders
캘린더에 대한 액세스 재설정
tccutil reset Calendar
그리고 그게 전부입니다. 그런데 Sudo는 필요하지 않습니다.
답변3
이것은 오래된 것이며 제가 제안하는 솔루션은 게시물의 솔루션과 기술적으로 다르지 않지만, 훨씬 덜 번거롭고 자동화하기가 훨씬 쉽습니다(디버깅에 유용합니다). 그냥 해
/usr/libexec/PlistBuddy -c 'Delete <bundle-id>' /var/db/locationd/clients.plist
killall -HUP locationd
루트로.
답변4
이전 답변 외에도 이 문제는 파일 소유권을 수정한 후에야 사라졌습니다.
# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist
그런 다음 컴퓨터를 다시 시작하십시오.