21 votos

¿Por qué OS X requiere privilegios de administrador para desmontar una unidad desde el terminal usando `umount` pero no cuando se usa Finder?

Cualquiera puede desmontar una unidad usb desde Finder haciendo clic en el icono "expulsar" que aparece junto a ella. Sin embargo, sólo un usuario con privilegios administrativos puede desmontar una unidad desde el terminal utilizando umount .

Son umount y "expulsar" diferente de alguna manera que requiere más seguridad para umount desde el terminal?

Nota Estoy ejecutando OS X 10.8.2

33voto

Phill Puntos 126

umount es un comando UNIX que se adhiere a la perspectiva UNIX tradicional de que desmontar un sistema de archivos es un tarea de administración del sistema .

La razón es que desmontar un sistema de archivos, si se planifica o ejecuta mal, puede ser perjudicial, incluso destructivo, especialmente en un sistema multiusuario. Así que los usuarios normales están protegidos de este comando potencialmente peligroso y sólo root o un usuario con privilegios puede ejecutarlo.

Esto tiene mucho sentido cuando UNIX se utiliza como sistema operativo de servidor, pero un SO de escritorio basado en UNIX (por ejemplo, OS X o Ubuntu ) tiene otras necesidades: cualquier usuario debe poder desmontar memorias flash, discos duros extraíbles, etc.

El Buscador y diskutil (véase man diskutil para más información) funcionan así. Por ejemplo, puedo abrir Terminal y ejecutar con éxito:

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

mientras que umount falla:

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

¿Qué es el Finder o diskutil ¿hacerlo de otra manera? Entre bastidores, envían una solicitud a un demonio llamado com.apple.SecurityServer (véase página de manual para más información), que concede el derecho a desmontar el sistema de archivos:

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

Esto permite a cualquier usuario desmontar una unidad sin necesidad de autenticación adicional. (Ubuntu tiene una filosofía similar. Si le interesa, eche un vistazo a esta respuesta en AskUbuntu).

Para soportar el comportamiento explicado anteriormente el Finder y diskutil utilizan varios marcos de 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 sólo está vinculada a esta biblioteca dinámica:

$ 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 utiliza otras bibliotecas, pero no está vinculado a ningún framework).

1 votos

¡Impresionante respuesta! Gracias. Vine a mac desde linux así que no sabía acerca de diskutil . Es bueno saberlo.

0 votos

Gracias, me alegro de haber podido ayudar a arrojar algo de luz sobre las diferencias entre umount y diskutil /Finder.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X