Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/content/ru/books/handbook/jails/_index.adoc
18098 views
---
description: 'ΠšΠ»Π΅Ρ‚ΠΊΠΈ (jails) ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ окруТСния chroot нСсколькими способами'
next: books/handbook/mac
params:
  path: /books/handbook/jails/
part: 'Π§Π°ΡΡ‚ΡŒ III. АдминистрированиС систСмы'
prev: books/handbook/security
showBookMenu: 'true'
tags: ["jails", "creating", "managing", "updating"]
title: 'Π“Π»Π°Π²Π° 17. ΠšΠ»Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹'
weight: 21
---

[[jails]]
= ΠšΠ»Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 17
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/jails/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[jails-synopsis]]
== ΠžΠ±Π·ΠΎΡ€

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ администрированиС систСмы β€” слоТная Π·Π°Π΄Π°Ρ‡Π°, Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ мноТСство инструмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь администратору. Π­Ρ‚ΠΈ инструмСнты часто ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ способы установки, настройки ΠΈ обслуТивания систСм. Один ΠΈΠ· инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности систСмы FreeBSD, β€” это _ΠΊΠ»Π΅Ρ‚ΠΊΠΈ (jails)_. ΠšΠ»Π΅Ρ‚ΠΊΠΈ доступны начиная с FreeBSD 4.X ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠ»Π°Π½Π΅ полСзности, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, надёТности ΠΈ бСзопасности.

ΠšΠ»Π΅Ρ‚ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ man:chroot[2], которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° для Π½Π°Π±ΠΎΡ€Π° процСссов. Π­Ρ‚ΠΎ создаёт бСзопасноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ систСмы. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹, созданныС Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ chroot, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈΠ»ΠΈ рСсурсам Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ компромСтация слуТбы, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ chroot, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ ΡΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю систСму.

Однако `chroot` ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Он ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для простых Π·Π°Π΄Π°Ρ‡, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… большой гибкости ΠΈΠ»ΠΈ слоТных, ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ мноТСство способов Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· окруТСния `chroot`, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π΅ самым ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ сСрвисов.

ΠšΠ»Π΅Ρ‚ΠΊΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды chroot нСсколькими способами.

Π’ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСдС chroot процСссы ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² части Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ систСмныС рСсурсы, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ систСмы, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ процСссы ΠΈ подсистСма сСти Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами Π² chroot ΠΈ процСссами основной систСмы. ΠšΠ»Π΅Ρ‚ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ эту модСль, виртуализируя доступ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π½Π°Π±ΠΎΡ€Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ подсистСмС сСти. Доступны Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ настройки для рСгулирования доступа Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС. ΠšΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Π­Ρ‚Π° Π³Π»Π°Π²Π° ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚:

* Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΈ для ΠΊΠ°ΠΊΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² FreeBSD.
* Π’ΠΈΠΏΡ‹ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ.
* Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы настройки сСти для ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
* Π€Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
* Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
* Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ.
* ΠžΡΠ½ΠΎΠ²Ρ‹ администрирования ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, ΠΊΠ°ΠΊ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ, Ρ‚Π°ΠΊ ΠΈ снаруТи ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
* Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ.
* НСполный список Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² ΠΊΠ»Π΅Ρ‚ΠΎΠΊ FreeBSD.

[[jail-types]]
== Π’ΠΈΠΏΡ‹ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ

НСкоторыС администраторы Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, хотя Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ администратору Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС, Π² зависимости ΠΎΡ‚ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΈΡ… характСристики ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ использованию.

[[thick-jails]]
=== ВолстыС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ (Thick Jails)

Волстая ΠΊΠ»Π΅Ρ‚ΠΊΠ° (thick jail) β€” это традиционная Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ»Π΅Ρ‚ΠΊΠΈ FreeBSD. Π’ толстой ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ полная копия Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы рСплицируСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ окруТСния ΠΊΠ»Π΅Ρ‚ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ копию Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы FreeBSD, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. ΠšΠ»Π΅Ρ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΡƒΡŽ установку FreeBSD, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… хост-систСмы. Вакая изоляция Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ процСссы Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ процСссов Π½Π° хостС ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ….

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° толстых ΠΊΠ»Π΅Ρ‚ΠΎΠΊ:

* Высокая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ изоляции: процСссы Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΎΡ‚ хост-систСмы ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ.
* ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ: толстыС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, настройки ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ хост-систСмы ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ.
* Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ»Π΅Ρ‚ΠΊΠ° содСрТит ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π±Π°Π·ΠΎΠ²ΡƒΡŽ систСму, уязвимости ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ срСду ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ прямого влияния Π½Π° хост-систСму ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.

НСдостатки толстых ΠΊΠ»Π΅Ρ‚ΠΎΠΊ:

* РСсурсныС Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹: ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ каТдая ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π±Π°Π·ΠΎΠ²ΡƒΡŽ систСму, толстыС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ большС рСсурсов ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚ΠΎΠ½ΠΊΠΈΠΌΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.
* ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅: каТдая ΠΊΠ»Π΅Ρ‚ΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ собствСнного обслуТивания ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ для своих Π±Π°Π·ΠΎΠ²Ρ‹Ρ… систСмных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

[[thin-jails]]
=== Π’ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ (Thin Jails)

Вонкая ΠΊΠ»Π΅Ρ‚ΠΊΠ° (thin jail) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ систСму Ρ‡Π΅Ρ€Π΅Π· снимки OpenZFS ΠΈΠ»ΠΈ монтирования NullFS ΠΈΠ· шаблона. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ дублируСтся лишь минимальноС подмноТСство Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ рСсурсов ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с толстой ΠΊΠ»Π΅Ρ‚ΠΊΠΎΠΉ. Однако это Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ мСньшСй изоляциСй ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с толстыми. ИзмСнСния Π² ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒ нСсколько Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅, тонкая ΠΊΠ»Π΅Ρ‚ΠΊΠ° Π² FreeBSD β€” это Ρ‚ΠΈΠΏ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ FreeBSD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ воспроизводит Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π½ΠΎ Π½Π΅ всю Π±Π°Π·ΠΎΠ²ΡƒΡŽ систСму, Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ:

* Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования рСсурсов: Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивны Π² использовании рСсурсов ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с толстыми ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ Π±Π°Π·ΠΎΠ²ΡƒΡŽ систСму, ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСньшС мСста Π½Π° дискС ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π­Ρ‚ΠΎ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ большС ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Π±Π΅Π· Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ потрСблСния рСсурсов.
* БыстроС Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅: созданиС ΠΈ запуск Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ происходит быстрСС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с толстыми ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ быстром Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ мноТСства экзСмпляров.
* Π£Π½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ обслуТиваниС: ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы хоста, обновлСния ΠΈ обслуТиваниС ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π½Π° хостС. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс обслуТивания ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ толстой ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
* ΠžΠ±Ρ‰ΠΈΠ΅ рСсурсы: Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ рСсурсы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, с хост-систСмой. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π±ΠΎΠ»Π΅Π΅ эффСктивному использованию ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ диска ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.

НСдостатки Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ:

* УмСньшСнная изоляция: основной нСдостаток Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с толстыми ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы шаблона, уязвимости ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° нСсколько ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.
* ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ бСзопасности: ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½Π°Ρ изоляция Π² Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ бСзопасности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ компромСтация ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ с большСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π° хост-систСму.
* ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ зависимостСй: Ссли нСскольким Ρ‚ΠΎΠ½ΠΊΠΈΠΌ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒΡΡ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий для обСспСчСния совмСстимости.
* ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ совмСстимости: прилоТСния Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ совмСстимости, Ссли ΠΎΠ½ΠΈ рассчитаны Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅Π΅ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², прСдоставляСмых шаблоном.

[[service-jails]]
=== БСрвисныС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ (Service Jails)

БСрвисная ΠΊΠ»Π΅Ρ‚ΠΊΠ° (service jail) Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ раздСляСт всё Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы с хостом (ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ β€” [.filename]#/#) ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° хостС, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹Π΅ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΈ хост. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρƒ Π½Π΅Ρ‘ Π½Π΅Ρ‚ доступа ΠΊ сСти ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ рСсурсам, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…, Π½ΠΎ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования сСти хоста ΠΈ снятия Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ. ОсновноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ сСрвисных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ β€” автоматичСскоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ слуТб/Π΄Π΅ΠΌΠΎΠ½ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с минимальной настройкой ΠΈ Π±Π΅Π· нСобходимости знания Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π°ΠΊΠΎΠΉ слуТбой/Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ. БСрвисныС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ появились Π² FreeBSD 15.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° сСрвисных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ:

* НулСвоС администрированиС: для слуТбы, Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΊ использованию Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅, достаточно ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² [.filename]#/etc/rc.conf#, для слуТбы, Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΊ использованию Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅, трСбуСтся Π΄Π²Π΅ строки ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
* Π Π΅ΡΡƒΡ€ΡΠΎΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: сСрвисныС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивны Π² использовании рСсурсов, Ρ‡Π΅ΠΌ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ дискового пространства ΠΈΠ»ΠΈ сСтСвых рСсурсов.
* БыстроС Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅: созданиС ΠΈ запуск сСрвисных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСтся быстрСС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚ΠΎΠ½ΠΊΠΈΠΌΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Ссли трСбуСтся ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСрвисы/Π΄Π΅ΠΌΠΎΠ½Ρ‹ ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ экзСмпляры ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ сСрвиса/Π΄Π΅ΠΌΠΎΠ½Π°.
* ΠžΠ±Ρ‰ΠΈΠ΅ рСсурсы: сСрвисныС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ всС рСсурсы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, с хост-систСмой. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π±ΠΎΠ»Π΅Π΅ эффСктивному использованию ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ диска ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
* Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ процСссов: сСрвисныС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ слуТбу, ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ этой сСрвисной ΠΊΠ»Π΅Ρ‚ΠΊΠ΅, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚ΠΎΠΉ ΠΆΠ΅ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

НСдостатки сСрвисных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ:

* УмСньшСнная изоляция: основной нСдостаток сСрвисных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² отсутствии изоляции Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с толстой ΠΈΠ»ΠΈ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΎΠΉ.
* ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ бСзопасности: ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½Π°Ρ изоляция Π² сСрвисных ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ бСзопасности, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компромСтация ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ способна сильнСС ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° всё Π² хост-систСмС.

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ настройки ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, обсуТдаСмая Π½ΠΈΠΆΠ΅, Π½Π΅ трСбуСтся для сСрвисных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, рСкомСндуСтся Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² этих возмоТностях ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для настройки сСрвисной ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ crossref:jails[service-jails-config, Настройка сСрвисных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ].

[[vnet-jails]]
=== ΠšΠ»Π΅Ρ‚ΠΊΠΈ VNET

ΠšΠ»Π΅Ρ‚ΠΊΠ° FreeBSD VNET β€” это виртуализированная срСда, которая обСспСчиваСт ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ сСтСвых рСсурсов для процСссов, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Ρ‘. Она прСдоставляСт высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сСтСвой сСгмСнтации ΠΈ бСзопасности, создавая ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСтСвой стСк для процСссов Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ сСтСвого Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΎΡ‚ хост-систСмы ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ.

По сути, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ VNET Π² FreeBSD добавляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки сСти. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ VNET ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ толстой, Ρ‚Π°ΠΊ ΠΈ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ.

[[linux-jails]]
=== ΠšΠ»Π΅Ρ‚ΠΊΠΈ Linux

ΠšΠ»Π΅Ρ‚ΠΊΠΈ Linux Π² FreeBSD β€” это функция Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС FreeBSD, которая позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Linux ΠΈ прилоТСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ FreeBSD. Π­Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ достигаСтся Π·Π° счёт совмСстимости, которая позволяСт Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Linux ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Linux с ядром FreeBSD. ЦСль ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Linux β€” ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Linux-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² систСмС FreeBSD Π±Π΅Π· нСобходимости Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС ΠΈΠ»ΠΈ срСдС Linux.

[[host-configuration]]
== ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ хоста

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ Π½Π° хост-систСмС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ настройки ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ хост-систСмы.

ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ man:jail[8], ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ для настройки ΠΈ установки ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ сСти хоста ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ хост Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму OpenZFS ΠΈΠ»ΠΈ UFS.

[TIP]
====
ВСрсия FreeBSD, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²Π΅Π΅ вСрсии, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π½Π° хостС.
====

[[host-configuration-jail-utility]]
=== Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° jail

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° man:jail[8] управляСт ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell]
....
# sysrc jail_enable="YES"
# sysrc jail_parallel_start="YES"
....

[TIP]
====
Π‘ `jail_parallel_start` всС настроСнныС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.
====

[[jails-networking]]
=== Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ взаимодСйствиС

Π‘Π΅Ρ‚ΡŒ для ΠΊΠ»Π΅Ρ‚ΠΎΠΊ FreeBSD ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настроСна нСсколькими Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами:

