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
ใช้ไลบรารีอื่นหลายแห่ง แต่ไม่เชื่อมโยงกับกรอบงานใด ๆ )
diskutil
ผมมาจากแม็คลินุกซ์ดังนั้นผมจึงไม่ทราบเกี่ยวกับ นั่นคือความรู้ที่ดีที่จะมี