Pergunta original
Todos os programas mencionados têm um pts
. O problema não é que seus terminais especificados não tenham um dispositivo pts, mas que as informações não sejam gravadas.
Por que o lxterminal ou outros terminais não são exibidos em who
who
recupera as informações de um utmp
, normalmente /var/run/utmp
, é gravado pelos próprios programas. Para escrever um utmp
, os programas de entrada precisam ter acesso ao arquivo, o que é normal, aplicações padrão como lxterm ou urxvt não têm.
Permitir acesso a /var/run/utmp
para aplicativos
Normalmente, /var/run/utmp
não pode ser gravado para o usuário normal, ou seja, os programas não podem criar novas entradas, pois um usuário mal-intencionado pode substituir o arquivo ou gravar entradas falsas.
No meu sistema /var/run/utmp
tem as seguintes permissões:
$ ls -l /var/run/utmp
-rw-rw-r-- 1 root utmp 3072 Jan 28 08:26 /var/run/utmp
significa que, para escrever no arquivo, você precisa pelo menos estar no grupo.
A melhor solução para conceder permissões a programas para atualização de /var/run/utmp
é alterar as permissões do programa para que ele possa atualizar o arquivo. Você pode fazer isso definindo o grupo do executável como utmp
e definir o setgid
, o que significa que ele definirá o ID do grupo das permissões do arquivo, ou seja:
chgrp utmp /usr/bin/urxvt
chmod g+s /usr/bin/urxvt