Π Π΅ΠΆΠΈΠΌ сСтСвого взаимодСйствия хоста (Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ IP)::
Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ сСтСвого взаимодСйствия хоста (host networking) ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ сСтСвой стСк, Ρ‡Ρ‚ΠΎ ΠΈ хост-систСма. ΠŸΡ€ΠΈ создании ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π² этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ сСтСвой интСрфСйс ΠΈ IP-адрСс. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ IP-адрСса, ΠΈ Π΅Π³ΠΎ сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ассоциируСтся с IP-адрСсом хоста.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти (VNET)::
Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти (VNET) β€” это функция ΠΊΠ»Π΅Ρ‚ΠΎΠΊ FreeBSD, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠ΅ сСтСвыС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ρ€Π΅ΠΆΠΈΠΌ сСтСвого взаимодСйствия хоста (host networking). VNET позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСтСвыС стСки для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, прСдоставляя ΠΈΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ IP-адрСса, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ сСтСвыС интСрфСйсы. Π­Ρ‚ΠΎ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сСтСвой изоляции ΠΈ позволяСт ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ….

БистСма netgraph::
man:netgraph[4] β€” это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ инфраструктура ядра для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… сСтСвых ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ. Она ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ пСрСдаётся ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»Π΅Ρ‚ΠΊΠΎΠΉ ΠΈ хост-систСмой, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

[[host-configuration-directories]]
=== Настройка Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Для Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Π½Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ мСста.

НСкоторыС администраторы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ [.filename]#/jail#, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” [.filename]#/usr/jail#, Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈ β€” [.filename]#/usr/local/jails#. Π’ этой Π³Π»Π°Π²Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ [.filename]#/usr/local/jails#.

Помимо ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° [.filename]#/usr/local/jails# Π±ΡƒΠ΄ΡƒΡ‚ созданы Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ:

* [.filename]#media# Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ сТатыС Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ.
* [.filename]#templates# Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΏΡ€ΠΈ использовании Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ.
* [.filename]#containers# Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.

ΠŸΡ€ΠΈ использовании OpenZFS Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для этих ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²:

[source, shell]
....
# zfs create -o mountpoint=/usr/local/jails zroot/jails
# zfs create zroot/jails/media
# zfs create zroot/jails/templates
# zfs create zroot/jails/containers
....

[TIP]
====
Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС для Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… использовался `zroot`, Π½ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
====

ΠŸΡ€ΠΈ использовании UFS Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²:

[source, shell]
....
# mkdir /usr/local/jails/
# mkdir /usr/local/jails/media
# mkdir /usr/local/jails/templates
# mkdir /usr/local/jails/containers
....

[[jail-configuration-files]]
=== Π€Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

БущСствуСт Π΄Π²Π° способа настройки ΠΊΠ»Π΅Ρ‚ΠΎΠΊ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ запись для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π² Ρ„Π°ΠΉΠ» [.filename]#/etc/jail.conf#. Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ [.filename]#/etc/jail.conf.d/#.

Π’ случаС, Ссли Π½Π° хост-систСмС ΠΌΠ°Π»ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, записи для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» [.filename]#/etc/jail.conf#. Если Π½Π° хост-систСмС ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, рСкомСндуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ [.filename]#/etc/jail.conf.d/#.

Π€Π°ΠΉΠ»Ρ‹ Π² [.filename]#/etc/jail.conf.d/# Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ `.conf`, ΠΈ ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² [.filename]#/etc/jail.conf#:

[.programlisting]
....
.include "/etc/jail.conf.d/*.conf";
....

Випичная запись с настройками ΠΊΠ»Π΅Ρ‚ΠΊΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[.programlisting]
....
jailname { <.>
  # STARTUP/LOGGING
  exec.start = "/bin/sh /etc/rc"; <.>
  exec.stop = "/bin/sh /etc/rc.shutdown"; <.>
  exec.consolelog = "/var/log/jail_console_${name}.log"; <.>

  # PERMISSIONS
  allow.raw_sockets; <.>
  exec.clean; <.>
  mount.devfs; <.>

  # HOSTNAME/PATH
  host.hostname = "${name}"; <.>
  path = "/usr/local/jails/containers/${name}"; <.>

  # NETWORK
  ip4.addr = 192.168.1.151; <.>
  ip6.addr = ::ffff:c0a8:197 <.>
  interface = em0; <.>
}
....

<.> `jailname` β€” имя ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
<.> `exec.start` β€” ΠΊΠΎΠΌΠ°Π½Π΄Π°(Ρ‹), выполняСмыС Π² срСдС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΡ€ΠΈ Π΅Ρ‘ создании. Випичная ΠΊΠΎΠΌΠ°Π½Π΄Π° для выполнСния β€” "/bin/sh /etc/rc".
<.> `exec.stop` β€” ΠΊΠΎΠΌΠ°Π½Π΄Π°(Ρ‹), выполняСмыС Π² срСдС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Ρ‘ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ. Випичная ΠΊΠΎΠΌΠ°Π½Π΄Π° для выполнСния β€” "/bin/sh /etc/rc.shutdown".
<.> `exec.consolelog` β€” Ρ„Π°ΠΉΠ» для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (stdout ΠΈ stderr).
<.> `allow.raw_sockets` β€” Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ созданиС raw-сокСтов Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ. Установка этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠ°ΠΊ man:ping[8] ΠΈ man:traceroute[8], Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
<.> `exec.clean` β€” Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π² чистом ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ.
<.> `mount.devfs` β€” ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму man:devfs[5] Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ [.filename]#/dev# Π²Π½ΡƒΡ‚Ρ€ΠΈ chroot ΠΈ примСняСт Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° devfs_ruleset, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ устройств Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
<.> `host.hostname` β€” имя хоста для ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.
<.> `path` β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ для ΠΊΠ»Π΅Ρ‚ΠΊΠΈ. Π›ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, выполняСмыС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `jail`, Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· man:jexec[8], Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.
<.> `ip4.addr` β€” IPv4-адрСс. БущСствуСт Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° настройки IPv4. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ IP-адрСс ΠΈΠ»ΠΈ список IP-адрСсов, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `ip4` со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ `inherit`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ IP-адрСс хоста.
<.> `ip6.addr` β€” IPv6-адрСс. БущСствуСт Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° настройки для IPv6. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ IP ΠΈΠ»ΠΈ список IP, ΠΊΠ°ΠΊ это сдСлано Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `ip6` ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `inherit` для наслСдования IP-адрСса хоста.
<.> `interface` β€” Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ интСрфСйс для добавлСния IP-адрСсов ΠΊΠ»Π΅Ρ‚ΠΊΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это интСрфСйс хоста.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² man:jail[8] ΠΈ man:jail.conf[5].

