2010-04-09 100 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。

也許有人對這些問題有暗示?