Relocating /Users folder in MacOS 10.15 (Catalina)?
In the past when we wanted to offload the /Users folder from the internal disk we simply created a symbolic link for /Users that pointed to /Volumes/External_Drive_Name/Users. The Mac in question is a server for two computer labs, hosting 60 Macs with a few terabytes of data spread out across 200~ user accounts. Hosting the Users folder on the internal drive is simply not a good option for us.
Symbolic links are no longer supported (for the root directory folders) in Catalina / 10.15, so this no longer works using the tried and true method. During the upgrade the symbolic link was simply removed and replaced with the standard Users folder.
I've read up on firm links by way of creating a synthetic.conf file via man synthetic.conf, but this method isn't working for the Users folder. I AM able to build a synthetic.conf file that creates a link for foo in the root directory that points to another volume, but attempting to redirect Users in the same manner breaks nearly all functionality.
I'm using the following syntax and placing synthetic.conf in /etc/synthetic.conf:
Users (tab character) /Volumes/External_Drive_Name/Users
With that I'm able to fully boot (albeit slowly) and log in but Finder and Spotlight repeatedly crash, signaling to me that the system is unable to find/create a user folder for the current logged in user.
Has anyone found a way to do this yet?
Anyone know of any other tricks for redirecting MacOS to look for the Users folder on a different volume?
You have missed out on a hidden and not easily discoverable preference for moving your /Users/[USERNAME] folder to another location that has been built into macOS for (at least) a few years.
- Open System Preferences
- Go to Users & Groups
- Click the padlock and authenticate
- Right (or control) click on your username and select "Advanced Options.."
- Click on the "Choose..." button and point it to where you want your home folder to be.
Once that is done all you need to do is copy your stuff from the old location to the new location and never deal with symlinks ever again.
You can also use dscl to move current users user folder by specifying the NFSHomeDirectory entry.
As explained in this Apple support doc Hide a user account in macOS you could use this command to move the home directory of "yourUser" :
sudo mv /Users/yourUser /new/path/yourUser
If the new location is on a separate volume and you want to copy the existing user data it will be necessary to use cp
to copy the existing home folder rather than mv
to move it.
sudo cp -pR /Users/yourUser /Volumes/new/path
It is necessary to grant full disk access to terminal.app before doing so to avoid "Operation not permitted" errors.
If the current user folder contains no required data then this step is not required as a new folder hierarchy will be automatically created at the new location when the user next logs on after updating NFSHomeDirectory.
Next use this command to update the user record of "yourUser" with the new home directory path :
sudo dscl . create /Users/yourUser NFSHomeDirectory /new/path/yourUser
For new users you could create the user via terminal as described in this question How can I create a new user through terminal macOS 10.14 and specify the NFSHomeDirectory entry you want at creation time.
When working with mobile accounts on macOS Catalina, you can use the createmobileaccount
tool to specify a different home folder location for accounts created using this tool.
For example: If you have an AD account named jsmith
and you want the jsmith
account to have its home folder stored in a directory called Users
on a local drive named Homes
, you could run the following command to create the jsmith
mobile account with the jsmith
account's home folder stored at /Volumes/Homes/Users/jsmith
:
sudo /System/Library/CoreServices/ManagedClient.app/Contents/Resources/createmobileaccount -n jsmith -h /Volumes/Homes/Users
For more information, please see the createmobileaccount
help. This is accessible by running the following command:
/System/Library/CoreServices/ManagedClient.app/Contents/Resources/createmobileaccount
*** error: no arguments
usage: createmobileaccount -n username [-h homepath] [-P | [-p password]] [[[-a username] [-U password]] | [-D]] [-v] [-V]
-n username : user record name.
-h homepath : user home path; Default is "/Users/<username>".
-p password : user password.
-P : prompt for user password.
-a username : opt SecureToken enabled admin user name.
-U password : opt SecureToken enabled admin user password.
-D : don't prompt for SecureToken enabled admin information.
-v : verbose output.
-V : version.
Examples:
createmobileaccount -n jsmith
createmobileaccount -v -P -n jsmith
createmobileaccount -vxn jsmith -h /Volumes/HD3/jhome
Notes:
- createmobileaccount must run as root.
- If you do not specify a password, the account's cached password will be created during the account's first log in.
- On encyrpted APFS volumes, an existing admin SecureToken user name and password is required in order for this account to be used at the EFI login window.
- External accounts are no longer supported as of 10.15.
- The old FileVault encrypted home directory mechanism (using -e) no longer works in 10.13 or later (but was only removed here in 10.15).
username@computername ~ %