Problema
Al conectar un disco duro con particiones NTFS a una distribución Linux reciente, el sistema lo monta automáticamente en modo read‑only. El usuario no puede crear ni modificar archivos y el propietario de los directorios aparece como root. El síntoma típico es:
The disk contains an unclean file system (0, 0). Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an unsafe state.
Este comportamiento no es exclusivo de una instalación específica; ocurre en cualquier entorno donde un disco NTFS haya sido usado previamente bajo Windows con Fast Startup, hibernación o un apagado abrupto. El kernel de Linux, al detectar un estado “unclean”, protege el sistema montando la partición como solo‑lectura para evitar corrupción.
Causa
-
Fast Startup / Hibernación
Windows 8 y posteriores habilitan por defecto “Fast Startup”, que guarda el estado del sistema de archivos en una caché antes de apagar. Esa caché deja el volumen NTFS en estado “dirty”. Linux interpreta el flag y rechaza el acceso de escritura. -
Apagado inesperado o error de hardware
Si el equipo se apaga sin pasar por el proceso de cierre de Windows, el journal de NTFS queda sin cerrar. El flag de “unclean” persiste. -
Montaje automático sin opciones de escritura
Algunos entornos de escritorio montan discos externos con la opciónropor precaución, especialmente si el disco está etiquetado como “removable”. -
Falta de utilidades NTFS
Sin el paquetentfs-3g(o su reemplazo en algunas distros) Linux no tiene un driver de escritura completo y recurre a montar en modo solo‑lectura.
Solución
La estrategia se divide en tres pasos: limpiar el estado NTFS, instalar el driver adecuado y configurar el montaje.
1. Limpiar el estado del volumen
-
Desde Windows
Arranca el equipo con Windows, desactiva Fast Startup (Panel de control → Opciones de energía → Elegir lo que hace el botón de encendido → Desactivar inicio rápido) y apaga normalmente. Esto garantiza que Windows cierre el journal y marque el volumen como limpio. -
Desde Linux
Si no tienes acceso a Windows, instalantfs-3gyntfsprogs(en muchas distrosntfs-3gincluyentfsfix). Luego ejecuta:
sudo ntfsfix -b -d /dev/sdX1
ntfsfix repara el flag de “unclean”, fuerza un desmontaje limpio y actualiza el journal. No es un reemplazo completo de chkdsk, pero es suficiente para permitir escritura.
2. Asegurar que el driver de escritura está presente
En la mayoría de distribuciones modernas el paquete se llama ntfs-3g. Instálalo si no está:
sudo apt-get install ntfs-3g # Debian/Ubuntu
sudo dnf install ntfs-3g # Fedora
sudo pacman -S ntfs-3g # Arch
Con ntfs-3g el montaje por defecto será rw siempre que el volumen esté limpio.
3. Configurar el montaje permanente
Para evitar que el gestor de archivos lo monte como ro, crea una entrada en /etc/fstab. Identifica el UUID del dispositivo:
blkid /dev/sdX1
Ejemplo de línea fstab:
UUID=1234ABCD-56EF-78GH-90IJ-KLMNOPQRSTU /mnt/ntfs_hdd ntfs-3g defaults,windows_names,locale=en_US.utf8 0 0
defaultsincluyerw.windows_namesevita nombres de archivo incompatibles.localeasegura la codificación correcta.
Si prefieres montar bajo demanda, usa el comando mount con la opción -o rw:
sudo mount -t ntfs-3g -o rw,uid=$(id -u),gid=$(id -g) /dev/sdX1 /mnt/ntfs_hdd
uid y gid asignan la propiedad al usuario actual, eliminando la necesidad de cambiar permisos después del montaje.
Cuándo aplicar esta solución
- Síntomas: al intentar crear un directorio o archivo el mensaje indica “read‑only file system”, o
mountmuestraro. - Entorno: disco NTFS usado previamente bajo Windows, especialmente con Fast Startup habilitado.
- No aplica: si el disco está formateado en ext4, btrfs u otro sistema nativo de Linux; o si el hardware presenta fallas físicas (SMART errors) que impiden montar en modo escritura.
Código
# 1. Instalar driver y herramientas
sudo apt-get install -y ntfs-3g ntfsprogs
# 2. Reparar flag de “unclean”
sudo ntfsfix -b -d /dev/sdb1
# 3. Obtener UUID
blkid /dev/sdb1
# 4. Añadir entrada a /etc/fstab (reemplazar UUID)
# UUID=XXXX-XXXX /mnt/ntfs_hdd ntfs-3g defaults,windows_names,locale=en_US.utf8 0 0
# 5. Montar manualmente (opcional)
sudo mount -t ntfs-3g -o rw,uid=$(id -u),gid=$(id -g) /dev/sdb1 /mnt/ntfs_hdd
Verificación
-
Comprobar estado del montaje
mount | grep /mnt/ntfs_hddLa salida debe contener
rw,y noro,. -
Crear un archivo de prueba
touch /mnt/ntfs_hdd/.test_write ls -l /mnt/ntfs_hdd/.test_writeSi el archivo aparece con tu UID/GID, la solución funciona.
-
Reiniciar y validar fstab
sudo reboot mount | grep /mnt/ntfs_hddEl punto de montaje debe seguir siendo
rw.
Notas adicionales
- Desactivar Fast Startup es la medida preventiva más fiable. Incluso si solo usas Linux, Windows puede volver a tocar el disco (actualizaciones, reparación automática) y volver a marcarlo como sucio.
- ntfsfix no reemplaza chkdsk. Si el disco muestra errores recurrentes, conéctalo a Windows y ejecuta
chkdsk /f /r. - SMART: antes de formatear, verifica la salud del disco con
smartctl -a /dev/sdb. Un disco con sectores reasignados puede montar enropor razones de integridad. - Permisos: si prefieres que todos los usuarios tengan acceso, agrega la opción
umask=000afstab. Usa con cautela en entornos multi‑usuario. - Backups: siempre mantén una copia de los datos críticos antes de ejecutar reparaciones de bajo nivel. Un fallo de hardware durante
ntfsfixpuede empeorar la situación.