[[classic-jail]]
== ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΊΠ»Π΅Ρ‚ΠΊΠ° (Волстая ΠΊΠ»Π΅Ρ‚ΠΊΠ°)

Π­Ρ‚ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ систСму FreeBSD. Ими ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ хост-систСмой, ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ нСзависимо.

[[creating-classic-jail]]
=== Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ классичСской ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, для ΠΊΠ»Π΅Ρ‚ΠΊΠΈ трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя хоста, ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, IP-адрСс ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ пространство.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвСров Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ FreeBSD.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅:

[source, shell, subs=attributes]
....
# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz
....

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ содСрТимоС Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ:

[source, shell, subs=attributes]
....
# mkdir -p /usr/local/jails/containers/classic
# tar -xf /usr/local/jails/media/{rel-latest}-RELEASE-base.txz -C /usr/local/jails/containers/classic --unlink
....

Π‘ ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ срСдой Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ потрСбуСтся ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ часового пояса ΠΈ DNS-сСрвСра:

[source, shell]
....
# cp /etc/resolv.conf /usr/local/jails/containers/classic/etc/resolv.conf
# cp /etc/localtime /usr/local/jails/containers/classic/etc/localtime
....

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π² Ρ„Π°ΠΉΠ»Ρ‹, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ послСднСго уровня исправлСний с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell]
....
# freebsd-update -b /usr/local/jails/containers/classic/ fetch install
....

ПослСдним шагом являСтся настройка ΠΊΠ»Π΅Ρ‚ΠΊΠΈ. НСобходимо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ запись Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» [.filename]#/etc/jail.conf# ΠΈΠ»ΠΈ Π² [.filename]#jail.conf.d# с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[.programlisting]
....
classic {
  # STARTUP/LOGGING
  exec.start = "/bin/sh /etc/rc";
  exec.stop = "/bin/sh /etc/rc.shutdown";
  exec.consolelog = "/var/log/jail_console_${name}.log";

  # PERMISSIONS
  allow.raw_sockets;
  exec.clean;
  mount.devfs;

  # HOSTNAME/PATH
  host.hostname = "${name}";
  path = "/usr/local/jails/containers/${name}";

  # NETWORK
  ip4.addr = 192.168.1.151;
  interface = em0;
}
....

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для запуска ΠΊΠ»Π΅Ρ‚ΠΊΠΈ:

[source, shell]
....
# service jail start classic
....

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎΠ± ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ crossref:jails[jail-management,Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ].

[[thin-jail]]
== Π’ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ (Thin Jails)

Π₯отя Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ толстыС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΡ… создания отличаСтся. Π’ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ с использованиСм снимков OpenZFS ΠΈΠ»ΠΈ шаблонов ΠΈ NullFS. ИспользованиС снимков OpenZFS ΠΈ шаблонов с NullFS ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ классичСскими ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстрого создания ΠΈΠ· снимков ΠΈΠ»ΠΈ обновлСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NullFS.

[[creating-thin-jail-openzfs-snapshots]]
=== Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с использованиСм снимков OpenZFS

Благодаря Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ FreeBSD ΠΈ OpenZFS созданиС Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ с использованиСм снимков OpenZFS ΠΎΡ‡Π΅Π½ΡŒ просто.

Для создания Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с использованиСм снимков OpenZFS ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом являСтся созданиС Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, слСдуя инструкциям Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ crossref:jails[host-configuration-directories, "Настройка Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΊΠ»Π΅Ρ‚ΠΊΠΈ"].

Π”Π°Π»Π΅Π΅ создайтС шаблон. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для создания Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ "Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния", Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ создавались Π½Π° нСизмСняСмой основС.

Для создания Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… для шаблона Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# zfs create -p zroot/jails/templates/{rel-latest}-RELEASE
....

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ срСды:

[source, shell, subs=attributes]
....
# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz
....

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ содСрТимоС Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ шаблона, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# tar -xf /usr/local/jails/media/{rel-latest}-RELEASE-base.txz -C /usr/local/jails/templates/{rel-latest}-RELEASE --unlink
....

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ срСда записана Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ шаблонов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ часового пояса ΠΈ DNS-сСрвСра Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ шаблона, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# cp /etc/resolv.conf /usr/local/jails/templates/{rel-latest}-RELEASE/etc/resolv.conf
# cp /etc/localtime /usr/local/jails/templates/{rel-latest}-RELEASE/etc/localtime
....

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ послСднСго уровня исправлСний, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# freebsd-update -b /usr/local/jails/templates/{rel-latest}-RELEASE/ fetch install
....

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ обновлСния шаблон Π³ΠΎΡ‚ΠΎΠ².

Для создания снимка OpenZFS ΠΈΠ· шаблона Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# zfs snapshot zroot/jails/templates/{rel-latest}-RELEASE@base
....

ПослС создания снимка OpenZFS ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ бСсконСчноС количСство ΠΊΠ»Π΅Ρ‚ΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ клонирования OpenZFS.

Для создания Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с ΠΈΠΌΠ΅Π½Π΅ΠΌ `thinjail` Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# zfs clone zroot/jails/templates/{rel-latest}-RELEASE@base zroot/jails/containers/thinjail
....

ПослСдним шагом являСтся настройка ΠΊΠ»Π΅Ρ‚ΠΊΠΈ. НСобходимо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ запись Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» [.filename]#/etc/jail.conf# ΠΈΠ»ΠΈ Π² [.filename]#jail.conf.d# с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[.programlisting]
....
thinjail {
  # STARTUP/LOGGING
  exec.start = "/bin/sh /etc/rc";
  exec.stop = "/bin/sh /etc/rc.shutdown";
  exec.consolelog = "/var/log/jail_console_${name}.log";

  # PERMISSIONS
  allow.raw_sockets;
  exec.clean;
  mount.devfs;

  # HOSTNAME/PATH
  host.hostname = "${name}";
  path = "/usr/local/jails/containers/${name}";

  # NETWORK
  ip4 = inherit;
  interface = em0;
}
....

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для запуска ΠΊΠ»Π΅Ρ‚ΠΊΠΈ:

[source, shell]
....
# service jail start thinjail
....

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎΠ± ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ crossref:jails[jail-management,Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ].

[[creating-thin-jail-nullfs]]
=== Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с использованиСм NullFS

