Есть ли способ изолировать запущенную программу от остальной части системы Linux?

Прежде всего, я знаю о виртуализации и контейнерах. Я уверен, что «он хочет контейнеров» – это то, что появилось у вас в голове. (Не отрицайте!)

Однако контейнеры похожи на chroot: если вы хотите выполнить bash, вам нужно скопировать / зеркально отобразить исполняемый файл bash где-нибудь в контейнере FS, а также все необходимые библиотеки. (Если я что-то не понял, пожалуйста, исправьте меня).


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

Как-то ssh (sftp на самом деле), похоже, может сделать что-то подобное, не требуя, чтобы исполняемый файл sshd находился в chrooted FS. Но мне все еще не хватает навыков, чтобы понять, что происходит сам.

One Solution collect form web for “Есть ли способ изолировать запущенную программу от остальной части системы Linux?”

Я думаю, вы, вероятно, ищете контейнеры.

Или, возможно, нет. В конце концов, пространства имен Linux могут быть довольно прозрачными. Я не верю, что есть способ unshare пространство имен для процесса, который уже был вызван, но вы определенно можете unshare пространство имен во время разговора с небольшим эффектом.

 cd /tmp echo you >hey sudo unshare -m busybox echo hey >you; cat hey 

 you 

… и с другого терминала …

 cd /tmp cat you 

 hey 

… дерево монтирования по умолчанию используется в родительском пространстве имен, и, несмотря на то, что флаги распространения busybox все по умолчанию busybox по умолчанию, это не имеет значения до тех пор, пока изменение в дереве монтирования каким-либо образом не будет реализовано в пространстве имен. Этого также не нужно делать через busybox.

… в терминале busybox

 echo "#$$" 

 #8854 

… и теперь от другого …

 sudo nsenter -t8854 -m mount -t tmpfs none /tmp cd .; cat hey 

 you 

… но из терминала busybox , и, следовательно, из пространства имен мы просто выполнили mount

 cd .; cat hey 

 cat: hey: no such file or directory 

… потому что новые приватные tmpfs были установлены поверх shared /tmp в команде nsenter

 cd .. umount tmp cat tmp/hey 

 you 
  • Как сопоставить IP-адрес с помощью iptables?
  • Почему мое монтирование привязки видимо за пределами пространства имен mount?
  • Процесс, выполняемый как root, при выполнении mount, устанавливается для `self`, как сделать mount глобальным?
  • Есть ли команда для переключения в существующее пространство имен?
  • Создание личного монтирования tmpfs в сценарии оболочки
  • как изменить содержимое файла только для определенного процесса?
  • Как перечислить пространства имен в Linux?
  • Проблемы с сетевым подключением между разными хостами из сетевого пространства имен в одном хосте
  • Легкая зональная песочница файловой системы
  • Доступ к сети в сетевом пространстве имен
  • Рекурсивно отключите привязку Bind в пространстве имен User and Mount
  • icmp ограничен во многих сетевых пространствах?
  • Interesting Posts

    Как преобразовать образ диска dd в Clonezilla?

    Возможно ли выполнить вкладку истории командной строки для конкретной команды?

    Выделение пользовательского синтаксиса в Gedit

    Как начать первую команду из списка, напечатанного командой 'history | grep что-то '

    Сетевой анонимный вопрос

    Не удается установить VLC на сервер без заголовка Debian, конфликт зависимости с VLC: i386

    В соответствии с тем, что GNOME очищает мусор «через 30 дней»?

    Есть ли способ имитировать событие «Закрыть» в разных окнах с помощью терминала?

    Владелец процесса против пользователя процесса (системный монитор Gnome)

    Использование уведомления-отправки с помощью cron

    Как выполнить двойную загрузку Win7 и Chrome OS на нетбуке

    Могу ли я предотвратить «статус обслуживания foo» от подкачки его вывода через «меньше»?

    wget не загружает файлы рекурсивно

    primusrun / optirun медленнее, чем Intel

    скрипт для автоматизации scp в сети

    Linux и Unix - лучшая ОС в мире.