DropBox Smart Sync and High Sierra; or, I thought I was supposed to upgrade, why me.

Not interested in my ramblings? Skip down.

If you’ve been paying attention to the narrative coming from IT over the past few years, including us, one of the most recurring themes is this:

Stay up to date.

Staying up to date is the number one way to keep your hardware running well and, most critically, keep you secure. In the past, this advice came with some wincing, since updates, particularly system updates, could bring along a plethora of issues. This wincing advice was gradually replaced with certainty––Apple Mac OS updates have been more and more robust over the past few years, to the point where I was almost, almost ready to just start pulling the plug and upgrading to the latest version of the OS as soon as it came out.

But lo, Apple giveth and Apple taketh away. High Sierra definitely tooketh away.

I mean, percentage wise, it’s still been pretty painless. There have been some really wince-worthy security issues with High Sierra, but in terms of functional show-stoppers, it’s still in the 10% range. It says a lot about the past few years that this feels really bad.

But one thing that has been completely consistent throughout our High Sierra deployments is that new installs of DropBox do not work with Smart Sync.

If you’re reading this, you probably know what Smart Sync is, but in the off-chance you need an introduction, Smart Sync is the Dropbox (Dropbox business only) feature that makes Dropbox work for large teams – it keeps everything in the cloud, but you can still browse it locally. If you have a lot of data in DropBox, and don’t feel like messing with Selective Sync constantly, this is lifesaver (or potentially even critical for bandwidth purposes).

Alas, this feature is broken in High Sierra. Smart Sync involves a system extension, and with new security features in High Sierra what apps run and how, this extension won’t load.

As far as we can tell, it loads just fine if you’ve already installed and configured Smart Sync. Upgrade to High Sierra, no problems there. But if you have a clean install, and are re-installing DropBox, the system is supposed to whisk you to the Security system pane and have you click an ‘allow’ button to permit the extension to do its thing. Sadly, clicking the button can have zero impact. In an even more delightful twist, it might not pop up at all (and, in my experience, usually does not).

There are abundant workarounds posted online, but none of them have survived a restart for us. It may be exacerbated by the fact that our setups have users on a standard user, and the admin user is separate, but experimentation on that is inconclusive. The bottom line is that Dropbox will silently switch to downloading everything locally, which can be rather catastrophic if you have a terabyte or so of data.

Until Dropbox provides a solution – and arguably, it’s on them to work within Apple’s new security parameters, which are there for good reason – the only actual fix we’ve found is to manually load the extension at system startup. This is the command that you can run to load it up: sudo kextload -b com.getdropbox.dropbox.kext

To run this automatically when the computer loads up, however, you need to create a plist file, place it in the /Library/LaunchDaemons folder on your Mac, and add it to the LaunchD process that is responsible for scheduled tasks on the Mac.

How to do this:

Read this disclaimer first. I’m providing a file to download, and code you can use, which could potentially utterly destroy your computer. What’s worse, if someone malicious were to compromise this site, they might inject something totally different. In other words, if you follow these instructions, you’re going to do it while chanting ‘I have chosen to do this and I understand that I may blow up my computer but I have chosen to ignore that possibility because I am responsible for my own life choices’. If, for some reason, this nukes your data, destroys your computer, annihilates your DropBox account, gets you fired, makes your spouse leave you, and/or you end up living in a box, I am not going to be responsible. In fact, I will point and laugh at you for having chosen to do this without understanding what the hell you were getting up to.

Are we clear?

Good!

First, create a plist file to execute the necessary code. You can paste this into a plain-text editor like TextEdit in Plain Text mode or, say, TextWrangler. Here’s what you paste in:


<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <false/>
        <key>loadsmartsync</key>
        <string>com.dropbox.dropbox</string>
        <key>ProgramArguments</key>
        <array>
                <string>/sbin/kextload</string>
                <string>com.getdropbox.dropbox.kext</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/dev/null</string>
        <key>StandardOutPath</key>
        <string>/dev/null</string>
        <key>UserName</key>
        <string>root</string>
</dict>
</plist>

Save this file in the utf8 format with the file name of com.getdropbox.dropbox.plist (I should note that the name can actually be whatever you want, as long as it follows the general format, AND you update the code to reflect this. So, it could be com.myname.mycomputer.plist as long as com.dropbox.dropbox becomes com.myname.mycomputer).

Drop this file in /Library/LaunchDaemons. This will require admin credentials. I should also note that if you want to avoid any potential permission issues it might be easier to do this from the terminal using the nano command, but I think this is simpler for most folks. If you don’t feel like doing all this, I’ve zipped the file dropboxsmartsynchighsierrafix for you to download. Again, download at your own risk. See the above disclaimer about using anything you’ve downloaded from here.

Now fire up the terminal and run this command: sudo launchctl load /Library/LaunchDaemons/com.getdropbox.dropbox.plist This command is what actually tells the system to run the agent at startup.

Now! Restart. Smart Sync should just be up and running, if it’s already set as the default for your accounts in the DropBox admin panel.

It’s worth noting that this could easily break as DropBox changes how it works, so after each DB update I’d check to make sure it’s working, or if it’s even necessary anymore.

Good luck!