Pergunta

Como faço para obter o $ usuário correto se eu executar um script shell com o sudo?

Eu executá-los como scripts postinstall em um pacote Mac instalar, onde estão sendo automaticamente ed-sudo, mas eu preciso fazer coisas com o nome de usuário.

$ HOME está correto, no entanto. O método deselegante seria para extrair o nome do caminho para casa, mas gostaria de saber se existe uma maneira natural de fazer isso.

Eu não posso influenciar a forma como os scripts estão sendo chamados, como é uma chamada automática dentro do instalador.

Foi útil?

Solução

No meu sistema do $SUDO_USER variável é definida para o nome de usuário do chamador.

Você não deve extrair o nome de usuário a partir da variável ${HOME} diretamente. Ele está sendo configurado e não calculada. Para extrair o nome de usuário que você poderia dar uma olhada no arquivo /etc/passwd, mas isso depende muito do sistema, por exemplo, às vezes você tem que olhar para um diretório LDAP ou as entradas são propagadas através NIS ...

Outras dicas

Você pode usar $(logname), que retorna o nome de login mesmo se você estiver atualmente sudoing.

Verifique a variável SUDO_USER .

http://www.gratisoft.us/sudo/man/sudo. html # ambiente

Outra maneira de obter o usuário é através do que comando. Isso às vezes é útil quando você não se importa se o usuário tiver sudo'd ou não.

who -m | awk '{print $1;}'

SUDO_USER não é portátil. É desactivado no Fedora 17.

O $USER e $UID variáveis ??não são previsíveis ao invocar sudo também. Algumas distros relatar o sudoer, outros relatam o usuário root.

É de nenhuma maneira perfeita, mas você poderia usar test -w ~root && echo I have write access to ~root.

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