Esta é uma escolha deliberada de segurança. No entanto, você pode configurar seu servidor telnetd para passar pela variável TERM , embora seu valor seja convertido em minúsculas. A verificação real dos valores legais TERM não é feita por in.telnetd em si, mas pelo programa de login, telnetlogin que o servidor chama. Você pode configurar seu servidor telnetd para executar algum outro programa de login, por exemplo, um script de shell intermediário, que irá descomprimir a variável antes de continuar com o login. Por exemplo, para testar isso, crie o arquivo /tmp/mytelnetlogin com o conteúdo:
#!/bin/bash
export MYTERM=$TERM
export TERM=dumb
exec /usr/lib/telnetlogin "$@"
e faça chmod +x nele. Em seguida, execute sua própria versão de teste do telnetd na porta 9999:
sudo sudo -u telnetd /usr/sbin/in.telnetd -debug 9999 -L /tmp/mytelnetlogin
e conecte-se a ela com sua variável no ambiente:
TERM='A=1:b=2' telnet localhost 9999
Você deve ver um prompt de login, e após o login, um echo $MYTERM mostrará o valor a=1:b=2 , que você pode manipular como normalmente faz. Obviamente, para uma solução real, você precisa colocar a opção -L em /etc/inetd.conf e não usar /tmp para o script.
Observe que telnetlogin é um programa de raiz setuid, que deve ser chamado a partir do ID do usuário telnetd . Isso é para permitir que inetd execute o servidor como não-raiz e use apenas a raiz para o login.
Se preferir ignorar esta medida de segurança, você pode executar in.telnetd como root e fazer com que execute o login padrão, /bin/login . Você não precisa então do script intermediário mytelnetlogin para manipular a variável. Por exemplo:
sudo /usr/sbin/in.telnetd -debug 9999 -L /bin/login