После pivot_root я получаю отказ в доступе для каждой команды.

Вопрос или проблема

Простой конфиг:

  1. Маленькая встроенная система загружается из собственного хранилища,
  2. монтирует NFS-ресурс,
  3. выполняет pivot_root в него.

Факты:

  1. Новая rootfs монтируется через nfs на /rootfs.

  2. Перед выполнением pivot_root я связываю все необходимые каталоги с новым корнем:

    mount --bind /dev /rootfs/dev

    mount --bind /proc /rootfs/proc

    mount --bind /run /rootfs/run

    mount --bind /sys /rootfs/sys

  3. После выполнения pivot_root (pivot_root /rootfs /rootfs/original) я получаю “Permission denied” для каждой команды (даже для ls, cat).

  4. Перед выполнением pivot_root я могу запускать rootfs/bin/busybox (а также /bin/busybox).

  5. Устройство использует busybox.

  6. После pivot_root я не могу запустить /original/bin/busybox, выдаёт “Permission denied”.

  7. NFS-сервер использует эти параметры для предоставления “rootfs”: rw,sync,no_subtree_check,no_root_squash

Что стоит проверить?

Примечание: это работало раньше на другом NFS-сервере:

Старый сервер (работающий):
Debian 10, ядро: 5.10.17+

Новый сервер (не работает):
Debian 12, ядро: 6.12.1-v8+

Обновление

Некоторые команды работают: cd, pwd.

Ответ или решение

В вашей ситуации возникла проблема с ошибкой "Permission denied" после выполнения команды pivot_root, что указывает на возможные проблемы с правами доступа или конфигурацией NFS. Давайте разберём подробнее эту ситуацию и попробуем найти решение.

Теория

Основное предположение здесь заключается в том, что проблема связана с изменениями в новой конфигурации NFS-сервера или с несовместимостью настроек между старым и новым сервером. Когда система транспонирует корень файловой системы с использованием pivot_root, все доступы к файлам и командам должны быть разрешены новым корнем. Ошибка "Permission denied" может указывать на следующие проблемы:

  1. Проблемы с правами доступа: При использовании NFS необходимо убедиться, что клиент имеет достаточные привилегии для выполнения файловых операций. Проблемы могут возникнуть из-за изменений в конфигурации сервера, таких как root-сквашивание или умолчания UID и GID.

  2. Проблемы с монтированием: При смене корня файловой системы важно, чтобы новые корневые файловые системы были корректно смонтированы с правильными правами и опциями.

  3. Архитектурные изменения в новой версии NFS: Возможны изменения в политике безопасности или реализации самой NFS в новой версии ядра, которые могут влиять на поведение.

Пример

В вашей ситуации, до выполнения pivot_root вы можете запускать бинарные файлы из нового корня, но после выполнения команды, доступ к ним пропадает. Это указывает на проблемы с правами доступа после монтирования новой файловой системы в качестве корневой. Особенно это заметно, если сервер NFS конфигурировался при помощи параметров, которые могли быть интерпретированы иначе в новой версии ОС.

Применение

Что стоит проверить:

  1. Права доступа и UID/GID: Проверьте, как настроен контроль доступа на сервере NFS. В Debian 12 могли произойти изменения, которые влияют на разрешение root-доступа через NFS. Проверьте, применяются ли пользовательские и групповые идентификаторы (UID/GID) правильно между клиентом и сервером.

  2. Конфигурация root squash: Опция no_root_squash выключает преобразование root-пользователя в nobody пользователя, что особенно важно для систем, меняющих корневую файловую систему.

  3. Логи сервера и клиента: Проверьте журналы как на стороне сервера, так и на стороне клиента. Они могут предоставить дополнительную информацию о том, какие операции терпят неудачу и почему.

  4. Сравнение конфигураций старого и нового серверов: Внимательно изучите различия в конфигурации между работающей и неработающей средой. Наиболее вероятно, что проблема кроется в какой-то измененной опции, которая может показаться незначительной.

  5. Параметры монтирования NFS: Убедитесь, что параметры монтирования на клиенте соответствуют требованиям сервера. Например, дополнительные флаги безопасности могли быть интегрированы в фабрику ядра.

Резюмируя, рекомендуется тщательно проверить конфигурацию и права доступа, уделяя особое внимание изменениям между версиями Debian и соответствующим их ядрам. Велик шанс, что изменение в политике безопасности или настройках NFS привело к нарушению прежней функциональности. Если обновления конфигурации не решат эту проблему, стоит рассмотреть возможность ограничения версии NFS-протокола на стороне клиента или внесение изменений на серверной стороне, чтобы адаптироваться к новой конфигурации.

Оцените материал
Добавить комментарий

Капча загружается...