Результат readlink(2) несовместим с вложенными пространствами имен монтированияLinux

Ответить Пред. темаСлед. тема
Anonymous
 Результат readlink(2) несовместим с вложенными пространствами имен монтирования

Сообщение Anonymous »

Когда два вложенных пространства имен монтирования создаются с помощью unshare(2) в новом разветвленном процессе; вызов readlink(2) из последнего пространства имен с использованием FD, открытого в предыдущем пространстве имен, возвращает путь, в котором отсутствует компонент точки монтирования.
Т.е. /dev/zero становится /zero, а /mnt/disk/file становится /file.
Однако это не так. кажется, происходит, если между двумя вызовами отмены совместного использования есть разветвление. Что делает fork, чтобы изменить это поведение?
Приведенный ниже код C++ может продемонстрировать проблему. Я также прикрепил выходные данные, полученные при запуске в Linux 6.1.23.
При желании можно предоставить один аргумент «вилка», которая создает вилку сразу после создания первого пространства имен, поэтому что второе пространство имен создается в другом процессе, который наследует первое пространство имен от родительского процесса.
#include
#include
#include
#include
#include
#include
#include

std::string readlink_path(const std::string &path) {
std::vector buf(4096);
ssize_t size = readlink(path.c_str(), buf.data(), buf.size());
return size == -1 ? "" : std::string(buf.data(), static_cast(size));
}
std::string readlink_fd(int fd) { return readlink_path("/proc/self/fd/" + std::to_string(fd)); }

int main(int argc, const char *argv[]) {
int fdFromFirstNS = -1, fdFromInitialNS = -1;
/* Initial namespace */
std::cout

Подробнее здесь: https://stackoverflow.com/questions/782 ... namespaces
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»