Mengapa OS X memerlukan hak admin untuk melepas drive dari terminal menggunakan `umount` tetapi tidak saat menggunakan Finder?

21

Siapa pun dapat melepas drive usb dari Finder dengan mengklik ikon "eject" di sebelahnya. Namun, hanya pengguna dengan hak administratif yang dapat melepas drive dari terminal menggunakan umount.

Apakah umountdan "mengeluarkan" berbeda dalam beberapa hal yang memerlukan keamanan lebih untuk umountdari terminal?

Catatan saya menjalankan OS X 10.8.2

DQdlM
sumber

Jawaban:

34

umountadalah perintah UNIX yang menganut perspektif UNIX tradisional yang meng-unmount sistem file adalah tugas administrasi sistem .

Alasan di baliknya adalah bahwa melepas sistem file, jika tidak direncanakan atau dijalankan dengan buruk, dapat mengganggu, bahkan merusak, terutama pada sistem multiuser. Jadi pengguna biasa dilindungi dari perintah yang berpotensi berbahaya ini dan hanya root atau pengguna yang memiliki hak istimewa yang diizinkan untuk menjalankannya.

Ini masuk akal ketika UNIX digunakan sebagai sistem operasi server, tetapi OS desktop berbasis UNIX (misalnya, OS X atau Ubuntu ) memiliki kebutuhan lain: setiap pengguna harus dapat melepas drive flash, hard drive yang dapat dilepas, dll. .

Finder dan diskutil(lihat man diskutil untuk informasi lebih lanjut) bekerja dengan cara ini. Misalnya, saya bisa membuka Terminal dan berhasil menjalankan:

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

sedangkan umountgagal:

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

Apa yang Finder atau diskutillakukan berbeda? Di belakang layar, mereka mengirim permintaan ke daemon bernama com.apple.SecurityServer (lihat halaman manual untuk informasi lebih lanjut), yang memberikan hak untuk meng-unmount sistem file:

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

Ini memungkinkan setiap pengguna untuk melepas drive tanpa memerlukan otentikasi tambahan. (Ubuntu memiliki filosofi yang serupa. Jika Anda tertarik, lihat jawaban ini di AskUbuntu.)

Untuk mendukung perilaku yang dijelaskan di atas, Finder dan diskutilmenggunakan beberapa kerangka kerja 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, di sisi lain, hanya tertaut ke pustaka dinamis ini:

$ 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.dylibmenggunakan beberapa perpustakaan lain, tetapi tidak ditautkan ke kerangka apa pun.)

Jaume
sumber
1
Jawaban yang luar biasa! Terima kasih. Saya datang ke mac dari linux jadi saya tidak tahu diskutil. Itu adalah pengetahuan yang bagus untuk dimiliki.
DQdlM
Terima kasih, saya senang bisa membantu menjelaskan perbedaan antara umountdan diskutil/ Finder.
jaume