0

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

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

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

#!/bin/sh

curruser=`whoami`
logger "为用户 $curruser 设置 /var/lock 的权限!"

如果 [ !-d /var/lock ]
然后
  记录器“正在创建 /var/lock!”
  sudo mkdir /var/lock
菲

sudo chgrp uucp /var/lock
须藤 chmod 775 /var/lock

# MacOSX 10.5 及更高版本使用 dscl
如果 [ `sudo dscl . -read /Groups/uucp GroupMembership | grep $curruser | wc -l` = "0"]
然后
  记录器“将用户 $curruser 添加到 /Groups/uucp!”
  须藤 dscl 。-append /Groups/uucp GroupMembership $curruser
  # 恢复使用:
  # 须藤 dscl 。-delete /Groups/uucp GroupMembership $curruser
别的
  logger "用户已经是 uucp 组的成员!"
菲

4

1 回答 1

0

代替

curruser=`whoami`

我现在正在使用

curruser=`用户`

这让我得到了当前登录用户的列表,这部分地解决了问题。剩下的问题是:

  • 如果在安装时确实有两个或更多用户登录到 Mac,我的脚本将无法将用户添加到组 uucp。

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

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

于 2010-04-13T09:15:17.847 回答