ΠšΠ»Π΅Ρ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½Ρ‹ΠΌ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ систСмных Ρ„Π°ΠΉΠ»ΠΎΠ² с использованиСм Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΈ NullFS для Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ совмСстного использования ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈΠ· хост-систСмы Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом являСтся созданиС Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… для сохранСния шаблона, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ OpenZFS:

[source, shell, subs=attributes]
....
# zfs create -p zroot/jails/templates/{rel-latest}-RELEASE-base
....

Или эту, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ UFS:

[source, shell, subs=attributes]
....
# mkdir /usr/local/jails/templates/{rel-latest}-RELEASE-base
....

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ срСды:

[source, shell, subs=attributes]
....
# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz
....

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ содСрТимоС Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ шаблона, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# tar -xf /usr/local/jails/media/{rel-latest}-RELEASE-base.txz -C /usr/local/jails/templates/{rel-latest}-RELEASE-base --unlink
....

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ срСда записана Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ шаблонов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ часового пояса ΠΈ DNS-сСрвСра Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ шаблона, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# cp /etc/resolv.conf /usr/local/jails/templates/{rel-latest}-RELEASE-base/etc/resolv.conf
# cp /etc/localtime /usr/local/jails/templates/{rel-latest}-RELEASE-base/etc/localtime
....

ПослС пСрСмСщСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π² шаблон ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ послСднСго уровня исправлСний с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell, subs=attributes]
....
# freebsd-update -b /usr/local/jails/templates/{rel-latest}-RELEASE-base/ fetch install
....

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ `skeleton`. НСкоторыС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ скопированы ΠΈΠ· шаблона Π² `skeleton`.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… для `skeleton` Π² случаС использования OpenZFS:

[source, shell, subs=attributes]
....
# zfs create -p zroot/jails/templates/{rel-latest}-RELEASE-skeleton
....

Или эту Π² случаС использования UFS:

[source, shell, subs=attributes]
....
# mkdir /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton
....

Π—Π°Ρ‚Π΅ΠΌ создайтС `skeleton`-ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ. `Skeleton`-ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ для ΠΊΠ»Π΅Ρ‚ΠΎΠΊ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²:

[source, shell, subs=attributes]
....
# mkdir -p /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton/home
# mkdir -p /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton/usr
# mv /usr/local/jails/templates/{rel-latest}-RELEASE-base/etc /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton/etc
# mv /usr/local/jails/templates/{rel-latest}-RELEASE-base/usr/local /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton/usr/local
# mv /usr/local/jails/templates/{rel-latest}-RELEASE-base/tmp /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton/tmp
# mv /usr/local/jails/templates/{rel-latest}-RELEASE-base/var /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton/var
# mv /usr/local/jails/templates/{rel-latest}-RELEASE-base/root /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton/root
....

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ссылки Π½Π° `skeleton`, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell, subs=attributes]
....
# cd /usr/local/jails/templates/{rel-latest}-RELEASE-base/
# mkdir skeleton
# ln -s skeleton/etc etc
# ln -s skeleton/home home
# ln -s skeleton/root root
# ln -s ../skeleton/usr/local usr/local
# ln -s skeleton/tmp tmp
# ln -s skeleton/var var
....

Когда `skeleton` Π³ΠΎΡ‚ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠ»Π΅Ρ‚ΠΊΡƒ.

Π’ случаС использования OpenZFS, снимки OpenZFS ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для простого создания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ количСства ΠΊΠ»Π΅Ρ‚ΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

[source, shell, subs=attributes]
....
# zfs snapshot zroot/jails/templates/{rel-latest}-RELEASE-skeleton@base
# zfs clone zroot/jails/templates/{rel-latest}-RELEASE-skeleton@base zroot/jails/containers/thinjail
....

Π’ случаС использования UFS ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ man:cp[1], Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell, subs=attributes]
....
# cp -R /usr/local/jails/templates/{rel-latest}-RELEASE-skeleton /usr/local/jails/containers/thinjail
....

Π—Π°Ρ‚Π΅ΠΌ создайтС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ смонтированы Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ шаблон ΠΈ skeleton:

[source, shell]
....
# mkdir -p /usr/local/jails/thinjail-nullfs-base
....

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ запись ΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ Π² [.filename]#/etc/jail.conf# ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» Π² [.filename]#jail.conf.d# ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[.programlisting]
....
thinjail {
  # STARTUP/LOGGING
  exec.start = "/bin/sh /etc/rc";
  exec.stop = "/bin/sh /etc/rc.shutdown";
  exec.consolelog = "/var/log/jail_console_${name}.log";

  # PERMISSIONS
  allow.raw_sockets;
  exec.clean;
  mount.devfs;

  # HOSTNAME/PATH
  host.hostname = "${name}";
  path = "/usr/local/jails/${name}-nullfs-base";

  # NETWORK
  ip4.addr = 192.168.1.153;
  interface = em0;

  # MOUNT
  mount.fstab = "/usr/local/jails/${name}-nullfs-base.fstab";
}
....

Π—Π°Ρ‚Π΅ΠΌ создайтС Ρ„Π°ΠΉΠ» [.filename]#/usr/local/jails/thinjail-nullfs-base.fstab# ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ содСрТания:

[.programlisting, subs=attributes]
....
/usr/local/jails/templates/{rel-latest}-RELEASE-base  /usr/local/jails/thinjail-nullfs-base/ nullfs   ro          0 0
/usr/local/jails/containers/thinjail     /usr/local/jails/thinjail-nullfs-base/skeleton nullfs  rw  0 0
....

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для запуска ΠΊΠ»Π΅Ρ‚ΠΊΠΈ:

[source, shell]
....
# service jail start thinjail
....

[[creating-vnet-jail]]
=== Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ VNET

Π’ ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ… FreeBSD VNET ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСтСвой стСк, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ интСрфСйсы, IP-адрСса, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° мСТсСтСвого экрана.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом для создания VNET-ΠΊΠ»Π΅Ρ‚ΠΊΠΈ являСтся созданиС man:bridge[4] с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell]
....
# ifconfig bridge create
....

Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

[.programlisting]
....
bridge0
....

Π‘ΠΎΠ·Π΄Π°Π² `bridge`, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ интСрфСйсу `em0` ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell]
....
# ifconfig bridge0 addm em0 up
# ifconfig em0 up
....

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки Π² [.filename]#/etc/rc.conf#:

[.programlisting]
....
defaultrouter="192.168.1.1"
cloned_interfaces="bridge0"
ifconfig_bridge0="inet 192.168.1.150/24 addm em0 up"
ifconfig_em0="up"
....

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ мостах см. crossref:advanced-networking[network-bridging, Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ мосты].

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅.

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ crossref:jails[classic-jail, ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΎΠΉ ΠšΠ»Π΅Ρ‚ΠΊΠΈ (Волстой ΠΊΠ»Π΅Ρ‚ΠΊΠΈ)], Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ crossref:jails[thin-jail, Π’ΠΎΠ½ΠΊΠΈΡ… ΠšΠ»Π΅Ρ‚ΠΎΠΊ]. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ измСнится β€” это конфигурация Π² Ρ„Π°ΠΉΠ»Π΅ [.filename]#/etc/jail.conf#.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° для созданной ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡƒΡ‚ΡŒ [.filename]#/usr/local/jails/containers/vnet#.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для VNET-ΠΊΠ»Π΅Ρ‚ΠΊΠΈ:

[.programlisting]
....
vnet {
  # STARTUP/LOGGING
  exec.consolelog = "/var/log/jail_console_${name}.log";

  # PERMISSIONS
  allow.raw_sockets;
  exec.clean;
  mount.devfs;
  devfs_ruleset = 5;

  # PATH/HOSTNAME
  path = "/usr/local/jails/containers/${name}";
  host.hostname = "${name}";

  # VNET/VIMAGE
  vnet;
  vnet.interface = "${epair}b";

  # NETWORKS/INTERFACES
  $id = "154"; <.>
  $ip = "192.168.1.${id}/24";
  $gateway = "192.168.1.1";
  $bridge = "bridge0"; <.>
  $epair = "epair${id}";

  # ADD TO bridge INTERFACE
  exec.prestart  = "/sbin/ifconfig ${epair} create up";
  exec.prestart += "/sbin/ifconfig ${epair}a up descr jail:${name}";
  exec.prestart += "/sbin/ifconfig ${bridge} addm ${epair}a up";
  exec.start    += "/sbin/ifconfig ${epair}b ${ip} up";
  exec.start    += "/sbin/route add default ${gateway}";
  exec.start	+= "/bin/sh /etc/rc";
  exec.stop	= "/bin/sh /etc/rc.shutdown";
  exec.poststop = "/sbin/ifconfig ${bridge} deletem ${epair}a";
  exec.poststop += "/sbin/ifconfig ${epair}a destroy";
}
....

<.> ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ IP-адрСс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ *ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ*.
<.> ΠžΡ‚Π½ΠΎΡΠΈΡ‚ΡΡ ΠΊ Ρ€Π°Π½Π΅Π΅ созданному мосту.

[[creating-linux-jail]]
=== Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Linux

FreeBSD ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Linux Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ crossref:linuxemu[linuxemu, Π”Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Linux] ΠΈ man:debootstrap[8]. ΠšΠ»Π΅Ρ‚ΠΊΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ собствСнного ядра. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ядрС хоста. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π”Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Linux Π² хост-систСмС.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ABI Linux ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell]
....
# sysrc linux_enable="YES"
....

ПослС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell]
....
# service linux start
....

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ созданиС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ crossref:jails[creating-thin-jail-openzfs-snapshots, Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с использованиСм снимков OpenZFS], Π½ΠΎ *Π±Π΅Π·* выполнСния настройки. ΠšΠ»Π΅Ρ‚ΠΊΠΈ FreeBSD Linux Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ особой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описана Π½ΠΈΠΆΠ΅.

ПослС создания ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для выполнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ запуска ΠΊΠ»Π΅Ρ‚ΠΊΠΈ:

[source, shell]
....
# jail -cm \
    name=ubuntu \
    host.hostname="ubuntu.example.com" \
    path="/usr/local/jails/ubuntu" \
    interface="em0" \
    ip4.addr="192.168.1.150" \
    exec.start="/bin/sh /etc/rc" \
    exec.stop="/bin/sh /etc/rc.shutdown" \
    mount.devfs \
    devfs_ruleset=4 \
    allow.mount \
    allow.mount.devfs \
    allow.mount.fdescfs \
    allow.mount.procfs \
    allow.mount.linprocfs \
    allow.mount.linsysfs \
    allow.mount.tmpfs \
    enforce_statfs=1
....

Для доступа ΠΊ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ package:sysutils/debootstrap[].

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для доступа ΠΊ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ FreeBSD Linux:

[source, shell]
....
# jexec -u root ubuntu
....

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для установки ΠΏΠ°ΠΊΠ΅Ρ‚Π° package:sysutils/debootstrap[] ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ окруТСния Ubuntu:

[source, shell]
....
# pkg install debootstrap
# debootstrap jammy /compat/ubuntu
....

Когда процСсс Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΈ Π½Π° консоли появится сообщСниС `Base system installed successfully`, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ· хост-систСмы ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell]
....
# service jail onestop ubuntu
....

Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ запись Π² [.filename]#/etc/jail.conf# для Linux-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

[.programlisting]
....
ubuntu {
  # STARTUP/LOGGING
  exec.start = "/bin/sh /etc/rc";
  exec.stop = "/bin/sh /etc/rc.shutdown";
  exec.consolelog = "/var/log/jail_console_${name}.log";

  # PERMISSIONS
  allow.raw_sockets;
  exec.clean;
  mount.devfs;
  devfs_ruleset = 4;

  # HOSTNAME/PATH
  host.hostname = "${name}";
  path = "/usr/local/jails/containers/${name}";

  # NETWORK
  ip4.addr = 192.168.1.155;
  interface = em0;

  # MOUNT
  mount += "devfs     $path/compat/ubuntu/dev     devfs     rw  0 0";
  mount += "tmpfs     $path/compat/ubuntu/dev/shm tmpfs     rw,size=1g,mode=1777  0 0";
  mount += "fdescfs   $path/compat/ubuntu/dev/fd  fdescfs   rw,linrdlnk 0 0";
  mount += "linprocfs $path/compat/ubuntu/proc    linprocfs rw  0 0";
  mount += "linsysfs  $path/compat/ubuntu/sys     linsysfs  rw  0 0";
  mount += "/tmp      $path/compat/ubuntu/tmp     nullfs    rw  0 0";
  mount += "/home     $path/compat/ubuntu/home    nullfs    rw  0 0";
}
....

Π—Π°Ρ‚Π΅ΠΌ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell]
....
# service jail start ubuntu
....

ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Ubuntu ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell]
....
# jexec ubuntu chroot /compat/ubuntu /bin/bash
....

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π³Π»Π°Π²Π΅ crossref:linuxemu[linuxemu, Двоичная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Linux].

[[service-jails-config]]
=== Настройка сСрвисных ΠΊΠ»Π΅Ρ‚ΠΎΠΊ

БСрвисная ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настраиваСтся Ρ‡Π΅Ρ€Π΅Π· [.filename]#/etc/rc.conf# ΠΈΠ»ΠΈ man:sysrc[8]. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ систСмныС сСрвисы Π³ΠΎΡ‚ΠΎΠ²Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² сСрвисных ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…. Они содСрТат строку ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΠ΅Ρ‚ΡŒ ΠΈΠ»ΠΈ снимаСт Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ограничСния ΠΊΠ»Π΅Ρ‚ΠΎΠΊ. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ систСмныС сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, настроСны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ сСрвисныС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² [.filename]#/etc/rc.conf#. НСкоторыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΡ… сСрвисов β€” это сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ start ΠΈΠ»ΠΈ stop, ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚, мСТсСтСвой экран ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅.

Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ слуТбы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию Π² сСрвисных ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π³ΠΎΡ‚ΠΎΠ²Π° Π»ΠΈ слуТба ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² сСрвисной ΠΊΠ»Π΅Ρ‚ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell]
....
# grep _svcj_options /path/to/rc.d/servicename
....

Если Π²Ρ‹Π²ΠΎΠ΄ отсутствуСт, слуТба Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ ΠΈΠ»ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, доступ ΠΊ сСти.

Если слуТба Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ доступа ΠΊ сСти, Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² [.filename]#/etc/rc.conf#:

[source, shell]
....
# sysrc servicename_svcj_options=net_basic
....

Для всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… `_svcj_options` см. ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ страницу man:rc.conf[5].

Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сСрвисной ΠΊΠ»Π΅Ρ‚ΠΊΠΈ для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ слуТбы Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ слуТбу ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ `servicename_svcj` Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ YES. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ man:syslogd[8] Π² ΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄:

[source, shell]
....
# service syslogd stop
# sysrc syslogd_svcj=YES
# service syslogd start
....

Если пСрСмСнная `servicename_svcj` измСняСтся, слуТбу Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ внСсСниСм ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Если ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ остановлСна, rc-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ состояниС слуТбы ΠΈ Π½Π΅ смоТСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ дСйствиС.

БСрвисныС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· man:rc.conf[5]/man:sysrc[8] ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ man:service[8]. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ man:jls[8], описанныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ crossref:jails[jail-management,Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ], ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° man:jail[8] Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для управлСния ΠΈΠΌΠΈ.

[[jail-management]]
== Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ

ПослС создания ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ряд ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ запуск, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, установка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π² Π½Π΅Ρ‘ ΠΈ Ρ‚.Π΄. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ описаны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ с ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ с хоста.

[[list-running-jails]]
=== Бписок Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ

Для Π²Ρ‹Π²ΠΎΠ΄Π° списка ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π² хост-систСмС, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ man:jls[8]:

[source, shell]
....
# jls
....

Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

....
   JID  IP Address      Hostname                      Path
     1  192.168.250.70  classic                       /usr/local/jails/containers/classic
....

man:jls[8] ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ `--libxo`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ man:libxo[3] позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ `JSON`, `HTML` ΠΈ Ρ‚.Π΄.

НапримСр, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для получСния Π²Ρ‹Π²ΠΎΠ΄Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ `JSON`:

[source, shell]
....
# jls --libxo=json
....

Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

....
{"__version": "2", "jail-information": {"jail": [{"jid":1,"ipv4":"192.168.250.70","hostname":"classic","path":"/usr/local/jails/containers/classic"}]}}
....

[[start-jail]]
=== Запуск, пСрСзапуск ΠΈ остановка ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

man:service[8] ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для запуска, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ остановки ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° хостС.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell]
....
# service jail start jailname
....

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ `start` Π½Π° `restart` ΠΈΠ»ΠΈ `stop`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСйствия с ΠΊΠ»Π΅Ρ‚ΠΊΠΎΠΉ.

[[destroy-jail]]
=== Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, это Π½Π΅ просто остановка ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ man:service[8] ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΈ записи Π² [.filename]#/etc/jail.conf#.

FreeBSD ΠΎΡ‡Π΅Π½ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ относится ΠΊ бСзопасности систСмы. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ root. Π­Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ называСтся Π€Π»Π°Π³ΠΈ Π€Π°ΠΉΠ»ΠΎΠ².

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом являСтся остановка Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[source, shell]
....
# service jail stop jailname
....

Π’Ρ‚ΠΎΡ€ΠΎΠΉ шаг β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эти Ρ„Π»Π°Π³ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ man:chflags[1], Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π³Π΄Π΅ `classic` β€” имя удаляСмой ΠΊΠ»Π΅Ρ‚ΠΊΠΈ:

[source, shell]
....
# chflags -R 0 /usr/local/jails/containers/classic
....

Π’Ρ€Π΅Ρ‚ΠΈΠΉ шаг β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠ°:

[source, shell]
....
# rm -rf /usr/local/jails/containers/classic
....

НаконСц, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ запись ΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ Π² [.filename]#/etc/jail.conf# ΠΈΠ»ΠΈ Π² [.filename]#jail.conf.d#.

[[handle-packages-jail]]
=== Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° man:pkg[8] ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ `-j` для управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, установлСнными Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ package:www/nginx-lite[] Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ *с хоста*:

[source, shell]
....
# pkg -j classic install nginx-lite
....

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Π² FreeBSD см. crossref:ports[ports,"Установка ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΠΎΡ€Ρ‚Ρ‹"].

[[access-jail]]
=== Доступ ΠΊ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ являСтся ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΈΠ· хост-систСмы, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΠΊΠ»Π΅Ρ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ man:jexec[8].

Π’ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² man:jexec[8] с хоста:

[source, shell]
....
# jexec -u root jailname
....

ΠŸΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² ΠΊΠ»Π΅Ρ‚ΠΊΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ сообщСниС, настроСнноС Π² man:motd[5].

[[execute-commands-jail]]
=== Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅

Для выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ ΠΈΠ· хост-систСмы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ man:jexec[8].

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ слуТбу, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:

[source, shell]
....
# jexec -l jailname service nginx stop
....

[[jail-upgrading]]
== ОбновлСниС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

ОбновлСниС ΠΊΠ»Π΅Ρ‚ΠΎΠΊ FreeBSD Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСды ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ бСзопасными, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ послСдним функциям ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌ, доступным Π² экосистСмС FreeBSD.

[[jails-updating]]
=== ОбновлСниС классичСской ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с использованиСм снимков OpenZFS

ΠšΠ»Π΅Ρ‚ΠΊΠΈ *Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы хоста*. Π’ FreeBSD ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ использованиС man:chflags[1] Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², поэтому ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ошибкой.

Для обновлСния ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ послСднСго ΠΏΠ°Ρ‚Ρ‡-Ρ€Π΅Π»ΠΈΠ·Π° вСрсии FreeBSD, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° хостС:

[source, shell]
....
# freebsd-update -j classic fetch install
# service jail restart classic
....

Для обновлСния ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ основной ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ вСрсии сначала ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ хост-систСму, ΠΊΠ°ΠΊ описано Π² crossref:cutting-edge[freebsdupdate-upgrade,"Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ основной ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ вСрсий"]. ПослС обновлСния ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ хоста ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ.

[TIP]
====
Π’ случаС обновлСния с ΠΎΠ΄Π½ΠΎΠΉ вСрсии Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΎΡ‰Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ, Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅.
====

НапримСр, для обновлСния с 13.1-RELEASE Π΄ΠΎ 13.2-RELEASE Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° хостС:

[source, shell]
....
# freebsd-update -j classic -r 13.2-RELEASE upgrade
# freebsd-update -j classic install
# service jail restart classic
# freebsd-update -j classic install
# service jail restart classic
....

[NOTE]
====
НСобходимо Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ шаг `install` Π΄Π²Π°ΠΆΠ΄Ρ‹. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· обновляСтся ядро, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.
====

Π—Π°Ρ‚Π΅ΠΌ, Ссли это Π±Ρ‹Π»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ основной вСрсии, пСрСустановитС всС установлСнныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ пСрСзапуститС ΠΊΠ»Π΅Ρ‚ΠΊΡƒ снова. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ вСрсия ABI измСняСтся ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ основными вСрсиями FreeBSD.

Π‘ хоста:

[source, shell]
....
# pkg -j jailname upgrade -f
# service jail restart jailname
....

[[upgrading-thin-jail]]
=== ОбновлСниС Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с использованиСм NullFS

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ NullFS, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСмных ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. Достаточно ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ шаблон. Π­Ρ‚ΠΎ позволяСт ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ нСсколько ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Для обновлСния шаблона Π΄ΠΎ послСднСго ΠΏΠ°Ρ‚Ρ‡-Ρ€Π΅Π»ΠΈΠ·Π° вСрсии FreeBSD, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° хостС:

[source, shell]
....
# freebsd-update -b /usr/local/jails/templates/13.1-RELEASE-base/ fetch install
# service jail restart
....

Для обновлСния шаблона Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ основной ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ вСрсии сначала ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ хост-систСму, ΠΊΠ°ΠΊ описано Π² crossref:cutting-edge[freebsdupdate-upgrade,"Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ основной ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ вСрсий"]. ПослС обновлСния ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ хост-систСмы ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ шаблон.

НапримСр, для обновлСния с 13.1-RELEASE Π΄ΠΎ 13.2-RELEASE Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° хостС:

[source, shell]
....
# freebsd-update -b /usr/local/jails/templates/13.1-RELEASE-base/ -r 13.2-RELEASE upgrade
# freebsd-update -b /usr/local/jails/templates/13.1-RELEASE-base/ install
# service jail restart
# freebsd-update -b /usr/local/jails/templates/13.1-RELEASE-base/ install
# service jail restart
....

[[jail-resource-limits]]
== ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ рСсурсов ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами хост-систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ»Π΅Ρ‚ΠΊΠ° β€” это Π·Π°Π΄Π°Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ систСмный администратор.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ man:rctl[8] для управлСния рСсурсами хост-систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

[TIP]
====
Настройка `kern.racct.enable` Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Ρ„Π°ΠΉΠ»Π΅ [.filename]#/boot/loader.conf#.
====

Бинтаксис для ограничСния рСсурсов ΠΊΠ»Π΅Ρ‚ΠΊΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[.programlisting]
....
rctl -a jail:<jailname>:resource:action=amount/percentage
....

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΡ‘ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, доступной для ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[source, shell]
....
# rctl -a jail:classic:memoryuse:deny=2G
....

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΎΡΡŒ послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ хост-систСмы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π² Ρ„Π°ΠΉΠ» [.filename]#/etc/rctl.conf# ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[.programlisting]
....
jail:classic:memoryuse:deny=2G/jail
....

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎΠ± ограничСниях рСсурсов доступна Π² Π³Π»Π°Π²Π΅ ΠΎ бСзопасности Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ crossref:security[security-resourcelimits,"ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ рСсурсов"].

[[jail-managers-and-containers]]
== ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹

Как ΡƒΠΆΠ΅ объяснялось Ρ€Π°Π½Π΅Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ FreeBSD ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создан ΠΈ настроСн Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½ΠΎ Π² FreeBSD Ρ‚Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ сторонниС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для упрощСния настройки ΠΈ администрирования.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² ΠΊΠ»Π΅Ρ‚ΠΎΠΊ FreeBSD:

.ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ
[options="header", cols="1,1,1,1"]
|===
| Имя | ЛицСнзия | ΠŸΠ°ΠΊΠ΅Ρ‚ | Documentation

| BastilleBSD
| BSD-3
| package:sysutils/bastille[]
| link:https://bastille.readthedocs.io/ru/latest/[ДокумСнтация]

| pot
| BSD-3
| package:sysutils/pot[]
| link:https://pot.pizzamig.dev/[ДокумСнтация]

| cbsd
| BSD-2
| package:sysutils/cbsd[]
| link:https://github.com/cbsd/cbsd[ДокумСнтация]

| AppJail
| BSD-3
| package:sysutils/appjail[], для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ package:sysutils/appjail-devel[]
| link:https://github.com/DtxdF/AppJail#getting-started[ДокумСнтация]

| iocage
| BSD-2
| package:sysutils/iocage[]
| link:https://freebsd.github.io/iocage/[ДокумСнтация]

| ezjail
| link:https://erdgeist.org/beerware.html[Пивная ЛицСнзия]
| package:sysutils/ezjail[]
| link:https://erdgeist.org/arts/software/ezjail/[ДокумСнтация]

|===