กลไกการอนุญาต OS X ทำอะไรได้จริง?


13

พื้นหลัง 

ฉันพยายามที่จะรวบรวมความเข้าใจที่ดีขึ้นของการเข้าสู่ระบบ OS X, เพื่อที่จะตัดสินใจวิธีที่ดีที่สุดเพื่อให้บรรลุVPN Single Sign On

โปรดแก้ไขให้ฉันด้วยถ้าฉันผิด แต่ฉันเชื่อว่า -

  1. launchd(8)เรียกgettyent(3)จึงกำหนดจากttys(5)การดำเนินการสำหรับloginwindow.app/dev/console

  2. loginwindow.appพยายามที่จะได้รับsystem.login.consoleสิทธิ์การอนุญาตซึ่งฐานข้อมูลการอนุญาตระบุกลไกต่อไปนี้ (แสดงพร้อมกับความเข้าใจในการทำงานของพวกเขา); ผู้ที่มีสิทธิ์ใช้งานภายในauthdกระบวนการ (เป็น root) ในขณะที่รายการที่ไม่ได้รับสิทธิ์ให้ดำเนินการภายในSecurityAgentกระบวนการ (เป็น _securityagent):

    • builtin:policy-banner(แสดงแบนเนอร์หน้าต่างเข้าสู่ระบบหากตั้งค่าไว้)
    • loginwindow:login (แจ้งขอข้อมูลประจำตัว)
    • builtin:login-begin
    • builtin:reset-password,privileged(ทำการรีเซ็ตรหัสผ่านโดยใช้ Apple ID )
    • builtin:forward-login,privileged (ส่งต่อข้อมูลประจำตัวจาก EFI เมื่อบูต)
    • builtin:auto-login,privileged (ใช้ข้อมูลรับรองการเข้าสู่ระบบอัตโนมัติเมื่อบูต)
    • builtin:authenticate,privileged(จะเรียกpam_authenticate(3)สำหรับauthorizationบริการชุด "โพสต์" ค่าบริบท)
    • PKINITMechanism:auth,privileged (เริ่มต้น Kerberos โดยรับ TGT)
    • builtin:login-success
    • loginwindow:success (รักษาความปลอดภัยเซสชั่นเข้าสู่ระบบจากการเข้าถึงระยะไกลที่ไม่ได้รับอนุญาตบันทึกการเข้าสู่ระบบในฐานข้อมูล utmp และ utmpx ของระบบตั้งค่าเจ้าของและสิทธิ์สำหรับเทอร์มินัลคอนโซล)
    • HomeDirMechanism:login,privileged (เมาท์โฮมไดเร็กทอรีของผู้ใช้)
    • HomeDirMechanism:status (แสดงความคืบหน้าของการติดตั้งโฮมไดเร็กทอรี)
    • MCXMechanism:login (ใช้โปรไฟล์กำหนดค่า)
    • loginwindow:done (รีเซ็ตการตั้งค่าของผู้ใช้เพื่อรวมค่าเริ่มต้นของระบบทั่วโลกกำหนดค่าเมาส์แป้นพิมพ์และเสียงของระบบโดยใช้การตั้งค่าของผู้ใช้ตั้งค่าการอนุญาตกลุ่มของผู้ใช้ดึงบันทึกผู้ใช้จากบริการไดเรกทอรีและใช้ข้อมูลนั้นกับเซสชัน environment— รวมถึงการตั้งค่าตัวแปรสภาพแวดล้อม, สิทธิ์ของอุปกรณ์และไฟล์, การเข้าถึง Keychain และอื่น ๆ ; เปิดตัว Dock, Finder และ SystemUIServer; เปิดตัวรายการล็อกอินสำหรับผู้ใช้)

คำถาม

ฉันอยากจะยืนยันความเข้าใจของฉันเกี่ยวกับฟังก์ชั่นของแต่ละกลไกเป็นอย่างมาก:

  1. ซอร์สโค้ดของพวกเขาเปิดเผยอย่างเปิดเผยหรือไม่ ฉันรู้ว่าไม่ใช่builtinกลไกที่ถูกกำหนดโดยปลั๊กอินที่สามารถพบได้ภายใต้/System/Library/CoreServices/SecurityAgentPluginsแต่ฉันไม่สามารถหาแหล่งที่พวกเขาถูกสร้างขึ้น ฉันไม่สามารถหาที่ที่builtinกลไกถูกกำหนดได้

  2. หากแหล่งกำเนิดไม่พร้อมใช้งานกลไกจะถูกบันทึกไว้ทุกที่หรือไม่?

