Por que apenas alguns terminais recebem um pts

0

Quando tento usar write para conversar com usuários conectados a uma sessão X, os resultados variam dependendo de qual terminal eles estão usando. O terminal do Gnome pode pegar write s, mas nem o lxterminal nem o terminador podem. A razão é que o lxterminal e o terminador não possuem dispositivos pts associados:

Com lxterminal (es) em execução:

$ who
tshaw    tty7         2013-01-27 21:34

Com o terminal do Gnome em execução:

$ who
tshaw    tty7         2013-01-27 21:34
tshaw    pts/1        2013-01-27 22:25 (:0)

(a entrada tty7 acima é a sessão X)

Existe uma maneira de configurar outros terminais para dispositivos pts ou isso teria que ser feito no código-fonte?

    
por Thomas Shaw 28.01.2013 / 04:28

1 resposta

4

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
    
por 28.01.2013 / 09:41