amarao (amarao_san) wrote,
amarao
amarao_san

Category:

getty magic

Дочитал до части, где подробно описывается init+getty. Оно божественно просто и изящно.

init следит за pid'ами запущенных процессов - в интересующих нас вопросах это getty, слушающие на виртуальных консолях и последовательных портах.

когда приходит соединение и getty запускает login, он запускается не как fork-n-exec, а как чистый exec (с замещением вызвавшего процесса). Более того, login делает ровно то же самое - он запускает шелл через exec(), замещая им себя.

init молчит, так как pid жив. Как только pid умер (баш закрыли), init перезапускает getty, который в свою очередь запускает логин. Просто? Да. Изящно? Да!

И вот ещё чуть-чуть логики: на машине с fork-бомбой можно залогиниться с консоли, но нельзя ничего запустить. Почему? Потому что при логине не образуется НОВЫХ PID'ов, весь процесс проходит в одном PID'е. Так что залогиниться можно, но как только разлогинишься, init не сможет перезапустить getty.
Tags: init, linux
Subscribe

  • А вот вам пост об исторической нелогичности

    Вот есть у меня файл /etc/default/grub.d/unified.cfg для включения unified cgroups для systemd. А вот вопрос (ответ на который я хорошо знаю, но…

  • апгрейдовое

    А вот шифрованный home я переносил вообще ленивым образом - тупо сделал dd для раздела и поправил путь к устройству для кастомного pam_exec-скрипта.…

  • VM VS baremetal

    Наконец-таки у меня появились цифры для обсуждения этого вопроса в отрыве от IO. Известно, что IO на виртуалках всегда медленее, чем на bare-metal, и…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 9 comments