¿Cómo escribir en un sistema de archivos de solo lectura Mac OSX?

11

Tengo DMG, necesito montar y escribir un archivo. Cuando lo monte, el buscador muestra la raíz y todo como de solo lectura.

Entonces descubrí 'mount -w'. Pero cuando ejecuto eso, obtengo 'mount: archivo especial desconocido o sistema de archivos'.

¿Cómo puedo montar esta imagen de disco como grabable o forzar un archivo en ella?

el espejo
fuente

Respuestas:

16

Casi todos los DMG de solo lectura están realmente comprimidos ( UDZ0- vea la hdiutil(1)página del manual), por lo que su formato de archivo no admite simplemente "voltear un poco" para que se pueda escribir.

Puede usar la Utilidad de disco o

hdiutil imageinfo filename.dmg  

... para ver en qué formato está la imagen de su disco. Entonces podría usar la Utilidad de Discos o algo así

hdiutil convert filename.dmg -format UDSP -o filename.sparseimage  

... para convertirlo a un formato de lectura y escritura. Tenga en cuenta que la conversión no ocurre en el lugar, por lo que tendrá que decirle que coloque el archivo de salida en un sistema de archivos que tenga espacio suficiente para una copia sin comprimir de todos los datos de su .dmg.

La .dmgextensión no garantiza que la imagen esté realmente comprimida, pero esa es, con mucho, la posibilidad más probable.

Hay varias otras posibilidades disponibles para usted hdiutil. Por ejemplo, si su .dmgrealmente es de solo lectura sin comprimir ( UDRO), podría ser posible forzarlo a montar lectura-escritura. Además, si desea dejar su .dmgarchivo comprimido pero aún desea montarlo de forma grabable, puede montarlo con un "archivo de sombra"; todas las escrituras en realidad se escriben en el archivo shadow.

Actualización : Otras respuestas a esta pregunta parecen pensar que .dmgsiempre significa lo UDZ0que simplemente no es cierto. Desde la hdiutil(1)página de manual, aquí está la lista de formatos internos que .dmgpuede tener (tenga en cuenta que algunos de estos pueden tener diferentes extensiones de nombre de archivo predeterminadas.sparseimage , pero estoy bastante seguro de que tampoco es una regla estricta).

UDRW - UDIF read/write image  
UDRO - UDIF read-only image  
UDCO - UDIF ADC-compressed image  
UDZO - UDIF zlib-compressed image  
UDBZ - UDIF bzip2-compressed image (OS X 10.4+ only)  
UFBI - UDIF entire image with MD5 checksum  
UDRo - UDIF read-only (obsolete format)  
UDCo - UDIF compressed (obsolete format)  
UDTO - DVD/CD-R master for export  
UDxx - UDIF stub image  
UDSP - SPARSE (grows with content)  
UDSB - SPARSEBUNDLE (grows with content; bundle-backed)  
RdWr - NDIF read/write image (deprecated)  
Rdxx - NDIF read-only image (Disk Copy 6.3.3 format)  
ROCo - NDIF compressed image (deprecated)  
Rken - NDIF compressed (obsolete format)  
DC42 - Disk Copy 4.2 image  
Spiff
fuente
No asumí UDZ0, pero todos los tipos excepto UDRW y UDSP (tal vez UDxx UDSB o UDT0) son de solo lectura. Supuse que todos los dmgs estaban comprimidos con ALGO, y por lo tanto no escribibles ... Nunca conocí a sabiendas un DMG NO comprimido ...
Brian Postow
@Brian: utilizo un UDSP cifrado de forma rutinaria para almacenar información confidencial en mi computadora portátil (contraseñas, información bancaria, etc.).
KeithB
1
Hola, esto ayudó mucho, ¡gracias! Encontré una manera súper fácil de hacer esto, eche un vistazo a mi respuesta. Me encantaría conocer tu opinión.
MW Felker
1
@MaxFelker Me alegra que mi sugerencia de usar un archivo de sombra te haya ayudado. Gracias por explicar una buena forma de hacerlo.
Spiff
Súper útil, +1 mi amigo!
MW Felker
5

Este es el método que acabo de usar para un proyecto y fue, con mucho, la mejor manera de hacerlo. Lo encontré aquí:

http://myjeeva.com/best-possible-way-edit-read-only-dmg.html

Adjunte un archivo dmg de solo lectura con hdiutil

hdiutil attach -owners on /path/to/your.dmg -shadow

Modifica tu DM. Use la línea de comando para agregar, editar o eliminar contenido; hacerlo en la GUI puede tener efectos secundarios extraños o problemas de permisos. Además, es posible que necesite sudo los comandos

Separe la unidad montada con el siguiente comando o expulse del Finder

# fill disk number at <number>
hdiutil detach /dev/disk<number>

Convertir / escribir un dmg sombreado en DMG de solo lectura

hdiutil convert -format UDZO -o /path/to/new.dmg /path/to/your.dmg -shadow
MW Felker
fuente
Estoy en Sierra y esto no funciona para mí. Crea el archivo ".shadow" y monta el dmg, pero la unidad montada sigue siendo de solo lectura. Incluso intenté hacer que el .dmg se pueda escribir y verifiqué que el archivo .shadow era grabable.
TechSavvySam
1

si hay suficiente "espacio" en el DMG de Rd-onry, puede convertirlo en un DMG R / W usando la Utilidad de Discos, y convertirlo nuevamente en un DMG comprimido si lo desea. De lo contrario, puede "expandir" el DMG usando hdiutil

junh1024
fuente
-2

No puedes escribir a un DMG. no tiene sentido. Debe copiar todo, editar y crear un nuevo DMG.

Lo siento.

Brian Postow
fuente
Eso no es verdad. Puede crear archivos .dmg de lectura-escritura. Además, no necesita copiar todo, simplemente puede convertir la imagen del disco a un formato grabable. Ver mi respuesta
Spiff
1
@Spiff, supongo, pero su solución es EFECTIVAMENTE la misma que la mía, ya que tiene que descomprimir, agregar el nuevo archivo y volver a comprimir. Si no está en su lugar, entonces REALMENTE no estás escribiendo al DMG existente ...
Brian Postow
Su respuesta contiene información falsa.
Brian
1
-1 pero si cambia la línea "No puede escribir a un DMG" a algo que es realmente cierto, como "No puede escribir a un DMG de solo lectura" Cambiaré mi voto. ¡Gracias!
Dan Rosenstark
-2

Una imagen DMG normal no se puede escribir, ya que no hay forma de agregarle espacio. La solución como señaló @Brian_Postow es copiar todo el contenido y crear un nuevo archivo DMG. Si planea hacer esto mucho, la próxima vez cree una imagen dispersa ya que se puede escribir.

Chris Nava
fuente
1
Eso no es exactamente cierto. La extensión .dmg no significa necesariamente que sea de solo lectura. Ver mi respuesta
Spiff
Debería haber dicho "predeterminado" en lugar de "normal". Buena información sobre cómo convertirlos.
Chris Nava