Monday, March 27, 2017

What is /Users/Shared/adi in MacOS

I noticed there was an exclusion in my Time Machine for the folder /Users/Shared/adi that I had not placed there. According to galvanist.com "It is used by the Mac App Store and the new iBooks app."

Pasting here from the source to preserve it. Visit galvanist.com for potential updates:

If you’re running Mac OS X ~v10.8 (or later), you’ve probably got a folder at the path /Users/Shared/adi. Like me, you might be wondering what it is. I did some googling and got nothing. I dug a little further and found (part of) the answer: It is used by the Mac App Store and the new iBooks app.
In case you’re interested, here are the steps I took to arrive at this answer:
  • Googled it. Didn’t get any signal.
  • I made a shell loop that checks system packages:
    $ (IFS=$'\n'
    > for pkg in `pkgutil --packages`; do
    >   pkgutil --files "$pkg" | grep --label "$pkg" -H "Users/Shared"
    > done)
    com.apple.pkg.Essentials:Users/Shared
    com.apple.pkg.Essentials:Users/Shared/.localized
    
    No luck there…
  • I looked in /Applications (sudo was already authenticated):
    $ sudo grep -r 'Shared/adi' /Applications 2>/dev/null
    # ...20 minutes later...
    $
    
    Rats.
  • Finally, I looked for sandbox entries:
    $ grep -rl 'Users/Shared/adi' /System/Library/Sandbox
    /System/Library/Sandbox/Profiles/com.apple.bookstoreagent.sb
    /System/Library/Sandbox/Profiles/com.apple.storeagent.sb
    
    Bingo! com.apple.bookstoreagent is obviously used by iBooks.app. But just to be extra sure:
    $ grep iBooks /System/Library/Sandbox/Profiles/com.apple.bookstoreagent.sb
       (regex #"/Library/Preferences/com\.apple\.iBooksX\.secure\.plist$")
       (regex #"^/private/var/folders/[^/]+/[^/]+/[A-Z]/com\.apple\.iBooksX"))
    
    And com.apple.storeagent is used by the Mac App Store:
    $ egrep -i 'app.?store' /System/Library/Sandbox/Profiles/com.apple.storeagent.sb
           (regex #"/Library/Preferences/com\.apple\.appstore\.plist$")
           (regex #"/Library/Caches/com\.apple\.storeagent/updates-com\.apple\.appstore\.updateQueue\.plist$"))
           (regex #"/Library/Application Support/App Store(/|$)")
           (regex #"/Library/Logs/appstore\.log$")
           (regex #"/Library/Preferences/com\.apple\.appstore\.plist$")
           (regex #"^/private/var/folders/[^/]+/[^/]+/[A-Z]/com\.apple\.appstore")
           (global-name "com.apple.appstore.CKSignInPrompt.hostclient")
           (global-name "com.apple.dock.appstore")
           (right-name "system.install.app-store-software")
           (right-name "system.install.app-store-software.standard-user")
    

Update

Thanks to a helpful anonymous commenter for pointing out that it wasn’t just 10.9 and iBooks.
I’ve been wondering about the name adi, and the possibility that it could be “Apple Distribution International”, the apple business unit responsible for electronic download sales. I’ve got no idea. That’s just wild guess that I don’t have much faith in myself.

CommerceKit

We already have a link between ADI and the Mac App Store & iBooks Store.
  1. “/Users/Shared/adi” appears under /System/Library/Sandbox/Profiles in com.apple.storeagent.sb and com.apple.bookstoreagent.sb.
  2. storeagent and bookstoreagent appear in the apple private CommerceKit.framework
    % locate storeagent
    [...]
    /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/bookstoreagent
    /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeagent
    [...]
    
  3. CommerceKit is used by the App StoreApple Configurator, and iBooks apps:
    % for app in /Applications{,/Utilities}/*.app/Contents/MacOS/*; do
    (otool -L "$app" | grep -i -H --label "$(basename $app)" 'CommerceKit') 2>/dev/null
    done
    
    App Store:  /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/CommerceKit (compatibility version 1.0.0, current version 232.0.0)
    Apple Configurator: /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/CommerceKit (compatibility version 1.0.0, current version 135.6.0)
    iBooks: /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/CommerceKit (compatibility version 1.0.0, current version 232.0.0)
    
  4. CommerceKit’s code contains these method references to adi
    % strings /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/CommerceKit | grep adi
    [some items omitted for bloggish reasons]
    _adiActionInResponse
    _adiSilentActionRetryCount
    %@: Saw ADI action in response to %@, set _adiActionInResponse=YES
    

CoreADI

You might also note that there’s a CoreADI framework:
/System/Library/PrivateFrameworks/CoreADI.framework
/System/Library/PrivateFrameworks/CoreADI.framework/CoreADI
/System/Library/PrivateFrameworks/CoreADI.framework/Resources
/System/Library/PrivateFrameworks/CoreADI.framework/Versions
/System/Library/PrivateFrameworks/CoreADI.framework/Versions/A
/System/Library/PrivateFrameworks/CoreADI.framework/Versions/A/CoreADI
/System/Library/PrivateFrameworks/CoreADI.framework/Versions/A/Resources
/System/Library/PrivateFrameworks/CoreADI.framework/Versions/A/Resources/Info.plist
/System/Library/PrivateFrameworks/CoreADI.framework/Versions/A/Resources/version.plist
/System/Library/PrivateFrameworks/CoreADI.framework/Versions/A/_CodeSignature
/System/Library/PrivateFrameworks/CoreADI.framework/Versions/A/_CodeSignature/CodeResources
/System/Library/PrivateFrameworks/CoreADI.framework/Versions/Current
And a receipt:
/private/var/db/receipts/com.apple.pkg.CoreADI.bom
/private/var/db/receipts/com.apple.pkg.CoreADI.plist
There is very little information in those files… even extracting text strings from the binary gives very little info. There are some references to encryption.
Its dependencies:
% otool -L /System/Library/PrivateFrameworks/CoreADI.framework/CoreADI
/System/Library/PrivateFrameworks/CoreADI.framework/CoreADI:
    /System/Library/PrivateFrameworks/CoreADI.framework/CoreADI (compatibility version 1.1.0, current version 1.34.0)
    /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 44.0.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 833.25.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.21.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 53.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)

Sunday, May 25, 2014

Disable Narrator keyboard shortcut in Windows 8

I have pressed Win Key + Enter many times while attempting to press Alt + Enter, and every time I have to listen to the Narrator speak out the process of me closing the narrator. Here is how to disable the narrator keyboard shortcut by disabling access to Narrator.exe.

  • Navigate to %systemroot%\System32
  • In this folder a file called Narrator.exe is to be found
  • Right click the file and choose Properties
  • Choose the Security tab and press Advanced
  • In the top of the window press Change to change the Owner permissions
  • In the text field write your username and press OK to all the dialogs

Now you should be able to change the permissions of the file, this is where we remove all the permissions from your user and the user back to system, this way your user will not be able to start the Narrator.

  • Right click the Narrator file again and choose Properties and Security tab
  • Press Advanced
  • Now that you are the owner you can change permissions for other users. Choose your own user and press Edit
  • Remove the Read & Execute and Read permissions and press OK
  • Now press Change in the top under Owner and write system in the text field
  • Press OK to all dialogs
Source

Wednesday, February 26, 2014

Networks are not scanned or refreshed when clicking on the wifi icon or Show Networks (Mac OSX)

UpdateThis is a bug. I have confirmed this with Apple today. It will be fixed in a future update. The steps below did not fix my issue. The issue reoccurs when going to the login screen and then logging in again.

When I click on the wifi icon on the Menubar, the networks are not scanned and there is no rolling radial wheel. When I click "join other network" and "scan networks" the list remains empty. This is how I remedied the issue, with help from apple:


  • Open a finder window
  • Click the "Go" menu and then "Go to folder"
  • Go to ~/Library/Preferences
  • Drag com.apple.systempreferences.plist to your desktop
  • Restart
  • Fixed!
On a side note, this was a profile issue for me. We checked that by creating a new user account and logging in with that one and the issue wasn't there.

Wednesday, January 8, 2014

apt-get extremely slow to resolve domains?

It's probably trying to do DNS resolution through ipv6 which is not configured. You can edit
/etc/gai.conf 
and add the line
precedence ::ffff:0:0/96  100
to the end of the file. This way DNS lookups are done with ipv4 prioritized over ipv6.

Tuesday, October 15, 2013

"Failed to connect to connect to FTP server" issue (Wordpress)

I set up a Wordpress installation on my web server. As soon as I tried to install a new theme/plugin, I got the message "Failed to connect to FTP server mydomain.com:21". I was certain that the address and login credentials where correct since I could connect to my FTP server with an FTP client (Filezilla).

I proceeded to set my wp-content folder's permissions to 755, as well as it's contents with:
chmod -R 755 /var/www/mywordpressfolder/wp-content/
I then changed ownership of the wp-content folder and its contents to the www-data user (apache user/group).
chown -R www-data /var/www/mywordpressfolder/wp-content/
This solved my issue. Needless to say, change mywordpressfolder with where your wordpress installation is. If your installation is not in a folder just use /var/www/wp-content/. If you get a "Permission denied/Operation not permitted" message, you probably omitted using "sudo" in front of the command.

Wednesday, April 11, 2012

Disable special characters Mac OSX such as á ä é ë (single-double quote/vowel)

Go to System Preferences -> Language and Text -> Input sources. Deselect U.S International, and select U.S.
Done.

Friday, December 2, 2011

Solve "Standard Mode: Fault outside of MS-DOS Extender." in virtualbox

I got this error when trying to install Windows 98 in Virtualbox.
Just uncheck these options:
  • "Enable VT-x/AMD-V" and 
  • "Enable PAE/NX"
Source