LINUX.ORG.RU

Где создается новая сессия?


0

0

Подскажите, а желательно тыкните носом в исходники, где создается новая сессия при входе на машину через терминал? Желательно на примере FreeBSD.

ЗЫ: книги читать можете не отсылать, много чего до дыр прочитал. Так Стивенс пишет, что getty открывает терминал и выдает приглашение ко вводу пользовательского имени, потом вызывается login, запрашивает пароль и запускает shell. Где вызывается setsid()? Эта функция разрывает связь с управляющим терминалом, и если я правильно понимаю то она должна запускаться либо в getty до открытия терминала либо init до запуска getty, однако ни там ни там примитива setsid() необнаружено в нужном месте (там где getty запускается). В login тоже не найдено этого примитива, а ведь лиером сессии становится именно login-getty-init? Может я чего пропустил или не понимаю?

anonymous

натрави strace -f -F -s 64 -o ~/sshd_strace на слушающий sshd и увидишь.

true_admin ★★★★★
()

Дак вроде getty вызывается из initd, у которого и так нету управляющего терминала, поэтому при открытии терминала getty и получает его в качестве управляющего. ИМХО.

mky ★★★★★
()
Ответ на: комментарий от mky

Интересен вход на ЛОКАЛЬНЫЙ терминал с ЛОКАЛЬНОЙ консоли. А этот процесс точно идет по схеме init->/fork/->init->getty->login->/fork/->shell после первого fork должно быть создание сессии если я правильно понимаю та как в getty открывается управляющий терминал. Однако вызовов к setsid в исходниках init в этом месте нет. setsid вызывактися один раз на этапе начальной загрузки (init становится лидером сессии 1) и еще раз для завгрузки оконной системы, но вот для getty вызова к setsid нет. В текстах getty тоже нету вызовов к setsid, а после открытия упрвляющего терминала и быть не может (иначе управляющий терминал будет потерян). Вот и вопрос ГДЕ И КАК новые процессы getty становятся лидерами новых сессий? В BSD это может быть сделано кроме как вызовом setsid?

ЗЫ inetd и sshd непричем с ними все понятно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.