Eu encontrei o mesmo problema em 16.04. Eu tinha vários scripts usando o logname e agora eles não funcionam. Eu criei uma solução alternativa. Enquanto logado como eu, eu solto um arquivo no meu diretório pessoal com o meu nome de usuário de login:
echo $LOGNAME > ~/.logname;
Quando quero acessar meu logname, eu o recupero assim:
g_logname="$(<~/.logname)";
Isso funciona quer eu esteja executando um script como eu ou como root, porque o sudo root mantém a definição de "~" como meu diretório pessoal. Eu posso criar um arquivo .logname para cada usuário no sistema. Esse método funciona, enquanto o uso de $ USER e $ LOGNAME não ocorre ao chamar de um nível raiz. É verdade que alguém poderia hackeá-lo e alterar o valor do arquivo, mas não estou preocupado com isso. Você sempre pode alterar as permissões no arquivo para 444 e o proprietário: group para root: root, que impedirá qualquer pessoa sem privilégios de root.