Дублирующиеся псевдотерминалы в Linux

На поле Redhat [Red Hat Enterprise Linux выпуск 4 AS (Обновление Наханта 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

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

7
задан 29.12.2009, 18:34

3 ответа

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

1
ответ дан 07.12.2019, 15:13

Совет обновить Ваш сервер является разумным.

Приводя это к сбою, можно обновить НЕКОТОРЫЕ приложения и не других. Который компоненты, и как далеко обновить их, "оставляют как осуществление для студента".

Сначала Вы захотите сделать некоторые тесты для обнаружения, какая программа эмулятора терминала используется людьми, когда это происходит. Это - Xterm? Раз так посмотрите "Обновление Red Hat Enterprise Linux 3 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

1
ответ дан 07.12.2019, 15:13

Я не могу воспроизвести это поведение здесь - независимо от того, что я делаю 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 или в масштабе всей системы в /etc/X11/Xresources/xterm. Вряд ли случится так что, но просто мысль.

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

1
ответ дан 07.12.2019, 15:13

Теги

Похожие вопросы