Я збираюся нарізати автомашину FreeBSD на невеликі шматочки і відварити їх у маслі


40

Я намагаюся розкрити ієрархію домашніх каталогів у ряді в'язниць FreeBSD. Домашні каталоги налаштовані таким чином, що кожен є унікальним набором даних ZFS. В'язниці використовуються для робіт з розробки, а отже, створюються та руйнуються регулярно.

Перша моя думка полягала в тому, щоб просто використовувати nullfs для встановлення /homeвсередині в'язниці, але nullfs не забезпечує жодного способу доступу до підлеглих файлових систем.

Друга моя думка полягала в тому, щоб експортувати каталоги через NFS, а потім запустити демона automounter (amd) всередині кожної в'язниці. Це було б просто працювало ... якби можна було виконати кріплення NFS всередині в'язниці. Але це не так.

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

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

То, можливо, ви могли б використовувати nullfs, щоб викрити підкаталог /.amd_mntв'язниці? Немає! Це повертає нас до моєї першої спроби, в якій ми виявляємо, що немає можливості отримати доступ до підлеглих файлових систем за допомогою nullfs .

І тоді моя голова вибухнула.

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

Має бути кращий спосіб. Допоможи мені, Сервер за замовчуванням, ти єдина моя надія!

ОНОВЛЕННЯ 1 : Мені спало на думку, що я можу вирішити частину проблеми pam_mount, хоча це в кращому випадку буде неповним. Також з документації не зрозуміло, чи pam_mountможна автоматично створити цільову точку кріплення чи ні. Якщо він вимагає, щоб місце монтування існувало апріорі, це рішення не було б кращим за поганий автоматичний механізм, який я вже запропонував.

ОНОВЛЕННЯ 2 : Як зазначено у відповідях нижче, встановлення VFCF_JAILфайлової системи NFS дозволяє тюрем виконувати кріплення NFS. На жаль, автомашина продовжує поводити себе недоброзичливо, і коли бігти у в'язницю, здається, дуже добре вклинитися таким чином, що перезавантаження системи необхідно для видалення запису процесу.


1
І якщо ви готові передати ці функції на FreeBSD, це було б приголомшливо. Серйозно, поведінка стандартного Linux-автомата також буде ідеальною для цього, оскільки вона фактично монтує файлові системи на цільову точку монтажу, а не використовує символьні посилання.
larsks

4
Я звинувачую в сильній нестачі часу. І, можливо, лише трохи бракує мотивації ...>.>
Ігнасіо Васкес-Абрамс

15
+1 Виключно за дивовижну назву. :)
Шауна

4
Це стосується мене, наскільки конкретний ваш конкретний спосіб страти
Марк Хендерсон

2
О, Уілшире, ти не веселий.
larsks

Відповіді:


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
Спасибі, Ларс; Я б хотів, щоб я скористався вашою порадою, тому що зараз я не можу отримати доступ до сервера і мені доведеться чекати, поки я повернусь додому, щоб спробувати це.
larsks

10
+1 для LOL. Також вважайте це правом проходу - Виїжджаючи на ваш сервер посеред ночі для завантаження KERNEL.OLD (або KERNEL.GENERIC - Ви постійно зберігаєте оновлення GENERIC у своїх системах, правда? Якщо ні, ви слід почати.) викладає багато уроків ...
voretaq7

Я також зберігаю підручну мережеву копію файлу mfsbsd , що врятувало мене від ряду проблем, пов’язаних із завантажувачем.
larsks

1
Налаштування VFCF_JAILзмусили кріплення NFS працювати, але автомашина продовжує мене переробляти.
larsks

1
Ех, я вже більше десятиліття використовую автоматику для домашніх каталогів у різних середовищах, і я цим задоволений. Майте на увазі, це Linuxounter і Solaris), а не amd.
larsks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.