No lado do cliente, você pode usar o comando tty
( manpage aqui ). Assumindo que a sessão é interativa, esse comando retornaria algo como:
breakthrough@lt0:~$ tty
/dev/pts/0
No entanto, se o cliente não for não interativo / baseado em tty, o comando retornará:
not a tty
Para realmente escrever um módulo PAM, enquanto tty
fornece alguns códigos de saída que você pode usar, é improvável que você possa usar o comando tty
diretamente como syscall; em vez disso, você deve dar uma olhada em a função ttyname()
(ou ttyname_r()
) .
Você pode ver uma implementação de exemplo de esta função aqui , que abrange alguns casos de uso geral. Embora deva ser suficiente para ver se um ttyname válido foi retornado, a melhor prática seria verificar se o erro ENOTTY
foi gerado, indicando que o descritor de arquivo transmitido não se refere a um dispositivo terminal.