53

After the installation of Catalina all User created folders from root are moved into a separate folder and the root folder is made readonly, containing only system default folders.

How is it possible to undo this and to make the root folder writeable again?

4
  • Are you looking to persist this change across reboots of the OS or just gain permission one time to make some changes?
    – bmike
    Oct 14, 2019 at 11:03
  • Can you explain exactly what you want to achieve? Are there specific files that you want to add to the root? Any reason that these files cannot operate from another location? Or do you want to modify existing system files?
    – benwiggy
    Oct 31, 2019 at 11:57
  • 1
    @benwiggy My use case is that I simply want to create a shorter path for the files I use for development. It's much easier to type cd /devel/myproj than cd /Users/medington/devel/myproj. The synthetic directories are exactly what I want to do that. Nov 23, 2019 at 18:27
  • If you just want shorter names to cd to, just add them to your CDPATH (bash, probably others). Then, you can just type cd myproj. No need to try to work around changes to the OS. (And I just noticed this is over two years old. Oh well.)
    – aMike
    Apr 10 at 22:46

3 Answers 3

17

Found this thread at Apple Developer Forums, where they do make their root directory writable again. This is not persistent across reboots, so you might want to create an script that runs at startup to make the change be permanent (don't think this is necessary but would be a way out).

Original Answer:

  1. Disable SIP (recovery mode, csrutil disable).

  2. Restart.

  3. Mount drive for read and write (sudo mount -uw /).

  4. Assign rights for read and write ([sudo] chmod - R 775 /your/folder/).

  5. Delete it ([sudo] rm -rf /your/folder/).

  6. Restart.

  7. Enable SIP (recovery mode, csrutil enable).

"sudo" in square brackets means it may be required (like in my case) while others report they managed to get result without it.

2
  • After doing sudo mount -uw / I was able to happily hide system protected apps like Chess. My Mac is happy again ^_^ Dec 15, 2019 at 22:40
  • See also this useful utility: github.com/fxgst/writeable_root
    – GDP2
    Aug 30, 2021 at 22:03
63

You can create a symbolic in root directory via synthetic.conf, as an example see below the creation of a symbolic link named bar at /, which points to System/Volumes/Data/bar, a writeable location at the root of the data volume.

echo -e 'bar\tSystem/Volumes/Data/bar' | sudo tee -a /etc/synthetic.conf

After executing the command above, you need to reboot to see effects.

SEE ALSO

man synthetic.conf
17
  • 4
    Really oversubtle to call this "... your root volume will be writeable again" considering that the man explicitely mentions that: The synthetic entities [...] are not physically present on the disk, but when the system is booted, they behave as if they were within certain parameters..."
    – klanomath
    Oct 14, 2019 at 11:43
  • 7
    Safer solution than disabling SIP Oct 16, 2019 at 3:28
  • 10
    The question asked was "How to make root volume writeable again in Catalina?" - This does not make the root volume writable again! Oct 16, 2019 at 16:23
  • 6
    I think this is the right solution proposed by Apple to be able to write in the root volume. So I would accept the question as valid. Thanks @Shawyeok for sharing it. Oct 17, 2019 at 11:35
  • 2
    @JustinKaz it's not hidden, but nor is it present under /System/Volumes/Data. If you run ls -l / you'll see dev listed. It's apparently already a "system defined" synthetic directory. Nov 23, 2019 at 18:31
5

How to create a /bar directory you can write to:

  1. echo 'bar' | sudo tee -a /etc/synthetic.conf
  2. reboot
  3. Run the following commands:
sudo diskutil apfs addVolume disk1 APFSX Bar -mountpoint /bar
sudo diskutil enableOwnership /bar
sudo chflags hidden /bar  # Don't show the Bar volume on the desktop
echo "LABEL=Bar /bar apfs rw" | sudo tee -a /etc/fstab

You might need to use a different diskX number. Check diskutil list for more.

Credit to @callahad on the NixOS/nix issue tracker: https://github.com/NixOS/nix/issues/2925#issuecomment-539570232

2
  • 1
    That's basically using synthetic.conf to make an empty directory (to be used as a mountpoint). Then it is creating a new volume at the mountpoint and mounting it in the root filesystem table. I think this is what the system is doing internally, but I am not clear if it's Apple supported or whether it will be durable over OS upgrades.
    – ingyhere
    May 30, 2020 at 3:26
  • TCC will let you live your life with tricks like this... creating a new volume where you can be free. Userland apps can also do surprising things within the rules... like make files as root and but also the current user... I managed to FUSE mount without disabling SIP, for now.
    – Ray Foss
    Dec 15, 2020 at 19:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .