FANTOO: продолжение истории с созданием пользователей при установке бинарных пакетов
Стандартный GENTOO (текущий) при установке бинарных пакетов всегда создает пользователей в / не зависимо от значения переменной ROOT. В FANTOO это дело было поправлено. Теперь выяснилось, что любой пакет, создающий пользователей (или группу) при установке, должен иметь зависимость от shadow. Ибо именно там содержатся useradd и groupadd. А сам shadow не работает без baselayout, ибо ему нужен /etc/passwd. А в baselayout нужно создавать при установке /dev/null. Ибо иначе при создании пользователя типа ntp, у которого домашним каталогом прописан /dev/null, будет создан не спец.файл, а каталог. И система начинает ругаться.
Вот такая длинная цепочка проблем с созданием пользователей. Из-за принципа её приходится решать по мере возникновения проблем старым способом. Но похоже, что надо проблему надо решать другим образом: не создавать непосредственно пользователей и группы при установке бинарного пакета, а прописывать их в специальном каталоге в отдельный файл с именем пакета на этапе сборки. Ну что-то типа /var/db/pkg Тогда при старте системы или подключении модуля на ходу просматриваются указанные файлы и создаются нужные пользователи. При отключении модуля пользователи будут удалены.
Кстати, при этом можно заимствовать идею от rPath. Там в /etc/conary/users прописаны все пользователи с желаемыми uid и тд. Аналогично с groups. Можно завести такое в baselayout. Тогда пользователи будут создаваться не с номером следующего свободного uid (он ведь плавает и зависит от очередности установки), а фиксировано.
В принципе модернизированный старый способ уже будет работать и так. Но вот при динамическом подключении пакетов (в работающей системе) при данной технологии мы имеет несколько /etc/passwd с разными пользователями. Что не хорошо.
Да, я наконец-то перешел на работу под FANTOO и собираю его уже повторно, работая под ним самим.
Придется, наверное, реализовать описанное выше.
- Для комментирования войдите или зарегистрируйтесь
Немного подумав
Что значит изложить проблему письменно :-) Чем городить сложную относительно систему, решил файлы /etc/passwd /etc/shadow и /etc/group просто сделать накопительными при сборке: перед сборкой дописываем текушие варианты, после сборки сохраняем новые. При загрузке используем данные накопленные файлы.