[Dnssec-trigger] Beware when upgrading to Mountain Lion (was: DNSSEC trigger on OS X Mountain Lion seems to work ok)

Olaf Kolkman olaf at NLnetLabs.nl
Fri Jul 27 07:09:02 UTC 2012

On Jul 25, 2012, at 6:01 PM, Phil Regnauld <regnauld at nsrc.org> wrote:

> Quick testing shows that it works fine - have tried both in
> hotspot signon, and on a "normal" network. Everything seems
> to function (for those hesitating to upgrade).

I have noticed that unbound failed to start after I upgraded [*]

If you find yourself in that situation, set dnssec-trigger to hot-spot-signon mode in order to connect to the Internet.

This is because the installation script does not create a UniqueID and PrimaryGroupID for the unbound user. It seems that mountain lion does need these IDs in order to be recognized as a unix user, in contrast to previous versions of OS X.

If the command 
$ id unbound
returns "no such user", you know that you have been bitten by this problem.

To fix: 
Allocate yourself a free id. You can see the allocated ids using the following:
dscl localhost -list /Local/Default/Groups PrimaryGroupID
dscl localhost -list /Local/Default/Users UniqueID

Then assign the ids to the unbound user.
sudo dscl localhost -create /Local/Default/Users/unbound PrimaryGroupID <number>
sudo dscl localhost -create /Local/Default/Users/unbound UniqueID <number>

(I have toyed around with the user creation script below; use at your own risk.)

Finally, we will be fixing the dnssec-trigger package in the order of weeks (rather than days).


[*] It might be that Phil did not encounter this problem because unbound had been released earlier, e.g. through a port.


REALNAME="unbound daemon"

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# We prefer to use the same GID and UID so need to test that.

# Start with the the first slot after the highes allocated number in the 200-300 range.
id=$(dscl localhost -list /Local/Default/Users UniqueID | awk '{ if ( $2 > max && $2 <300 ) max = $2 } END { print  max+1 }' )

while [ $id -le $MAXID ]  # Really we are exagerating here... surely there will be one ID free below 1000.
    gid=$(dscl localhost -search /Local/Default/Groups PrimaryGroupID $id)
    uid=$(dscl localhost -search /Local/Default/Users UniqueID $id)
    if [ -z "$gid$uid" ]

echo $id $MAXID

if [ $id -eq $((MAXID+1)) ] ; then
    echo "NO FREE IDs"
    dscl localhost -create /Local/Default/Users/${USERNAME}
    dscl localhost -create /Local/Default/Users/${USERNAME} UserShell /usr/bin/false
    dscl localhost -create /Local/Default/Users/${USERNAME} PrimaryGroupID ${id}
    dscl localhost -create /Local/Default/Users/${USERNAME} UniqueID ${id}
    dscl localhost -create /Local/Default/Users/${USERNAME} RealName ${REALNAME}
    dscl localhost -create /Local/Default/Users/${USERNAME} NFSHomeDirectory ${NSFHomeDirectory}

Olaf M. Kolkman

olaf at NLnetLabs.nl

Science Park 400, 1098 XH Amsterdam, The Netherlands

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nlnetlabs.nl/pipermail/dnssec-trigger/attachments/20120727/48bd81ed/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2262 bytes
Desc: not available
URL: <http://lists.nlnetlabs.nl/pipermail/dnssec-trigger/attachments/20120727/48bd81ed/attachment.bin>

More information about the dnssec-trigger mailing list