ข้อสังเกต

  1. จะloginwindow:loginให้พรอมต์สำหรับข้อมูลประจำตัวได้อย่างไรหากมีการเรียกใช้มาก่อน builtin:forward-loginและbuiltin:auto-loginสาเหตุใดที่ทำให้ GUI ถูกข้าม? มันตรวจสอบบริบทสำหรับข้อมูลประจำตัวดังกล่าวและข้ามตัวเองหากพวกเขามีอยู่? ดูเหมือนจะแปลก

  2. นอกจากนี้ตามที่อธิบายไว้ในเอกสารทางเทคนิค802.1X Authenticationของ Apple :

    เมื่อกำหนดค่าโหมดหน้าต่างล็อกอินและประเภทผู้ใช้ในชื่อผู้ใช้และรหัสผ่านที่หน้าต่างเข้าสู่ระบบจะมีสองสิ่งเกิดขึ้น ก่อนอื่นหน้าต่างล็อกอินจะตรวจสอบคอมพิวเตอร์ผ่าน 802.1X ไปยังเครือข่ายโดยใช้ชื่อผู้ใช้และรหัสผ่านที่ผู้ใช้ป้อน หลังจากการตรวจสอบความถูกต้อง 802.1X สำเร็จหน้าต่างการเข้าสู่ระบบจะรับรองความถูกต้องชื่อผู้ใช้และรหัสผ่านเดียวกันกับไดเรกทอรีภายนอก

    เนื่องจากขั้นตอนที่สองของการพิสูจน์ตัวตนนั้นได้รับการจัดการโดยpam_opendirectory.soโมดูลและขึ้นอยู่กับเครือข่ายที่มีอยู่ขั้นตอนแรก (การตรวจสอบความถูกต้องผ่าน 802.1X ไปยังเครือข่าย) จะต้องเกิดขึ้นก่อนหน้านั้น นั่นคือมันจะต้องเกิดขึ้นก่อนที่builtin:authenticateกลไก

    จากการตรวจสอบที่สบาย ๆ ของloginwindowไบนารีปลั๊กอินมันก็ดูเหมือนว่าจะจัดการกับ 802.1X รับรองความถูกต้อง แต่เช่นกลไกเท่านั้นเรียกว่าภายในปลั๊กอินก่อนที่จะมีbuiltin:authenticate loginwindow:loginฉันถูกต้องโดยคิดว่ากลไกนี้ไม่เพียงแสดงพรอมต์การเข้าสู่ระบบ แต่ยังพยายามรับรองความถูกต้อง 802.1X หรือไม่ (ถ้าเป็นเช่นนั้นไม่เพียง แต่ดูเหมือนว่าจะเป็น IMHO ที่เลอะเทอะ แต่ยังแนะนำว่าไม่สามารถใช้ข้อมูลรับรองจาก EFI / การเข้าสู่ระบบอัตโนมัติสำหรับการตรวจสอบความถูกต้องของหน้าต่างการเข้าสู่ระบบ 802.1X ได้)

คำตอบ:


1
  1. จากสิ่งที่ฉันจำ loginwindow: จริง ๆ แล้วใช้ล็อกอินในการพล่านหน้าต่างเข้าสู่ระบบ GUI คล้ายกับ builtin: policy-banner ดังนั้นจึงมีเหตุผลที่จะวางไข่ต่อหน้าการกระทำที่เหลือ ดังนั้นหน้าต่าง GUI จึงเป็นหน้าต่างที่ไม่เกี่ยวข้อง / บายพาสจริงๆไม่ใช่ข้อมูลประจำตัว

  2. สิ่งที่คุณต้องการแก้ไขและไปสู่วัตถุประสงค์อะไร? ตัวอย่างเช่นหากคุณต้องการให้มีการเรียกใช้ปลั๊กอินการให้สิทธิ์ในสถานการณ์อื่น ๆ คุณสามารถทำได้โดยแก้ไข auth.db

นอกจากนี้ builtin: รับรองระบบย่อยควรจัดการความแตกต่างระหว่าง 802.1X และรับรองความถูกต้องท้องถิ่น


1
builtin:forward-login,privileged

ส่งต่อการล็อกอิน FileVault ที่สำเร็จไปยังหน้าต่างการเข้าสู่ระบบ OS X และข้ามความจำเป็นในการเข้าสู่ระบบที่นั่น มันเหมือนกับการลงชื่อเพียงครั้งเดียว ฉันปิดใช้งานสิ่งนี้ในสภาพแวดล้อมของฉันเนื่องจากไม่ได้ใช้โปรไฟล์ 802.1X ที่ฉันได้ตั้งค่าไว้ ฉันจะลองทำอย่างนั้น

OS X: วิธีปิดใช้งานการเข้าสู่ระบบอัตโนมัติเมื่อเปิดใช้งาน FileVault

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.