Tại sao OS X yêu cầu đặc quyền của quản trị viên để ngắt kết nối ổ đĩa khỏi thiết bị đầu cuối bằng cách sử dụng `umount` mà không phải khi sử dụng Finder?


21

Bất cứ ai cũng có thể ngắt kết nối ổ đĩa USB khỏi Finder bằng cách nhấp vào biểu tượng "đẩy" bên cạnh nó. Tuy nhiên, chỉ người dùng có đặc quyền quản trị mới có thể ngắt kết nối ổ đĩa từ thiết bị đầu cuối bằng cách sử dụng umount.

umountvà "đẩy" khác nhau theo một cách nào đó đòi hỏi bảo mật hơn umounttừ thiết bị đầu cuối?

Lưu ý tôi đang chạy OS X 10.8.2

Câu trả lời:


34

umountlà một lệnh UNIX tuân thủ quan điểm UNIX truyền thống rằng việc ngắt kết nối một hệ thống tệp là một nhiệm vụ quản trị hệ thống .

Lý do đằng sau là việc ngắt kết nối một hệ thống tập tin, nếu được lập kế hoạch hoặc thực hiện kém, có thể gây rối, thậm chí phá hoại, đặc biệt là trên hệ thống nhiều người dùng. Vì vậy, người dùng thường xuyên được bảo vệ khỏi lệnh nguy hiểm tiềm tàng này và chỉ người dùng root hoặc người dùng đặc quyền mới được phép thực thi nó.

Điều này rất có ý nghĩa khi UNIX được sử dụng làm hệ điều hành máy chủ, nhưng HĐH máy tính để bàn dựa trên UNIX (ví dụ: OS X hoặc Ubuntu ) có các nhu cầu khác: bất kỳ người dùng nào cũng có thể ngắt kết nối ổ đĩa flash, ổ cứng di động, v.v. .

Finder và diskutil(xem man đĩautil để biết thêm thông tin) hoạt động theo cách này. Ví dụ: tôi có thể mở Terminal và chạy thành công:

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

trong khi umountthất bại:

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

Finder là gì hoặc diskutillàm khác nhau là gì? Đằng sau hậu trường, họ gửi yêu cầu đến một daemon có tên com.apple.SecurityServer (xem trang man để biết thêm thông tin), cho phép quyền ngắt kết nối hệ thống tập tin:

$ 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)

Điều này cho phép bất kỳ người dùng nào ngắt kết nối ổ đĩa mà không yêu cầu xác thực bổ sung. (Ubuntu có một triết lý tương tự. Nếu bạn quan tâm, hãy xem câu trả lời này trên AskUb Ubuntu.)

Để hỗ trợ hành vi được giải thích ở trên Finder và diskutilsử dụng một số khung của 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, mặt khác, chỉ được liên kết với thư viện động này:

$ 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.dylibsử dụng một số thư viện khác, nhưng không được liên kết với bất kỳ khung nào.)


1
Câu trả lời tuyệt vời! Cảm ơn. Tôi đã đến mac từ linux vì vậy tôi không biết về nó diskutil. Đó là kiến ​​thức tốt để có.
DQdlM

Cảm ơn, tôi rất vui vì tôi có thể giúp làm sáng tỏ sự khác biệt giữa umountdiskutil/ Finder.
jaume
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.