Dlaczego OS X wymaga uprawnień administratora do odmontowania dysku z terminala za pomocą `umount`, ale nie podczas korzystania z Findera?

21

Każdy może odmontować dysk USB z Findera, klikając ikonę „wysuwania” obok niego. Jednak tylko użytkownik z uprawnieniami administracyjnymi może odmontować dysk z terminala za pomocą umount.

Czy umounti „wysuwanie” różni się w jakiś sposób, który wymaga większego bezpieczeństwa umountz terminala?

Uwaga: Używam OS X 10.8.2

DQdlM
źródło

Odpowiedzi:

34

umountto komenda UNIX, która jest zgodna z tradycyjną perspektywą UNIX i że odmontowanie systemu plików jest zadaniem administracyjnym systemu .

Uzasadnieniem jest to, że odmontowanie systemu plików, jeśli źle zaplanowane lub wykonane, może być destrukcyjne, a nawet destrukcyjne, szczególnie w systemie z wieloma użytkownikami. Dlatego zwykli użytkownicy są chronieni przed tym potencjalnie niebezpiecznym poleceniem i tylko root lub uprzywilejowany użytkownik może je wykonać.

Ma to sens, gdy UNIX jest używany jako system operacyjny serwera, ale system operacyjny oparty na UNIX (na przykład OS X lub Ubuntu ) ma inne potrzeby: każdy użytkownik powinien mieć możliwość odmontowania dysków flash, wymiennych dysków twardych itp. .

Finder i diskutil(zobacz man diskutil, aby uzyskać więcej informacji) działają w ten sposób. Na przykład mogę otworzyć terminal i pomyślnie uruchomić:

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

podczas gdy umountzawodzi:

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

Czym jest Finder lub co diskutilrobi inaczej? Za kulisami, wysyłają żądanie do demona zwanego com.apple.SecurityServer (zobacz stronę man , aby uzyskać więcej informacji), który przyznaje prawo odmontować system plików:

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

Pozwala to każdemu użytkownikowi odmontować dysk bez konieczności dodatkowego uwierzytelnienia. (Ubuntu ma podobną filozofię. Jeśli jesteś zainteresowany, spójrz na tę odpowiedź na AskUbuntu.)

Aby wesprzeć zachowanie wyjaśnione powyżej Findera i diskutilużyć kilku platform 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)

umountz drugiej strony jest powiązany tylko z tą dynamiczną biblioteką:

$ 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.dylibużywa kilku innych bibliotek, ale nie jest powiązany z żadnym frameworkiem).

jaume
źródło
1
Świetna odpowiedź! Dzięki. Przyszłam do Maca z Linuksa, więc nie wiedziałam o tym diskutil. To dobra wiedza.
DQdlM
Dzięki, cieszę się, że mogłem rzucić nieco światła na różnice między umounti diskutil/ Finder.
jaume