Создание экземпляров BSD-тюрем из C

#c #freebsd #jail

#c #freebsd #тюрьма

Вопрос:

Я пытался создать BSD-тюрьмы из приложения. На основе справочных страниц FreeBSD для jail (2) я придумал:

 struct jail _jail;
_jail->version = <jail version>;
_jail->path = "/some/path/";
_jail->hostname = "some-host";
_jail->jailname = "jailname";
_jail->ip4s = <ip value>;
_jail->ip6s = <ip value>;
_jail->ip4 = <ip4 struct>;
_jail->ip6 = <ip6 struct>;
int jid = jail(amp;jail);
  

Исходя из этого, мне было интересно, как будут выглядеть примерные значения для полей ip4 и ip6? Кроме того, какие инструменты я могу использовать для проверки тюрем, чтобы убедиться, что я создал их правильно? (Я традиционно пользователь Linux, так что для меня это неизведанная территория).

Чтобы прояснить вопрос с полями, я понимаю, что такое тип in_addr в Linux, могу ли я предположить, что он такой же для FreeBSD?

Комментарии:

1. на самом деле ip4 и ip6 — это количество передаваемых вами структур ip4 и ip6.. На самом деле это очень хорошо описано на справочной странице jail(2).

2. @AhmedMasud Это не то, о чем я спрашиваю, как я уже сказал в своей правке, я спрашиваю, могу ли я предположить, что in_addr такой же, как в Linux?

3. Что вы имеете в виду, говоря «проверить тюрьму, чтобы убедиться, что я правильно создал их экземпляры?»?

4. Я имею в виду инструмент, который позволяет мне видеть процессы, пользователя и fs в тюрьме.

5. @ChristianGrabowski jexec ps и jexec ls / ?

Ответ №1:

Для запуска произвольной команды в тюрьме используйте jexec:

 jexec jail ls
jexec jail ps
  

Вы также можете запустить оболочку внутри тюрьмы:

 jexec jail csh
  

Или даже

 jexec jail env -i TERM=$TERM /usr/bin/login -fp root