Я собираюсь нарезать автомонтер FreeBSD на маленькие кусочки и варить их в масле


40

Я пытаюсь раскрыть иерархию домашних каталогов для нескольких тюрем FreeBSD. Домашние каталоги настроены так, что каждый является уникальным набором данных ZFS. Тюрьмы используются для разработки и, следовательно, создаются и уничтожаются на регулярной основе.

Моей первой мыслью было просто использовать nullfs для монтирования /homeвнутри тюрьмы, но nullfs не предоставляет никакого способа доступа к подчиненным файловым системам.

Моей второй мыслью было экспортировать каталоги через NFS, а затем запустить демон автомонтирования (amd) внутри каждой тюрьмы. Это было бы просто сработало ... если бы было возможно выполнить монтирование NFS внутри тюрьмы. Но это не так.

Моя третья мысль состояла в том, чтобы запустить amd на хосте и обеспечить монтирование nullfs в тюрьмы ... но поддержки amd для nullfs не существует.

Моей четвертой мыслью было вернуться к экспорту каталогов с использованием NFS, потому что, конечно, amd работает с NFS, верно? К сожалению, вместо того, чтобы монтировать каталог в целевой точке монтирования, amd любит монтировать вещи во временную папку ( /.amd_mnt/...) и затем создавать символическую ссылку ... что, конечно, бесполезно в среде тюрьмы.

Так, может быть, вы могли бы использовать nullfs, чтобы открыть подкаталог /.amd_mntдля тюрьмы? Нет! Это возвращает нас к моей первой попытке, в которой мы находим, что нет никакого способа получить доступ к подчиненным файловым системам, используя nullfs .

И тогда моя голова взорвалась.

Есть ли хорошее решение для того, что я пытаюсь сделать? Плохое решение было бы запустить скрипт после загрузки острог , который будет создавать несколько nullfs монтирования для каждого домашнего каталога, но это довольно неуклюжее - это нужно будет периодически запускать принимать во внимание новые каталоги или удаленные каталоги. Так что в принципе мне пришлось бы написать плохой автомонтир.

Должен быть лучший способ. Помоги мне, Serverfault, ты моя единственная надежда!

ОБНОВЛЕНИЕ 1 : Мне пришло в голову, что я мог бы решить часть проблемы pam_mount, хотя это в лучшем случае будет неполным. Кроме того, из документации не ясно, pam_mountможет ли автоматически создать целевую точку монтирования. Если для этого требуется, чтобы точка монтирования существовала априори, это решение не было бы лучше, чем плохой автомонтировщик, который я уже предлагал.

ОБНОВЛЕНИЕ 2 : Как обсуждалось в ответах ниже, настройка VFCF_JAILфайловой системы NFS позволяет джейлам выполнять монтирование NFS. К сожалению, автомонтер продолжает вести себя бесполезно, и при запуске в тюрьме он очень хорошо справляется с блокировкой таким образом, что для удаления записи процесса необходима перезагрузка системы.


1
И если вы готовы перенести эти функции на FreeBSD, это было бы здорово. Серьезно, поведение стандартного автомонтера Linux также было бы для этого идеальным, поскольку он фактически монтирует файловые системы на целевой точке монтирования, а не с помощью символических ссылок.
Жаворонки

4
Я обвиняю в серьезной нехватке времени. И, возможно, просто немного нехватки мотивации ...>.>
Игнасио Васкес-Абрамс

15
+1 Исключительно за потрясающий титул. :)
Шона

4
Меня беспокоит, насколько конкретен ваш конкретный метод казни
Марк Хендерсон

2
О, Уилшир, тебе не весело.
Жаворонки

Ответы:


26

Привет, Ларс! Это интересный вопрос, который вы задали, и после некоторых исследований я, возможно, нашел для вас ответ.

Согласно этой и другим публикациям, возможно, можно установить VFCF_JAIL атрибут поставщика файловой системы NFS, который теоретически позволил бы тюрьмам выполнять монтирование NFS. Это может, в свою очередь, позволить запустить amd внутри тюрьмы ... что бы аккуратно решить эту проблему.

Я попытаюсь пересобрать ядро ​​этим вечером, чтобы посмотреть, как все получится. Это не обязательно самое лучшее решение (поскольку это означает, что вам нужно убедиться, что это изменение сохранится в будущих обновлениях ядра), но было бы интересно, если бы оно работало.

И помни...

           ___________    ____                                           
    ______/   \__//   \__/____\                             
  _/   \_/  :           //____\\                             
 /|      :  :  ..      /        \                         
| |     ::     ::      \        /                             
| |     :|     ||     \ \______/     Don't try to rebuild the
| |     ||     ||      |\  /  |        kernel remotely because
 \|     ||     ||      |   / | \         you know you're just
  |     ||     ||      |  / /_\ \        going to hose the server.
  | ___ || ___ ||      | /  /    \    
   \_-_/  \_-_/ | ____ |/__/      \   
                _\_--_/    \      /   
               /____             /  
              /     \           /    
              \______\_________/     

6
Спасибо, Ларс; Хотелось бы, чтобы я принял ваш совет, потому что теперь я не могу получить доступ к серверу, и мне придется подождать, пока я не вернусь домой, чтобы попробовать это.
Жаворонки

10
+1 за LOL. Также сочтите это правом прохода - выезжая на свой сервер посреди ночи для загрузки KERNEL.OLD (или KERNEL.GENERIC - вы держите в своих системах актуальную версию GENERIC, верно? Если нет, то вы должен начать.) преподает много уроков ...
voretaq7

Я также держу в руках сетевую загрузочную копию mfsbsd , что избавило меня от ряда проблем, связанных с загрузчиком.
Жаворонки

1
Установка VFCF_JAILзаставила работать NFS-монтирования, но автомонтирование продолжает приставать ко мне.
Жаворонки

1
Эх, я пользуюсь автомонтированием для домашних каталогов уже более десяти лет в различных средах, и я был доволен этим. Имейте в виду, это автомонтер Linux (и Solaris), а не amd.
Жаворонки
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.