元の質問

元の質問

Xセッションにログインしているユーザーと会話しようとすると、writeユーザーが使用している端末によって結果が異なります。 Gnome 端末は s を選択できますが、writelxterminal または terminator はどちらも選択できません。その理由は、lxterminalとterminatorに関連付けられたptsデバイスがないためです。

lxterminalが実行されているとき:

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

GNOME端末が実行されている場合:

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

(上記のtty7エントリはXセッションです)

ptsデバイスをインポートするように他の端末を設定する方法はありますか、それともソースコードで行う必要がありますか?

答え1

元の質問

言及されたすべてのプログラムではpts。問題は、指定した端末にptsデバイスがないため、情報が記録されないことです。

lxterminalや他の端末が表示されないのはなぜですか?who

who以下から情報を検索します。utmp/var/run/utmp通常、プログラム自体で作成されたファイルです。入力プログラムを作成するには、utmp通常の標準アプリケーション(lxtermやurxvtなど)にないファイルにアクセスできる必要があります。

/var/run/utmpアプリケーションアクセスを許可

通常/var/run/utmp、一般ユーザーは書き込めません。つまり、悪意のあるユーザーがファイルを上書きしたり間違ったアイテムを書き込んだりする可能性があるため、プログラムは新しいアイテムを作成できません。

私のシステムには/var/run/utmp次の権限があります。

$ ls -l /var/run/utmp 
-rw-rw-r-- 1 root utmp 3072 Jan 28 08:26 /var/run/utmp

つまり、ファイルに書き込むには少なくともこのグループに属している必要があります。

プログラムに更新権限を付与する最善の方法は、ファイルを/var/run/utmp更新できるようにプログラムの権限を変更することです。実行可能ファイルのグループをに設定し、utmpフラグを設定することでsetgidこれを行うことができます。つまり、ファイル権限に基づいてグループIDを設定します。つまり:

chgrp utmp /usr/bin/urxvt
chmod g+s /usr/bin/urxvt

関連情報