Terminal

為什麼只有部分終端有pts

  • January 28, 2013

當我嘗試與write登錄到 X 會話的使用者交談時,結果會因他們使用的終端而異。Gnome 終端可以接writes,但 lxterminal 和 terminator 都不能。原因是 lxterminal 和 terminator 沒有關聯的 pts 設備:

隨著 lxterminal(s) 執行:

$ 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 設備或者必須在原始碼中完成?

原始問題

所有提到的程序都有一個pts. 問題不在於您指定的終端沒有 pts 設備,而是沒有記錄資訊。

為什麼 lxterminal 或其他終端不顯示who

whoutmp通常從文件中檢索它的資訊/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

引用自:https://unix.stackexchange.com/questions/62800