Я проверял unshare
команду и, согласно ее man-странице,
unshare - run program with some namespaces unshared from parent
Я также вижу, что есть тип пространства имен, перечисленных как,
mount namespace
mounting and unmounting filesystems will not affect rest of the system.
Какова цель этого пространства имен монтирования ? Я пытаюсь понять эту концепцию с помощью некоторого примера.
Ответы:
Запуск
unshare -m
дает вызывающему процессу личную копию его пространства имен монтирования, а также отменяет общий доступ к атрибутам файловой системы, так что он больше не разделяет свой корневой каталог, текущий каталог или атрибуты umask с любым другим процессом.Так, что говорит вышеупомянутый параграф? Давайте попробуем понять, используя простой пример.
Терминал 1:
Я делаю следующие команды в первом терминале.
Последняя команда дает мне вывод как,
tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw,relatime,size=1024k 0 0
Теперь я выполнил следующие команды.
Вывод
ls
команды:Так в чем же дело всего этого? Зачем мне это делать?
Теперь я открываю другой терминал ( терминал 2 ) и выполняю следующие команды.
Вывод как показано ниже.
Файлы
hello
иhelloagain
не видны, и я даже вошел в систему как пользователь root, чтобы проверить эти файлы. Таким образом, преимущество заключается в том, что эта функция позволяет нам создавать частные временные файловые системы, которые даже другие процессы, принадлежащие корню, не могут просматривать или просматривать.Из справочной страницы
unshare
,Память, используемая для пространства имен, - это VFS от ядра. И - если мы настроим его в первую очередь - мы можем создать целые виртуальные среды, в которых мы являемся пользователем root без прав root.
Ссылки:
Пример оформлен с использованием деталей из этого поста в блоге . Кроме того, цитаты из этого ответа взяты из этого замечательного объяснения Майка . Еще одно замечательное прочтение об этом можно найти в ответе здесь .
источник
this feature makes it possible for us to create a private temporary filesystem that even other root-owned processes cannot see or browse through.
И по сравнению сchroot
,chroot
файлы видны другим. Это удивительно, и это предложение, вероятно, должно быть как в верхней части ответа. + 1ed.nsenter
вы можете войти в пространство имен и просмотреть временные файлы. Если предположить, что у вас только один общий ресурс (тот, у кого есть tempdir), тоsudo nsenter -t $(pgrep -P $(ps aux | grep unshare | grep -v grep | awk '{print $2}')) -m -p
содержимое будетЕсли в вашей системе установлен bubblewrap , вы можете легко сделать это за один шаг:
В приведенном выше примере внутренний bash будет иметь свой собственный вид на / tmp.
Решение вдохновлено ответом @ Ramesh-s - спасибо за это!
источник