ベストアンサー1
Xtermはすでに/dev/ptmx
開いていますが、これは見ることができません。理由は次のとおりです。
実行xterm
権限にはS_ISGID
(set-group-ID)ビットが設定されており、グループが所有していますutmp
。
この方法は、エントリを(および正確なパスはシステムによって異なる場合があります)xterm
に追加することによってセッションがまたはの出力に表示されるように設定されます。/var/run/utmp
/var/log/wtmp
who
last
これらの権限を使用すると、実行xterm
時に実行するプロセスでその権限を表示できます。効果的なutmp
グループIDはグループのIDに変更されます(読むグループIDは変更されず、そのまま残ります。これにより、utmp
書き込みモードでレコードを開いてログインする権限が付与されます。wtmp
Linuxでは、セキュリティ対策として、root
実効ユーザーIDが実際のユーザーIDと異なる場合、または実効グループIDが実際のグループIDと異なるプロセス用に開かれたファイルのみをリストできます。 (これらのプロセスには他のプロセスと比較して権限があることがわかります/proc/<pid>fd
。)dr-x------ root root
dr-x------ you your-group
そのため、lsof
通常のユーザーとして実行すると、xterm
プロセスの開いたファイルを一覧表示できません。lsof
として実行する必要がありますroot
。
動作する理由については、gnome-terminals
いくつかの可能性があります。
gnome-terminal
ログイン履歴にエントリを追加しません(私のシステムの場合)。gnome-terminal
使用utempter
助ける人(この場合はsgidutmp
)ログイン履歴を追加します。これが私がシステムでxterm
やりたいことですkonsole
。gnome-terminal
utmp
ログイン履歴を更新した後(xterm
実行されていない)、有効なユーザーIDを実際のユーザーIDにリセットします(特別なアクセス権を一時的に放棄します)。