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

  • Админская мудрость

    Когда вывод strace на башовый скрипт становится понятнее самого скрипта, граница разумности давно пройдена.

  • Rules of internet

    Rule 34. There is porn of it. Rule 35. It's used to mine cryptocurrencies.

  • CI без сервера

    А вот у меня есть такой запрос: я хочу иметь CI-подобный инструмент (задачи/автоматически вычисляемые зависимости порядка выполнения, параметры,…

  • 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