ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
контакт-центра
 онтакт - центр как канал продаж и маркетинговой коммуникации ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопастность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

9 минут чтени€

”ровни выполнени€ (runlevel) Linux можно представить, как режим, в котором запускаетс€ система.  аждый из этих режимов обладают своими процессами, которые включены или выключены в зависимости от запущенного уровн€ выполнени€. — момента загрузки Linux выполн€етс€ в одном из режимов, нельз€ запускать систему в нескольких режимах, но есть возможность переключатьс€ между уровн€ми во врем€ работы на компьютере.

Ќапример, при запуске системы с графическим интерфейсом выполн€етс€ один уровень, а если запускать систему в режиме командной строки выполнитс€ другой. Ёто происходит потому, что режиму GUI нужны доступы к тем процессам, в которых командна€ строка не нуждаетс€. ¬ зависимости от того, какие службы нужно включить, а какие выключить система мен€ет уровни выполнени€.


ѕочему важны уровни доступа

¬ы можете годами пользоватьс€ системой Linux, даже не понима€ разницу между уровн€ми доступа, так как эта опци€ не €вл€етс€ часто конфигурируемой.

“ем не менее уровни выполнени€ Linux дают администраторам повышенный контроль над системой.

–ежим, в котором работает система, может быть изменен (как это сделать будет показано далее), как и сервисы, которые выполн€ютс€ в этом режиме. Ёто позвол€ет нам полностью контролировать, к каким службам система будет иметь доступ в данный момент.


—колько уровней выполнени€ существует?

¬ системе Linux есть семь уровней выполнени€, которые нумеруютс€ от 0 до 6. –азные дистрибутивы по-разному используют уровни выполнени€, так что очень сложно составить список задач, которые выполн€ет конкретный уровень.

«ато вы сами можете посмотреть какие задачи выполн€ют уровни доступа вашего дистрибутива. Ќиже приведЄн список уровней выполнени€ и основных задач, выполн€емых ими.

  • Runlevel 0 завершает работу системы
  • Runlevel 1 однопользовательский режим работы. „аще всего используетс€ в цел€х обслуживани€ и выполнени€ других административных задач. Ёто уровень также может называтьс€ runlevel S, где S означает single-user. ≈сли вам когда-то приходилось сбрасывать пароль на Linux, то вы веро€тно уже пользовались этим режимом.
  • Runlevel 2 многопользовательский режим работы без поддержки сетевых служб (демонов).
  • Runlevel 3 многопользовательский режим с поддержкой сети, но без графического интерфейса. „аще всего серверные версии Linux работают именно на этом уровне выполнени€.
  • Runlevel 4 не используетс€. ѕользователь может настраивать этот уровень исход€ из его целей. ќ том, как это сделать также будет рассказано далее.
  • Runlevel 5 этот режим схож с уровнем 3, но тут еще запускаетс€ графический интерфейс. ¬ этом режиме работают десктопные версии Linux.
  • Runlevel 6 этот уровень перезагружает систему.

 ак узнать текущий режим работы?

„тобы узнать текущий уровень выполнени€ достаточно ввести команду runlevel в командной строке.

ввести команду runlevel в командной строке

Ќа выводе этой команды две цифры. ѕерва€ указывает на предыдущий режим работы, а второй на текущий. Ќа скриншоте вместо первой цифры указана буква N, что значит система изначально запускалась и работает в 5 режиме, о чЄм говорит втора€ цифра 5.


 ак мен€ть уровень выполнени€?

“екущий уровень выполнени€ можно мен€ть командой "telinit". Ќиже приведЄн пример смены уровн€ выполнени€ на CentOS.

$ telinit 3
“екущий уровень выполнени€ можно мен€ть командой telinit

—ледует отметить, что эта операци€ требует прав привилегированного пользовател€. »мейте ввиду, что на системах семейства Debian уровни выполнени€ работают по-другому. Ќапример, Ubuntu в режиме командой строки запускаетс€ с уровнем выполнени€ 5.

ѕосле выполнени€ команды указанной выше, ваш экран может стать пустым. Ёто потому, что вы остались на пустом терминале, чтобы вернутс€ на рабочий терминал нажмите комбинацию клавиш Alt+F1.

