Mac OS X 10.8의 보안 및 개인 정보 보호에서 위치 서비스에서 응용 프로그램 제거


20

MaC OS X 10.8 Mountain Lion의 보안 및 개인 정보 설정에서 위치 서비스에서 응용 프로그램을 제거하고 싶었습니다. (앱이 제거되었지만 앱이 여전히 나열되어 있습니다.) Mac OS X 10.7의 보안 및 개인 정보에서 위치 서비스에서 애플리케이션 제거 게시물을 발견 하여 올바른 방향으로 나아갔습니다. 다음은 OS X 10.8.2 Mountain Lion과 동등한 기능입니다. 주요 차이점은 clients.plist 파일의 위치입니다. 또한 단계별 프로세스를 제공하고 싶었습니다.

면책 조항 : 이것은 나를 위해 일했습니다. 시스템을 제대로 백업했는지 확인하십시오. 이 프로세스에는 clients.plist 파일 백업이 포함되지만 너무 안전 할 수는 없습니다.

1. 터미널을 시작하고 루트 쉘로 sudo
sudo -s

2. / var / db / locationd로 이동하십시오.
cd /var/db/locationd

3. clients.plist 파일을 백업하십시오
cp -p clients.plist clients.plist.save

clients.plist를 xml (편집 가능한 형식)로 변환
plutil -convert xml1 clients.plist

5. vi (vim)를 사용하여 clients.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>

clients.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로 충분했습니다. 두 번째는 아니었다. 이유를 모르겠습니다. 캐시를 유지하고 clients.plist를 재 구축하는 것처럼 작동했습니다. killall을 실행 한 후 재부팅 할 때조차 항목이 clients.plist에 다시 추가 되었기 때문에 이것을 말합니다. 근본 원인이 무엇이든 kill -9를 사용하면 문제가 해결되었습니다.

문제가 발생하면 원래 파일을 다시 복사하고 위치를 다시 시작하십시오.
cp -p clients.plist.save clients.plist
killall locationd(또는 kill -9 방법)

이게 도움이 되길 바란다. 건배!


1
kill -HUP가 더 안정적 일 수 있습니다. 데몬에게 캐시를 플러시하고 구성 파일을 다시 읽도록 지시하는 것은 레거시 킬 신호입니다. killall -HUP 위치가 작동한다는 것을 알았습니다. 다른 킬이 작동하지 않는 이유는 새로 생성 된 프로세스에서 캐시 파일을 읽도록 남겨둔 것일 수 있습니다.
Nevin Williams

재미있는 사실 :이 동작이 High Sierra 이전에 존재했는지 확실하지 않지만 환경 설정 창에 더 이상 존재하지 않는 파일을 선택 취소하면 적어도이 macOS에서는 일반적 으로 응용 프로그램이 더 이상 목록에 표시하지 않습니다. 그러나이 방법을 사용하여 삭제 된이 앱 중 일부가 실제로 목록에 있지만 표시되지 않았다는 것을 알았습니다.
DonielF

나는 이것에 대한 나의 경험에 근거하여주의를 기울여야한다 : 나는 이것을 사용하여 시스템 환경 설정에서 내 Applescript를 제거하려고 시도했으며, 마침내 종료 될 때까지 여러 번 시도하여 내 위치를 원했다는 팝업이 계속 나타납니다. Applescript에서 해당 코드 줄을 계속 실행하려고했기 때문에 bash가 시스템 환경 설정에서 삭제 될 때까지 백그라운드에서 계속 실행되었으므로 bash의 다음 줄로 넘어갔습니다. 백그라운드에서 여러 개의 실행이 있었으므로 분명히이 작업을 수행하는 동안 각각을 개별적으로 취소해야했습니다.
DonielF

답변:


5

Xcode의 속성 목록 편집기를 사용하여 오래된 앱의 항목을 삭제할 수도 있지만 파일을 얻기가 어려우므로 권한을 임시로 열어야합니다.

mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist

모든 사용자가 디렉토리와 파일을 읽고 쓸 수 있습니다. 그런 다음 편의상 로그인 ID로 su :

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 개인 정보 탭을 빠르게 확인하면 변경 사항을 확인해야합니다.

표준 면책 조항, 비난에 대한주의 이야기, 꾸짖음, 뻐꾸기 및 "이 여행은 정말 필요한가요?" 반사가 특히 적용 가능하다.


3

tccutil 사용 (OS X 명령 행 유틸리티)

가장 빠르고 안전한 방법은 OS X 명령 행 유틸리티 tccutil에 의한 것입니다.

  • 새 터미널 창을 엽니 다
  • 열려있는 "보안 및 개인 정보"프리 판 창을 모두 닫습니다.
  • 다음 강조 표시된 명령을 입력하거나 붙여 넣기

위치 서비스 재설정

tccutil reset CoreLocationAgent

연락처 / 주소록 액세스 재설정 :

tccutil reset AddressBook

알림에 대한 액세스 재설정

tccutil reset Reminders

캘린더에 대한 액세스 재설정

tccutil reset Calendar

그리고 그것이 전부입니다. 그런데 Sudo가 필요하지 않았습니다.


불행히도 나를 위해 일하지 않습니다. 데이터베이스를 재설정하지 못했습니다 메시지가 표시됩니다.
strangetimes

@ strangetimes : 나는 이것에 대해 완전히 잊었다. 나는이 링크에서 언급 한 수정 된 tccutil을 시도하지 않았지만, 그것은 가치가있는 것처럼 보입니다 : github.com/jacobsalmela/tccutil
Andreas

@strangetimes
Andreas

명령 tccutil reset CoreLocationAgent이 더 이상 작동하지 않는 것 같습니다. 이 문제를 참조하십시오 .
nix

캘린더를 삭제했지만 새 인증을 요청하지 않았습니다. 그렇게하려면 사용자 / 라이브러리 / 달력 / 달력 캐시 데이터베이스를 제거한 다음 컴퓨터를 다시 시작해야합니다
Cristi Băluță

1

이것은 오래된 것이고 내가 제안한 솔루션은 게시물의 솔루션과 기술적으로 다르지 않고 받아 들일 수 있지만 자동화하기가 훨씬 적고 훨씬 쉽습니다 (디버깅에 유용). 그냥 해

/usr/libexec/PlistBuddy -c 'Delete <bundle-id>' /var/db/locationd/clients.plist
killall -HUP locationd

루트로.


나를 위해 작동합니다. 감사!
dbv

0

이전 답변 외에도이 문제는 파일 소유권을 수정 한 후에 만 ​​사라졌습니다.

# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist

그런 다음 컴퓨터를 다시 시작하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.