Pergunta

Estou usando o PackageMaker para criar um instalador para o meu aplicativo. Durante a instalação, preciso executar um script bash para instalar corretamente o RXTX, uma biblioteca JNI para comunicação por porta serial. Esta biblioteca precisa ter o diretório /var /bloqueio no lugar com o usuário "root" e o grupo "UUCP". O script de instalação também precisa adicionar o usuário atual ao grupo "UUCP" para que o LIB seja capaz de escrever para /var /bloqueio.

Agora, quando executo meu instalador de aplicativos, o script de pré -instalação é executado como root. Portanto, "Whoami" retorna root em vez do usuário que está realmente executando o instalador. O resultado é que o RXTX não pode criar arquivos de bloqueio em /var /bloqueio porque o usuário real não foi adicionado como um membro ao "UUCP".

Como posso obter o usuário enquanto meu script é executado pelo instalador. Ou é melhor definir as permissões para /var /bloquear para um grupo diferente, talvez? Quaisquer sugestões são bem -vindas!

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

Foi útil?

Solução

Ao invés de

curruser=`whoami`

Agora estou usando

curruser=`users`

O que me traz uma lista dos usuários atualmente conectados que está corrigindo parcialmente o problema. Os problemas restantes são:

  • Caso haja realmente dois ou mais usuários conectados ao Mac no momento da instalação, meu script não adicionará os usuários ao grupo UUCP.

  • Caso outro usuário no Mac deseja executar meu aplicativo, ele falhará novamente porque esse usuário não foi adicionado ao grupo UUCP.

Talvez alguém tenha dica sobre essas questões?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top