≈сли запустить команду runlevel еще раз, то мы увидим, что текущий уровень выполнени€ 3, а предыдущий 5.

текущий уровень выполнени€

Linux system против runlevels

¬ последние годы systemd сменила многолетнюю систему уровней доступа (System V init). ‘актически он работает по тому же принципу, но использует новые команды, которые в целом используют "runlevel" как "target".

  • Runlevel 0 = poweroff.target (runlevel0.target)
  • Runlevel 1 = rescue.target (runlevel1.target)
  • Runlevel 2 = multi-user.target (runlevel2.target)
  • Runlevel 3 = multi-user.target (runlevel3.target)
  • Runlevel 4 = multi-user.target (runlevel4.target)
  • Runlevel 5 = graphical.target (runlevel5.target)
  • Runlevel 6 = reboot.target (runlevel6.target)

ѕо ходу статьи мы изучим systemd и его команды.


 ак помен€ть уровень выполнени€ по умолчанию?

ћожет быть очень много причин дл€ того чтобы загружатьс€ с другим уровнем выполнени€. Ќапример, системные администраторы в основном используют систему в режиме командой строки, включа€ графический интерфейс только в случае необходимости.

»менно дл€ таких случаев нужно убедитьс€, что уровень выполнени€ по умолчанию 3, а не 5.

¬ прошлом дл€ этого приходилось редактировать файл /etc/inittab. ¬ы еще можете увидеть эту практику на некоторых системах. ≈сли вы работаете с ќ—, которые давно не обновл€ютс€ до новых версий, этот путь будет приемлемым.

$ vi /etc/inittab
vi /etc/inittab

Ќа скриншоте уровнем выполнени€ по умолчанию установлен 5.

Ќо большинство систем Linux отказались от файла /etc/inittab в пользу systemd targets и мы рассмотрим разницу между ними по ходу статьи.

¬ы можете не найти в своей системе файл /etc/inittab или же файл inittab выведет вам сообщение с советом использовать systemd.

совет использовать systemd

„тобы проверить текущий уровень выполнени€ по умолчанию введите команду

$ systemctl get-default
systemctl get-default

—истема вернула нам "graphical.target".  ак вы наверное и догадались, это не что иное, как уровень выполнени€ 5.

„тобы просмотреть остальные "target" и уровни выполнени€, ассоциированные с ними введите команду:

$ ls -l /lib/systemd/system/runlevel*
ls -l /lib/systemd/system/runlevel*

—имвольные ссылки указывают на то, что systemd работают так же как и runlevel. »так, что необходимо сделать, чтобы помен€ть уровень выполнени€ по умолчанию? ƒл€ этого достаточно создать новую символьную ссылку на интересующую нас цель systemd.

$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target*

ƒанной командой мы помен€ли режим запуска системы по умолчанию с уровн€ выполнени€ 5, на 3 и при следующей загрузке система выполнить именно этот уровень.

 люч f указывает на то, что перед созданием новой символьной ссылки целевой файл должен быть удален. Ёто же самое могли бы сделать командой rm.

„тобы проверит успешно ли применились изменени€ достаточно повторно ввести команду "systemctl get-default".

systemctl get-default*

–азница между уровн€ми выполнени€ 3 и 5

—амыми часто используемыми уровн€ми выполнени€ €вл€ютс€ уровни 3 и 5. ¬ целом их разница сводитс€ к тому, что 3 это режим командной строки, а 5 режим графического интерфейса.

 онечно, не во всех дистрибутивах выполн€етс€ это условие или же ваша система может быть сконфигурирована так, что эти два уровн€ имеют больше отличий. ƒальше мы рассмотрим, как узнать, какие процессы задействованы дл€ того или иного уровн€.


ѕросмотр список служб конкретного уровн€

„тобы просмотреть список служб, доступных дл€ каждого уровн€ до недавнего времени использовалась команда "chkconfig -list". ≈сли у вас стоит одна из последний версий, системы, то веро€тно вы получите ошибку, как на скриншоте ниже:

chkconfig -list

„тобы проверить, какие службы запускаютс€ во врем€ загрузки системы в режиме графического интерфейса (уровень выполнени€ 5 дл€ семейства RedHat), нужно запустить следующую команду:

$ systemctl list-dependencies graphical.target
systemctl list-dependencies graphical.target

„тобы просмотреть список доступных служб другого уровн€, просто замените "graphical.target" на нужную.


ѕод каким уровнем работает процесс

≈сли нужно посмотреть по каким уровнем выполнени€ запущена та или ина€ служба, можно ввести команду:

$ systemctl show -p WantedBy [name of service]

Ќапример, чтобы посмотреть какой runlevel использует служба sshd, введите команду:

$ systemctl show -p WantedBy sshd.service
systemctl show -p WantedBy sshd.service

—уд€ по скриншоту выше, служба sshd запушена под уровн€ми 2,3 и 4 (multi-user.target)


ћен€ем уровень запуска приложени€

 ак было показано выше, демон SSH запущена только на уровн€х 2-4. „то если нам нужно, чтобы он работал ещЄ и на уровне 5? ƒл€ этого нужно ввести следующее изменение:

$ systemctl enable sshd.service
systemctl enable sshd.service

ѕроблемы безопасности с уровн€ми доступа Linux

 ак было сказано ранее, уровни доступа дают администраторам возможность управл€ть службами, которые работают в определЄнных случа€х. “ака€ возможность детального контрол€ повышает безопасность системы, так как системный администратор может быть уверен, что не запущена ни одна сторонн€€ служба.

ѕроблема возникает, когда администратор не знает точно какие службы запущены и, следовательно, не может прин€ть меры по уменьшению площади атаки.

»спользу€ методы из данного руководства, вы можете настроить уровень выполнени€ по умолчанию и контролировать запущенные приложени€. Ёто, конечно, не уменьшит нагрузку на системные ресурсы, но сервер будет более защищен.

ѕомните, что надо запускать тот уровень, который вам необходим. Ќет смысла запускать систему в графическом режиме, если планируете работать там режиме командной строки.

 аждый уровень выполнени€ запускает новые службы, большинство из которых работают в фоновом режиме, и вы можете забыть обезопасить их.


 акой уровень выполнени€ выбрать?

¬ыбор режима запуска системы полностью зависит от ситуации. ¬ основном используетс€ один из двух режимов: либо runlevel 3, либо runlevel 5.

≈сли вам удобно работать с командной строкой и вам не нужен графический интерфейс, то уровень выполнени€ 3 самый подход€щий.

Ёто предотвратит запуск ненужных служб. — другой стороны, если вам хочетс€ работать в десктопном режиме или же вам нужна графическа€ оболочка дл€ работы какой-то программы, то выберите уровень 5.

≈сли же нужно запустить систему в режиме обслуживани€, то выбирайте уровень 1. ¬ этом режиме в системе будете только вы, так как сетевые службы даже не запущены. Ёто позволит выполнить обслуживани€ без сбо€.

¬ редких случа€х по€вл€етс€ необходимость использовать уровень выполнени€ 4. Ёто может быть только в том случае, если администратору нужен уровень выполнени€ дл€ особых задач.

 ак вы уже, наверное, заметили, мы не может запускать систему с уровнем 0 и 6, но можно переключатьс€ на них если нужно выключить или перезагрузить систему. Ќо в этом нет особой необходимости, так как есть команды, которые выполн€ют эти операции.


ћожно ли создано новый уровень на Linux?

“ак как система Linux это система бесконечных возможностей, то и создание нового уровн€ не исключение. Ќо очень маловеро€тно, что вам когда-нибудь понадобитс€ это. Ќо если вы все-таки решили создать новый уровень, то следует начать с копировани€ существующего уровн€ и изменени€ еЄ под свои задачи.

÷елевые уровни расположены по следующему пути:

/usr/lib/systemd/system

≈сли хотите создать свой уровень на основе 5-го уровн€ выполнени€, скопируйте искомую директорию в новую:

$ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target

«атем в новой директории создайте поддиректорую "wants":

$ mkdir /etc/systemd/system/mynew.target.wants

«атем просто создайте символьную ссылку на дополнительные службы в директории /usr/lib/systemd/system, которые необходимы вашему уровню.


ѕолезна ли ¬ам эта стать€?


Ёти статьи могут быть вам интересны: