명령 행에서 화면 보호기 비밀번호 요구 사항 사용 안함 설정에서 암호를 활성화 한

명령 줄에서 화면 보호기 암호 요구 사항을 활성화 및 비활성화하려고합니다.

defaults read com.apple.screensaver

시스템 환경 설정에서 암호 요구 사항을 구성했는지 여부에 따라 askForPassword 변수를 0 또는 1로 설정합니다.

defaults write com.apple.screensaver askForPassword 1

defaults write com.apple.screensaver askForPassword 0

암호 설정을 사용하거나 사용하지 않도록 설정했습니다.

내가 찾은 것은 실제로 명령이 보안 아래의 시스템 환경 설정에서 확인란을 선택 및 선택 취소하지만 화면 보호기에 전혀 영향을 미치지 않는다는 것입니다.

시스템 환경 설정에서 암호를 활성화 한 다음 두 번째 기본 쓰기 명령을 사용하여 비활성화하면 시스템 환경 설정의 확인란이 선택 해제되지만 화면 보호기는 여전히 암호를 묻습니다. 시스템 환경 설정에서 확인란을 선택하거나 선택 취소하면이 동작을 변경할 수 있습니다.

시스템 환경 설정에서 암호를 비활성화 한 다음 첫 번째 기본 쓰기 명령을 사용하여 암호를 활성화하면 시스템 환경 설정의 확인란이 선택되지만 화면 보호기는 암호를 요구하지 않습니다. 시스템 환경 설정에서 확인란을 선택 취소하고 확인 만하면 동작이 변경됩니다.

무슨 일이야?

이것이 전역 설정이라고 생각할 수 /Library/Preferences/com.apple.screensaver있으며 사용자 도메인 대신 수정해야 합니다. 그러나이 경우 시스템 환경 설정 확인란에 영향을주는 이유는 무엇입니까?



답변

강제로 기본값을 쓰지 않으면 다음 명령을 사용할 수 있습니다. 시스템 환경 설정을 사용하는 것처럼 OS와 상호 작용합니다.

시험 :

  • 10.5.x
  • 10.6.x
  • 10.7.x
  • 10.8.x
  • 10.9.x

sudo osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'

참고 : 루트 권한이 부여 된 스크립트 내에서 명령을 실행중인 경우 sudo 가 필요하지 않습니다 .

osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'

답변

비슷한 문제가 발생 하여이 포럼 게시물 에서 Guillaume 사용자의 솔루션을 찾았 습니다 . 기본적으로 화면 보호기는 C 프로그램으로 수행 할 수있는 암호 요구 사항 환경 설정을 다시 읽도록해야합니다.

#include <CoreFoundation/CoreFoundation.h>

int main(int argc, char ** argv)
{
    CFMessagePortRef port = CFMessagePortCreateRemote(NULL, CFSTR("com.apple.loginwindow.notify"));
    CFMessagePortSendRequest(port, 500, 0, 0, 0, 0, 0);
    CFRelease(port);
    return 0;
}

그리고 이것을 다음과 같이 컴파일하십시오 :

cc -o /tmp/anywhereyouwantit/notif notif.c -framework CoreFoundation

그런 다음 전화를 한 직후이 프로그램을 호출하십시오. defaults write