เหตุใด OS X จึงต้องการสิทธิ์ผู้ดูแลระบบเพื่อยกเลิกการต่อเชื่อมไดรฟ์จากเทอร์มินัลโดยใช้ "umount" แต่ไม่ใช้เมื่อค้นหา Finder


21

ทุกคนสามารถยกเลิกการต่อเชื่อมไดรฟ์ usb จาก Finder ได้โดยคลิกที่ไอคอน "นำออก" ที่อยู่ข้างๆ umountแต่เพียงผู้ใช้ที่มีสิทธิ์ผู้ดูแลระบบสามารถเลิกเมานท์ไดรฟ์จากท่าเรือโดยใช้

มีumountและ "นำออก" ที่แตกต่างกันในบางวิธีที่ต้องใช้การรักษาความปลอดภัยมากขึ้นสำหรับการumountจากสถานี?

หมายเหตุฉันใช้ OS X 10.8.2

คำตอบ:


34

umountเป็นคำสั่งที่ใช้ระบบปฏิบัติการยูนิกซ์ที่เป็นไปตามมุมมองของ UNIX แบบดั้งเดิมที่ unmounting ระบบแฟ้มเป็นงานการบริหารระบบ

เหตุผลที่อยู่เบื้องหลังคือการยกเลิกการต่อเชื่อมระบบไฟล์หากวางแผนหรือดำเนินการไม่ดีอาจก่อให้เกิดความเสียหายได้โดยเฉพาะในระบบที่มีผู้ใช้หลายคน ดังนั้นผู้ใช้ทั่วไปจะได้รับการปกป้องจากคำสั่งที่อาจเป็นอันตรายนี้และอนุญาตให้รูทหรือผู้ใช้ที่ได้รับสิทธิพิเศษเท่านั้นที่สามารถดำเนินการได้

นี่เป็นเรื่องที่สมเหตุสมผลเมื่อใช้ UNIX เป็นระบบปฏิบัติการเซิร์ฟเวอร์ แต่ระบบปฏิบัติการเดสก์ท็อปที่ใช้ UNIX (เช่น OS X หรือUbuntu ) มีความต้องการอื่น ๆ : ผู้ใช้ทุกคนควรสามารถถอดแฟลชไดรฟ์ฮาร์ดไดรฟ์ที่ถอดออกได้ ฯลฯ .

การค้นหาและdiskutil(ดูdiskutil คนสำหรับข้อมูลเพิ่มเติม) ทำงานด้วยวิธีนี้ ตัวอย่างเช่นฉันสามารถเปิด Terminal และรันได้สำเร็จ:

$ diskutil unmount /Volumes/Untitled
Volume Untitled on disk2s2 unmounted

ในขณะที่umountล้มเหลว:

$ umount /Volumes/Untitled
umount: unmount(/Volumes/Untitled): Operation not permitted

Finder หรือdiskutilทำอะไรแตกต่าง เบื้องหลังพวกเขาส่งคำขอไปยังdaemonชื่อcom.apple.SecurityServer (ดูหน้า manสำหรับข้อมูลเพิ่มเติม) ซึ่งให้สิทธิ์ในการ unmount ระบบไฟล์:

$ tail -f /var/log/system.log
Feb  6 16:57:37 avallone.local com.apple.SecurityServer[17]: Succeeded authorizing right 'system.volume.removable.unmount' by client '/System/Library/CoreServices/Finder.app' [171] for authorization created by '/System/Library/CoreServices/Finder.app' [171] (100013,0)
Feb  6 16:57:37 avallone.local com.apple.SecurityServer[17]: Succeeded authorizing right 'system.volume.removable.unmount' by client '/usr/sbin/diskarbitrationd' [18] for authorization created by '/System/Library/CoreServices/Finder.app' [171] (100002,0)
Feb  6 17:01:46 avallone.local com.apple.SecurityServer[17]: Succeeded authorizing right 'system.volume.removable.unmount' by client '/usr/sbin/diskutil' [646] for authorization created by '/usr/sbin/diskutil' [646] (100013,0)
Feb  6 17:01:46 avallone.local com.apple.SecurityServer[17]: Succeeded authorizing right 'system.volume.removable.unmount' by client '/usr/sbin/diskarbitrationd' [18] for authorization created by '/usr/sbin/diskutil' [646] (100002,0)

วิธีนี้ช่วยให้ผู้ใช้สามารถยกเลิกการต่อเชื่อมไดรฟ์โดยไม่ต้องมีการตรวจสอบสิทธิ์เพิ่มเติม (Ubuntu มีปรัชญาที่คล้ายกันหากคุณสนใจลองดูคำตอบนี้ใน AskUbuntu)

เพื่อรองรับพฤติกรรมที่อธิบายไว้ด้านบน Finder และdiskutilใช้กรอบงานของ Apple หลายแบบ:

$ otool -L $(which diskutil) | grep Disk
/System/Library/PrivateFrameworks/DiskManagement.framework/Versions/A/DiskManagement (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
$ otool -L /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder | grep Disk
/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
/System/Library/PrivateFrameworks/DiskImages.framework/Versions/A/DiskImages (compatibility version 1.0.8, current version 344.0.0)
/System/Library/PrivateFrameworks/DiskManagement.framework/Versions/A/DiskManagement (compatibility version 1.0.0, current version 1.0.0)

umountในอีกด้านหนึ่งจะเชื่อมโยงกับไลบรารีแบบไดนามิกนี้เท่านั้น:

$ otool -L $(which umount) 
/sbin/umount:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

( /usr/lib/libSystem.B.dylibใช้ไลบรารีอื่นหลายแห่ง แต่ไม่เชื่อมโยงกับกรอบงานใด ๆ )


1
คำตอบที่ยอดเยี่ยม! ขอบคุณ diskutilผมมาจากแม็คลินุกซ์ดังนั้นผมจึงไม่ทราบเกี่ยวกับ นั่นคือความรู้ที่ดีที่จะมี
DQdlM

ขอบคุณฉันดีใจที่ฉันสามารถช่วยแยกความแตกต่างระหว่างumountและdiskutil/ Finder
jaume
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.