частные точки монтирования файловой системы для каждого процесса

Это не проблема Guake, это - как Ваш терминальный заголовок является установкой. Новая версия Guake уважает терминальный заголовок от оболочки. Я держал пари, что Вы также получаете тот же длинный заголовок в Терминале Gnome. Проверьте, как настроить терминальный заголовок от Вашей оболочки: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html

23
05.09.2014, 00:58
2 ответа

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

Так о чем говорится в предыдущем абзаце? Давайте попробуем разобраться на простом примере.

Терминал 1:

Я выполняю следующие команды в первом терминале.

#Creating a new process
unshare -m /bin/bash
#creating a new mount point
secret_dir=`mktemp -d --tmpdir=/tmp`
#creating a new mount point for the above created directory. 
mount -n -o size=1m -t tmpfs tmpfs $secret_dir
#checking the available mount points. 
grep /tmp /proc/mounts 

Последняя команда дает мне результат в виде,

tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw, relatime, size = 1024k 0 0

Я также выполнил следующие команды.

cd /tmp/tmp.7KtrAsd9lx
touch hello
touch helloagain
ls - lFa

Вывод команды ls :

ls -lFa
total 4
drwxrwxrwt   2 root root   80 Sep  3 22:23 ./
drwxrwxrwt. 16 root root 4096 Sep  3 22:22 ../
-rw-r--r--   1 root root    0 Sep  3 22:23 hello
-rw-r--r--   1 root root    0 Sep  3 22:23 helloagain

Так что же такого особенного в этом? Зачем мне это делать?

Теперь я открываю другой терминал ( терминал 2 ) и выполняю следующие команды.

cd /tmp/tmp.7KtrAsd9lx
ls - lFa

Вывод такой, как показано ниже.

ls -lFa
total 8
drwx------   2 root root 4096 Sep  3 22:22 ./
drwxrwxrwt. 16 root root 4096 Sep  3 22:22 ../

Файлы hello и helloagain не видны, и я даже вошел в систему как root, чтобы проверить эти файлы. Таким образом, преимущество состоит в том, что эта функция позволяет нам создать частную временную файловую систему, которую не могут видеть или просматривать даже другие процессы, принадлежащие root.

Из справочной страницы unshare ,

пространство имен монтирования Монтирование и размонтирование файловых систем не влияет на остальная часть системы (флаг CLONE_NEWNS), кроме файловых систем которые явно помечены как общие (с помощью mount - сделать-разделять; общие флаги см. в / proc / self / mountinfo).

Рекомендуется использовать mount --make-rprivate или mount --make-rslave. после того, как не поделился --mount, чтобы убедиться, что точки монтирования в новом пространстве имен действительно не используются совместно с родительским пространством имен.

Для пространства имен используется память VFS, которая принадлежит ядру. И - если мы настроим его прямо с самого начала - мы можем создавать целые виртуальные среды, в которых мы являемся пользователем root без прав root.

Ссылки:

Пример составлен с использованием деталей из этого сообщения в блоге . Кроме того, цитаты из этого ответа взяты из этого замечательного объяснения Майка . Еще одно замечательное чтение по этому поводу можно найти в ответе от здесь .

28
27.01.2020, 19:42

Если в вашей системе установлена ​​пузырчатая пленка , вы можете легко сделать это за один шаг:

bwrap --dev-bind / / --tmpfs /tmp bash

В приведенном выше примере внутренний bash будет иметь собственное представление о /tmp.

Решение, вдохновленное ответом @Ramesh --спасибо за него!

2
27.01.2020, 19:42

Теги

Похожие вопросы