我正在使用 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 组的成员!" 菲