Вопрос или проблема
Я на стадии настройки своей новой сборки truenas scale и сталкиваюсь с проблемой создания привязки, предназначенной для монтирования от имени другого пользователя.
У меня есть много данных в /mnt/core-hdd/privatedata/safesubfolder/media. Они принадлежат uid:gid 3006:3006, и я хочу открыть подпапку (только для чтения, это нормально) как монтирование на другом наборе данных, к которому будет обращаться uid:gid 3010:3010. Я надеялся, что смогу сделать это, не перезаписывая все разрешения на исходных файлах, а скорее через монтирование, которое подделывает исходного пользователя.
После небольшого исследования я подумал, что смогу выполнить такой скрипт при запуске…
mount -o bind,ro,X-mount.idmap=b:3010:3006:1 /mnt/core-hdd/privatedata/safesubfolder/media /mnt/core-hdd/media/othermedia
К сожалению, мне не удается предоставить uid 3010 никакие разрешения на вновь созданном монтировании. Я пробовал менять идентификаторы (b:3006:3010:1
), ставить в кавычки и практически все, что мог придумать, но это безрезультатно. (Root может видеть содержимое монтирования без проблем.)
Документация, которую я смог найти по X-mount.idmap, кажется крайне ограниченной (всего одна страница man и несколько постов на форумах, так что я действительно в затруднении).
Я открыт для идей. В общем, мне нужно создать монтирование, которое подделывает другого пользователя, не меняя все права на исходные файлы (они являются целью процесса синхронизации), и не перемещая данные повсюду или создавая NFS-общие папки с maproot, если это не необходимо. Я хотел бы иметь возможность использовать эту технику и в других местах.
(Кстати, интересно, что truenas действительно уважает опцию ‘ro’ при создании привязок, раньше мне приходилось делать повторное монтирование привязки с командой ro, чтобы это заработало)
Открыт для идей, и буду очень признателен!
Ответ или решение
Решение проблемы с привязкой X-mount.idmap в TrueNAS Scale
Настройка системы TrueNAS Scale может оказаться сложной задачей, особенно при работе с привязками и правами доступа. Ваша ситуация, когда вы пытаетесь создать привязку, которая изменяет UID и GID пользователей, не редкость, и ниже я предложу несколько шагов для решения проблемы.
Понимание проблемы
Вы хотите создать привязку (bind mount) для каталога /mnt/core-hdd/privatedata/safesubfolder/media
, который принадлежит пользователю с UID:GID 3006:3006, и сделать его доступным для другого пользователя с UID:GID 3010:3010. Вы пытаетесь использовать опцию X-mount.idmap
для имитации прав доступа, не меняя фактические права на исходных файлах. Однако, несмотря на все усилия, UID 3010 не имеет необходимых прав доступа на созданную вами привязку.
Возможные причины проблемы
-
Неправильное использование параметров
X-mount.idmap
: Правильный синтаксис и порядок аргументов имеют огромное значение при выполнении команд монтирования. Важно четко проверить, как вы указываете UID и GID. -
Ограниченные возможности
X-mount.idmap
: Хотя эта опция может работать в некоторых системах, она не всегда может корректно обрабатывать все случаи, поэтому не исключено, что TrueNAS Scale имеет свои ограничения или особенности реализации. -
Настройки ACL (Access Control Lists): Убедитесь, что ACL, если они включены, корректно настроены для папки, которую вы хотите смонтировать. Это может влиять на доступ, несмотря на то что вы успешно создали привязку.
Рекомендации по решению
-
Проверьте команду монтирования:
Убедитесь, что исходная команда монтирования выглядит так:mount -o bind,ro,X-mount.idmap=b:3010:3006:1 /mnt/core-hdd/privatedata/safesubfolder/media /mnt/core-hdd/media/othermedia
Если есть возможность, попробуйте не использовать
1
в конце. Например:mount -o bind,ro,X-mount.idmap=b:3010:3006 /mnt/core-hdd/privatedata/safesubfolder/media /mnt/core-hdd/media/othermedia
-
Используйте
bindfs
: Если стандартная привязка не работает, попробуйте использоватьbindfs
. Это инструмент, который позволяет монтировать каталог с изменёнными правами доступа. Пример команды:bindfs -o mirror_only,ro --map=3010:3006 /mnt/core-hdd/privatedata/safesubfolder/media /mnt/core-hdd/media/othermedia
-
Проверьте настройки ACL: Используйте команду
getfacl
для проверки действующих ACL на папке и убедитесь, что они позволяют доступ нужному пользователю:getfacl /mnt/core-hdd/privatedata/safesubfolder/media
-
Логи и отладка: Проверьте системные журналы (обычно
/var/log/syslog
или аналогичные), чтобы выявить возможные ошибки при монтировании. Это может дать подсказки о том, что именно идет не так.
Поддержка и документация
Если проблема продолжает возникать, полезно обратиться к официальной документации TrueNAS или сообществу пользователей. Возможно, кто-то сталкивался с аналогичной проблемой и сможет предложить решение.
Заключение
Проблема с привязками в TrueNAS Scale – это не редкость, но с помощью указанных шагов вы сможете найти и устранить причину отсутствия доступа у пользователя 3010. Обязательно тестируйте изменения в безопасной среде, чтобы избежать потери данных или нарушений в работе системы.