7

На красной коробке [Red Hat Enterprise Linux AS, выпуск 4 (обновление Nahant 3)]

Часто мы замечаем, что два человека назначаются на один и тот же псевдотерминал. Например:

$who am i
user1 pts/4        Dec 29 08:38 (localhost:13.0)
user2 pts/4        Dec 29 09:43 (199.xxx.xxx.xxx)
$who -m
user1 pts/4        Dec 29 08:38 (localhost:13.0)
user2 pts/4        Dec 29 09:43 (199.xxx.xxx.xxx)
$whoami
user2

Это вызывает проблемы в скрипте, потому что "кто я" возвращает две строки. Я знаю, что между этими двумя командами есть различия, и, очевидно, мы можем изменить сценарий, чтобы решить проблему. Но меня все еще беспокоит, что два пользователя возвращаются с одного терминала. Мы подозреваем, что это может быть связано с мертвыми сессиями. Кто-нибудь может объяснить, почему назначается два (неуникальных) номера очков и / или как это можно предотвратить в будущем?

3 ответа3

1

Я не могу воспроизвести это поведение здесь - что бы я ни делал, utmp очищается - но обновление utmp выполняется вспомогательной программой utempter , в /usr/lib/utempter , которая вызывается xterm, поэтому, если xterms уничтожается камень по какой-то причине (например, из-за исчерпания виртуальной памяти) может оказаться, что у него нет шансов на очистку.

Обратите также внимание на то, что в ней была исправлена уязвимость безопасности http://rhn.redhat.com/errata/RHSA-2004-174.html, хотя я думаю, что маловероятно, что рассматриваемый пользователь вызывает сбои в работе, преднамеренно используя это.

Посмотрите, сможете ли вы воспроизвести это поведение, запустив xterm в фоновом режиме и убив его, не давая ему возможности очистить utmp:

$ who
$ xterm &
[1] 6229
$ who
$ kill -9 6229
$ who

И еще одна теория вуду: я заметил, что у xterm есть настройка, которая делает поведение utmp более осторожным. Обычно он включен по умолчанию и отключен путем

XTerm*ptyHandshake:     false
в ~/.Xresources или для Xresources системы в /etc/X11/Xresources/xterm . Это вряд ли так, но только мысль.

Одним из обходных путей может быть убеждение или принуждение пользователей использовать другой эмулятор X-терминала, такой как rxvt , меньшую замену, которая отвечает существующим настройкам конфигурации xterm, не включает в себя функцию эмуляции графики для рисования линий Tektronix 4014 и использует значительно меньше памяти для запуска.

1

Вы пробовали использовать более новую версию Red Hat? 4.3 довольно старый, последний 4.x-релиз 4.8. Кроме того, Red Hat 5 находится в версии 5.4, что является большим шагом вперед. Если вы хотите попробовать более новую версию без хлопот покупки Red Hat, вы можете попробовать CentOS, который является двоичным, совместимым с Red Hat.

1

Совет модернизировать ваш сервер - это разумно.

В противном случае вы можете обновить некоторые приложения, а не другие. Какие компоненты и как далеко их обновить, "оставлено в качестве упражнения для студента".

Сначала вы захотите сделать несколько тестов, чтобы выяснить, какая программа эмулятора терминала используется людьми, когда это происходит. Это Xterm? Если да, ознакомьтесь с "Примечаниями к выпуску Red Hat Enterprise Linux 3 Update 8" - http://mirror.centos.org/centos/3/docs/release-notes/as-amd64/RELEASE-NOTES-U8-x86_64-en. .html

Там вы найдете исправление ошибки для xterm, которое просто гласит: «не пишите двойную запись utmp»

Таким образом, это заставит меня предположить, что вам, вероятно, следует обновить xterm по крайней мере до xterm-179-6.EL3 (не спрашивайте меня, почему номер версии говорит EL3; я понятия не имею)

Надеюсь это поможет!
-pbr

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .