Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

macOS Granting full-disk access to sandboxed app not working

I'm experimenting with full-disk access and can't make it working. Here is list of steps I did:

  1. Sandbox is turned ON. In fact the entitlements file looks like:
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
  1. I created archive of the app and tried to distribute it using boths Developer ID or Development methods
  2. I placed the binary of my app to /Applications folder
  3. I went to System Preferences -> Security & Privacy -> Privacy -> Full Disk Access and added access to my app in /Applications folder
  4. Of course I'm NOT attached to the app with Xcode

I'm testing it in Xcode 11 and on Catalina. It's dummy app, opening NSOpenPanel to let user select archives to decompress and tries to decompress it in the same directory.

In fact it's not about NSOpenPanel, the question is:

What is necessary to do to make sandboxed app using full-disk access?

Any hints? Am I doing anything wrong?

like image 636
Martin Pilch Avatar asked Oct 23 '19 21:10

Martin Pilch


People also ask

How do I give a full disk access to an app on a Mac?

Enable Full Disk AccessOpen System Preferences ▸ Security & Privacy. Select the Privacy tab. Select Full Disk Access, then click the lock icon. Use your Touch ID or enter your system administrator credentials and click Unlock.

What should full disk access Mac?

Full Disk Access is a security feature, introduced in macOS Mojave, that requires applications to be given full permission to access user-protected files. If not enabled, some data on the Mac will not be accessible.


1 Answers

Here is solution found for iTerm2 (it is worth read how solution was found). It just adds this to application plist:

<key>NSSystemAdministrationUsageDescription</key>
<string>I want to read all your files</string>

Documentation is a bit fuzzy.

Sadly this solution doesn't work for launchctld daemons (this is what I need). I think daemons are an exception since the do not see UI at all.

But for regular applications it should work like a charm (didn't test it yet).

like image 108
Marek R Avatar answered Oct 03 '22 15:10

Marek R