Question

J'utilise PackageMaker pour créer un programme d'installation pour mon application. Lors de l'installation que je dois exécuter un script bash pour installer correctement rxtx, une bibliothèque JNI pour la communication du port série. Cette bibliothèque a besoin d'avoir le répertoire / var / lock en place avec l'utilisateur « root » et le groupe « uucp ». Le script d'installation doit également ajouter l'utilisateur actuel au groupe « uucp » pour la lib de pouvoir écrire dans / var / lock.

Maintenant, quand je lance mon programme d'installation d'application le script de pré-installation est exécuté en tant que root. Par conséquent, « whoami » retourne racine au lieu de l'utilisateur qui est en fait en cours d'exécution du programme d'installation. Le résultat est que rxtx n'est pas en mesure de créer des verrous dans / var / lock parce que l'utilisateur réel n'a pas été ajouté en tant que membre de « uucp ».

Comment puis-je obtenir l'utilisateur alors que mon script est exécuté par l'installateur. Ou est-il préférable de définir les autorisations pour / var / lock à un autre groupe peut-être? Toutes les suggestions sont les bienvenues!

#!/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

Était-ce utile?

La solution

Au lieu de

curruser=`whoami`

Je suis maintenant en utilisant

curruser=`users`

qui me fait une liste des utilisateurs actuellement connectés wich est en partie le problème de fixation. questions restantes sont:

  • Dans le cas où il y a vraiment deux ou plusieurs utilisateurs connectés au Mac au moment de l'installation, mon script ne parviendra pas à ajouter les utilisateurs au groupe uucp.

  • Dans le cas où un autre utilisateur sur le Mac veut exécuter mon application, il échouera à nouveau parce que cet utilisateur n'a pas été ajouté au groupe uucp.

Peut-être que quelqu'un a obtenu un indice sur ces questions?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top