PackageMaker install script for rxtx
- by vinzenzweber
I am using PackageMaker to create an installer for my application. During installation I need to run a bash script to properly install rxtx, a JNI library for serial port communication. This library needs to have the directory /var/lock in place with user "root" and group "uucp". The installation script also needs to add the current user to the group "uucp" for the lib to be able to write to /var/lock.
Now when I run my application installer the preinstall script is run as root. Therefore "whoami" returns root instead of the user who is actually running the installer. The result is that rxtx is not able to create lock files in /var/lock because the actual user was not added as a member to "uucp".
How can I get the user while my script is run by the installer. Or is it better to set the permissions for /var/lock to a different group maybe? Any suggestions are welcome!
!/bin/sh
curruser=whoami
logger "Setting permissions for /var/lock for user $curruser!"
if [ ! -d /var/lock ]
then
logger "Creating /var/lock!"
sudo mkdir /var/lock
fi
sudo chgrp uucp /var/lock
sudo chmod 775 /var/lock
MacOSX 10.5 and later use dscl
if [ sudo dscl . -read /Groups/uucp GroupMembership | grep $curruser | wc -l = "0" ]
then
logger "Add user $curruser to /Groups/uucp!"
sudo dscl . -append /Groups/uucp GroupMembership $curruser
# to revert use:
# sudo dscl . -delete /Groups/uucp GroupMembership $curruser
else
logger "GroupMembership of /var/lock not changed!"
fi