Vô hiệu hóa yêu cầu mật khẩu bảo vệ màn hình từ dòng lệnh


11

Tôi đang cố gắng kích hoạt và vô hiệu hóa yêu cầu mật khẩu bảo vệ màn hình từ dòng lệnh.

defaults read com.apple.screensaver

hiển thị một biến AskForPassword được đặt thành 0 hoặc 1, tùy thuộc vào việc tôi có cấu hình yêu cầu mật khẩu trong Tùy chọn hệ thống hay không.

defaults write com.apple.screensaver askForPassword 1

defaults write com.apple.screensaver askForPassword 0

kích hoạt và vô hiệu hóa cài đặt mật khẩu, hoặc tôi nghĩ vậy.

Thay vào đó, điều tôi tìm thấy là các lệnh thực sự kiểm tra và bỏ chọn hộp kiểm trong Tùy chọn hệ thống trong Bảo mật nhưng hoàn toàn không ảnh hưởng đến trình bảo vệ màn hình.

Nếu tôi bật mật khẩu trong Tùy chọn hệ thống và sau đó vô hiệu hóa bằng lệnh ghi mặc định thứ hai, hộp kiểm trong Tùy chọn hệ thống sẽ không được chọn, nhưng trình bảo vệ màn hình vẫn sẽ yêu cầu mật khẩu. Chỉ kiểm tra và bỏ chọn hộp kiểm trong Tùy chọn hệ thống mới có thể thay đổi hành vi này ngay bây giờ.

Và nếu tôi vô hiệu hóa mật khẩu trong Tùy chọn hệ thống và sau đó kích hoạt nó bằng lệnh ghi mặc định đầu tiên, hộp kiểm trong Tùy chọn hệ thống sẽ được chọn, nhưng màn hình sẽ không yêu cầu mật khẩu. Chỉ bỏ chọn và kiểm tra hộp kiểm trong Tùy chọn hệ thống sẽ thay đổi hành vi sau đó.

Chuyện gì đang xảy ra vậy?

Tôi có thể tưởng tượng rằng đây là cài đặt toàn cầu và tôi nên sửa đổi /Library/Preferences/com.apple.screensaverthay vì miền người dùng. Nhưng trong trường hợp đó, tại sao lại có hiệu ứng trên hộp kiểm Tùy chọn hệ thống?


Đây là một chút hoang mang. Tôi đã xem tập tin đọc / ghi trong khi chuyển đổi cài đặt 'hỏi mật khẩu'. Tệp duy nhất mà tôi có thể thấy đang được sửa đổi là com.apple.sc Greensaver. Tôi đoán rằng một tin nhắn được gửi đến một số dịch vụ khi nút này được bật trong GUI cũng như ghi vào tệp plist. Tôi muốn rằng việc khởi động lại hệ thống hoặc đăng xuất / đăng nhập có thể khiến tệp được đọc lại bởi dịch vụ đã nói, thực hiện thay đổi mong muốn.
macaco

1
Tôi đã đúng! Đăng xuất và sau đó quay lại sau khi thay đổi tệp plist khiến thay đổi cài đặt được phản ánh. Vì vậy, có vẻ như bạn cần tìm dịch vụ nào đang kiểm soát hành vi 'yêu cầu mật khẩu' và đặt lại / tải lại sau khi sửa đổi bản chính.
macaco

Có vẻ như Apple làm suy yếu cơ chế chính của họ.
Andrew J. Brehm

Ta. Tôi hy vọng ai đó sẽ biết điều đó và trả lời ở đây.
Andrew J. Brehm

1
Đó là quá trình 'loginwindow' dường như truy cập tệp này sau khi nó được viết bởi System Preferences. Mà có ý nghĩa. Thật không may, giết quá trình đăng nhập sẽ buộc bạn đăng xuất. Hãy tiếp tục đào!
macaco

Câu trả lời:


7

Nếu bạn không bị buộc phải sử dụng mặc định ghi, bạn có thể sử dụng lệnh sau. Nó tương tác với HĐH giống như khi bạn sử dụng Tùy chọn hệ thống.

KIỂM TRA:

  • 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'

LƯU Ý: Nếu lệnh đang được chạy bên trong tập lệnh đã được cấp quyền root, bạn sẽ không cần sudo .

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

Đẹp! Dòng lệnh AppleScript thường là một giải pháp tốt cho loại vấn đề này.
Daniel

@DanielLawson Cảm ơn, bạn có đang làm việc vào ngày 10.7 không? Tôi thường muốn đăng những gì hệ điều hành mà tôi đã kiểm tra các lệnh của mình và không may sáng nay tôi bị kẹt với một máy Snow Leopard cũ và sẽ không có quyền truy cập vào máy 10.7 cho đến ngày hôm nay. Tôi ghét nó hoạt động trên 10.6.x và thất bại vào ngày 10.7: Tuy nhiên, tôi khá chắc chắn điều này sẽ hoạt động vì các plists rất giống nhau. Tôi biết màn hình của 10.5. Dù sao đi nữa, xin cảm ơn một lần nữa .
Hàng)

1
Tôi đã thử nghiệm điều này vào ngày 10.7.5 trên OS X Server và nó không hoạt động. Trình bảo vệ màn hình vẫn yêu cầu mật khẩu và tùy chọn không được bỏ chọn.

1
Điều này làm việc cho tôi vào ngày 10.11 (El Capitan). Tìm thấy nó từ chủ đề này ( github.com/dustinrue/ControlPlane/issues/421 )
GTF

1
Phương pháp "osascript" không hoạt động trên High Sierra Mac của tôi. Tệp ~ / Library / Preferences / com.apple.sc Greensaver.plist dường như không bị ảnh hưởng bởi công tắc GUI trên High Sierra Mac của tôi.
Kent

3

Tôi gặp một vấn đề tương tự, và tìm thấy một giải pháp từ người dùng Guillaume trên bài đăng diễn đàn này . Về cơ bản, bạn cần buộc trình bảo vệ màn hình đọc lại tùy chọn yêu cầu mật khẩu, điều bạn có thể làm với chương trình 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;
}

Và biên dịch cái này với:

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

Sau đó gọi chương trình này ngay sau khi bạn gọi đến defaults write


Cập nhật: trên High Sierra (10.13.6), nó biên dịch, nhưng báo cáo lỗi này: "ld: /Frameworks//CoreFoundation.framework/CoreFoundation không đồng bộ. Quay trở lại tệp thư viện để liên kết. " Nó không thành công với một lỗi phân khúc khi chạy.
TJ Luoma
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.