Xセッションにログインしているユーザーと会話しようとすると、write
ユーザーが使用している端末によって結果が異なります。 Gnome 端末は s を選択できますが、write
lxterminal または 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