Các cơ chế ủy quyền của OS X thực sự làm gì?


13

Lý lịch 

Tôi đang cố gắng tìm hiểu rõ hơn về quy trình đăng nhập OS X, để quyết định cách tốt nhất để đạt được Đăng nhập một lần VPN .

Xin hãy sửa tôi nếu tôi sai, nhưng tôi tin rằng,

  1. launchd(8)các cuộc gọi gettyent(3)và do đó xác định từ ttys(5)để thực hiện loginwindow.appcho /dev/console.

  2. loginwindow.appcố gắng để có được system.login.consolequyền ủy quyền, trong đó cơ sở dữ liệu ủy quyền chỉ định các cơ chế sau (được liệt kê cùng với sự hiểu biết của tôi về chức năng của chúng); những cái được đặc quyền chạy trong authdtiến trình (với quyền root), trong khi những cái không được chạy đặc quyền trong SecurityAgenttiến trình (như _securityagent):

    • builtin:policy-banner(hiển thị biểu ngữ Cửa sổ đăng nhập , nếu được đặt).
    • loginwindow:login (nhắc nhở về thông tin đăng nhập).
    • builtin:login-begin
    • builtin:reset-password,privileged(thực hiện đặt lại mật khẩu bằng Apple ID ).
    • builtin:forward-login,privileged (chuyển tiếp thông tin đăng nhập từ EFI khi khởi động).
    • builtin:auto-login,privileged (áp dụng thông tin đăng nhập tự động khi khởi động).
    • builtin:authenticate,privileged(gọi pam_authenticate(3)cho authorizationdịch vụ; đặt giá trị ngữ cảnh "uid").
    • PKINITMechanism:auth,privileged (khởi tạo Kerberos bằng cách lấy TGT).
    • builtin:login-success
    • loginwindow:success (bảo vệ phiên đăng nhập khỏi truy cập từ xa trái phép; ghi lại thông tin đăng nhập trong cơ sở dữ liệu utmp và utmpx của hệ thống; đặt chủ sở hữu và quyền cho thiết bị đầu cuối giao diện điều khiển).
    • HomeDirMechanism:login,privileged (gắn kết thư mục nhà của người dùng).
    • HomeDirMechanism:status (hiển thị tiến trình gắn thư mục nhà).
    • MCXMechanism:login (áp dụng cấu hình cấu hình).
    • loginwindow:done (đặt lại tùy chọn của người dùng để bao gồm mặc định hệ thống toàn cầu; định cấu hình chuột, bàn phím và âm thanh hệ thống bằng tùy chọn của người dùng; đặt quyền nhóm người dùng; truy xuất bản ghi người dùng từ Dịch vụ thư mục và áp dụng thông tin đó vào phiên môi trường bao gồm các tùy chọn, biến môi trường, quyền của thiết bị và tệp, truy cập móc khóa, v.v., khởi chạy Dock, Finder và SystemUIServer; khởi chạy các mục đăng nhập cho người dùng).

Câu hỏi

Tôi rất muốn xác nhận sự hiểu biết của tôi về từng chức năng của cơ chế:

  1. Là mã nguồn của họ có sẵn công khai? Tôi biết rằng các builtincơ chế không được xác định bởi các plugin có thể được tìm thấy bên dưới /System/Library/CoreServices/SecurityAgentPlugins, nhưng tôi không thể tìm thấy nguồn mà chúng được xây dựng. Tôi cũng không thể tìm thấy nơi các builtincơ chế được xác định.

  2. Nếu nguồn không có sẵn, các cơ chế được ghi nhận ở bất cứ đâu?

Quan sát

  1. Làm thế nào có thể loginwindow:loginnhắc thông tin đăng nhập nếu nó được gọi trước đó builtin:forward-loginbuiltin:auto-loginmột trong hai điều đó khiến GUI bị bỏ qua? Liệu nó có kiểm tra bối cảnh cho các thông tin như vậy và bỏ qua chính nó nếu chúng có mặt? Có vẻ lạ.

  2. Hơn nữa, như được mô tả trong sách trắng kỹ thuật Xác thực 802.1X của Apple :

    Khi Chế độ cửa sổ đăng nhập được cấu hình và người dùng nhập tên người dùng và mật khẩu tại cửa sổ đăng nhập, hai điều sẽ xảy ra. Đầu tiên, cửa sổ đăng nhập sẽ xác thực máy tính qua 802.1X vào mạng bằng tên người dùng và mật khẩu người dùng đã nhập. Sau khi xác thực 802.1X thành công, cửa sổ đăng nhập sẽ xác thực cùng tên người dùng và mật khẩu cho thư mục bên ngoài.

    Do giai đoạn thứ hai của xác thực đó được xử lý bởi pam_opendirectory.somô-đun và phụ thuộc vào mạng hiện diện, nên giai đoạn đầu tiên (xác thực qua 802.1X vào mạng) nhất thiết phải xảy ra trước đó. Đó là, nó phải xảy ra trước builtin:authenticatecơ chế.

    Từ một kiểm tra ngẫu nhiên về loginwindownhị phân plugin, có vẻ như nó xử lý xác thực 802.1X như vậy nhưng cơ chế duy nhất được gọi trong plugin đó trước đó builtin:authenticateloginwindow:login. Tôi có đúng không khi nghĩ rằng cơ chế này không chỉ hiển thị lời nhắc đăng nhập mà còn thử xác thực 802.1X? (Nếu vậy, IMHO không chỉ có vẻ hơi cẩu thả mà còn gợi ý rằng thông tin đăng nhập từ EFI / tự động đăng nhập không thể được sử dụng để xác thực cửa sổ đăng nhập 802.1X.)

Câu trả lời:


1
  1. Từ những gì tôi nhớ lại loginwindow: đăng nhập thực sự được sử dụng để sinh ra cửa sổ đăng nhập GUI, tương tự như nội dung: biểu ngữ chính sách. Vì vậy, thật hợp lý khi được sinh ra trước các hành động còn lại. Vì vậy, cửa sổ GUI là cửa sổ thực sự không liên quan / có thể bỏ qua, không phải là thông tin đăng nhập.

  2. Chính xác những gì bạn muốn sửa đổi và hướng tới mục đích gì? Ví dụ: nếu bạn yêu cầu plugin ủy quyền được gọi trong các tình huống khác, bạn có thể làm điều đó bằng cách chỉnh sửa auth.db.

Ngoài ra, nội dung: xác thực các hệ thống con sẽ xử lý sự khác biệt giữa 802.1X và auth cục bộ.


1
builtin:forward-login,privileged

Chuyển tiếp đăng nhập FileVault thành công vào Cửa sổ đăng nhập OS X và bỏ qua nhu cầu đăng nhập tại đó. Nó giống như đăng nhập một lần. Tôi vô hiệu hóa điều này trong môi trường của mình vì nó không sử dụng cấu hình 802.1X mà tôi đã thiết lập. Tôi sẽ thử làm điều đó.

OS X: Cách tắt đăng nhập tự động khi bật FileVault

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
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.