Ubuntu mounts external ntfs drive as read-only?

This is a common question and has been answered numerous times in AskUbuntu (for example, here).

In short, you probably have fast boot turned on in Windows, which is why Linux will only mount it in read-only mode.

You should also have ntfs-3g installed, which you likely will because it is installed by default on Ubuntu

Q1. Just mount your Windows partition and see if you can create or edit a file there.

Q2. To mount it reliably in read-write mode, you need to disable fast boot in Windows. Then just double click the Windows partition in your file manager. Alternatively, you can do it from the terminal:

Find out which partition is your windows partition:

[van@z97:mnt]$ lsblk -f
NAME           FSTYPE   LABEL    UUID                                 MOUNTPOINT
loop0          squashfs                                               /snap/ohmygiraffe/3
loop1          squashfs                                               /snap/core/2844
loop2          squashfs                                               /snap/core/2774
loop3          squashfs                                               /snap/core/2898
sda                                                                   
├─sda1         ntfs     Recovery E6A60CE2A60CB559                     
├─sda2         vfat              A80E-CD6E                            /boot/efi
├─sda3                                                                
├─sda4         ntfs              3C5E17DD5E178F30                     
├─sda5         swap              e0f12aa3-2b9f-4e04-a91d-806a9eccb688 
│ └─cryptswap1 swap              c738647d-8719-4f4e-b454-14802635d295 [SWAP]
└─sda6         ext4              4295796e-0535-4fbf-843d-7c9970c9155e /
sdb                                                                   
├─sdb1         ext4              4c9ee94a-d2b3-46a0-99a7-7f434814bda5 /home
└─sdb2         ext4              cc902d7c-591b-4a44-8b68-51a7ca7c4e7f /opt

In my example above, it's sda4.

Now mount it to mount-point /mnt/windows:

sudo mount -t ntfs /dev/sda4 /mnt/windows
ls /mnt/windows

Then just navigate to /mnt/windows in your file manager and create a test text file and make sure you can save it.

You can umount the mount using:

sudo umount /mnt/windows

If valuable data, do the repair work on a cloned copy

  • If the data, that you want to recover are valuable, it is a good idea to clone the drive to another drive of at least the same size and to do the repair work on the cloned copy. This way you dare try potentially risky methods. If things go wrong, you can clone again, and try something else without losing your data. See this link,

    • Repair the partition table and file system of a pendrive, scroll to 'Advanced repair ...'

Different causes of your problem to mount the NTFS file system

There could be different causes why you cannot mount the NTFS file system.

  • The file system needs repair and that, for NTFS, should be done in Windows, as suggested by @MichaelBay. If Windows in your current system does not work, you could connect the drive to another computer with Windows and do the job. But I can understand, that you would hesitate to do that because of the suspected ransomware malware.

  • Windows is hibernated or semi-hibernated, which means that the file system is in a state, that would be damaged, if written to by another operating system. The solution in this case is to

    • boot into Windows if possible, and reboot (not shut down)
    • turn off fast startup in Windows, which is a kind of semi-hibernattion
  • The automatic process is mounting the NTFS partition read-only although it can be mounted read-write. If this is the problem, you can unmount it and mount it manually with read-write permissions.

    You can check if a partition is mounted read-only ro or read-write rw in the file /etc/mtab

    less /etc/mtab
    

    or specifically with grep, for example with

    grep 'ro,' /etc/mtab
    grep '^/dev/' /etc/mtab
    

    See these links,

    • Unable to access SD Card

    • How do I use 'chmod' on an NTFS (or FAT32) partition?

    • The same syntax is used to mount NTFS and FAT32 file systems in linux, so instructions for FAT32 can be used for NTFS.


In my case, the problem was that I had disk caching activated in Windows. The solution was simple: disable disk caching on the drive in Windows.

After using Windows to disable disk caching on my portable USB NTFS formatted drive, I could then automatially mount the drive on my linux machine and both read and write to the disk from linux as well as on Windows.

To disable write-caching in Windows, do the following steps:

  1. Right-click on the drive in Windows Explorer.
  2. Open Properties.
  3. Go to the Policy tab.
  4. Uncheck "Enable write caching..."