A resposta do Grawity está incorreta. Ele afirma que o motd é um arquivo global, mas o OP declarou claramente que ele estava trabalhando em /etc/update-motd.d /.
/etc/update-motd.d/ permite MOTDs gerados dinamicamente e pode executar scripts ou aplicativos reais.
Isso foi dito, eu estava enfrentando o mesmo problema que você. A questão é que, durante a execução do MOTD, os privilégios ainda não foram lançados na conta do usuário, portanto, todos os scripts são executados como raiz.
Consegui encontrar uma solução que funciona em máquinas Debian. Eu não tentei em outras distribuições. Qual a minha solução que recupera o nome de usuário da saída 'ps', como sshd mostra o nome de usuário, como:
root 4179 0.0 0.0 93984 5952 ? Ss 10:44 0:00 sshd: johndoe [priv]
Meu pequeno script 'pesquisa de volta' na árvore de processos para encontrar o processo que contém o nome de usuário.
PPID1='cat /proc/$PPID/status | grep PPid | awk '{ print $2 }''
PPID2='cat /proc/$PPID1/status | grep PPid | awk '{ print $2 }''
USERNAME='ps -x | grep $PPID2 | awk '{ print $6 }' | sed "s/[[:digit:].-]//g"'
O nome de usuário agora está na variável $ USERNAME.