2010-04-09 99 views
0

我正在使用PackageMaker为我的应用程序创建安装程序。在安装过程中,我需要运行一个bash脚本来正确安装rxtx,一个用于串口通信的JNI库。这个库需要有用户“root”和组“uucp”的目录/ var/lock。安装脚本还需要将当前用户添加到组“uucp”,以便lib能够写入/ var/lock。rMx的PackageMaker安装脚本

现在,当我运行我的应用程序安装程序时,预安装脚本以root身份运行。因此,“whoami”返回的是根,而不是实际运行安装程序的用户。结果是rxtx无法在/ var/lock中创建锁定文件,因为实际用户未作为“uucp”的成员添加。

当我的脚本由安装程序运行时,如何获取用户。或者,将/ var/lock的权限设置为不同的组可能更好吗?欢迎任何建议!

 

#!/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 "User already member of group uucp!" 
fi 

回答

0

而不是

curruser=`whoami`

我现在用

curruser=`users`

这让我的用户当前登录至极部分地解决了这个问题的清单。剩下的问题是:

  • 如果真的有两个或两个以上的用户在安装的时刻登录到Mac上,我的脚本将无法将用户添加到组UUCP。

  • 如果Mac上的其他用户想要运行我的应用程序,它将再次失败,因为此用户未添加到组uucp。

也许有人对这些问题有暗示?