Как побороть баг в newusers

Первый раз в жизни приключилась необходимость, экспортировать большое количество пользователей из одного дистрибутива, в другой. Сперва думал, как и чего наколхозить для достижения истинного дзена, но нашел утилиту newusers (нашел – громко сказано, она всегда рядом была, в пакете shadow) и возрадовался.

Прога умеет создавать пользователей руководствуясь списком в текстовом файле, где каждая строка имеет вид:

user_name:clear_text_password:number_uid:number_gid:text_comment:home_dir:user_shell

где:

  1. user_name – это имя пользователя (латиницей);
  2. clear_text_password – нешифрованный пароль;
  3. number_uid – цифровой идентификатор пользователя (должен быть больше UID_MIN и меньше UID_MAX в файле /etc/login.defs) ;
  4. number_gid – цифровой идентификатор группы (должен быть больше GID_MIN и меньше GID_MAX в файле /etc/login.defs) ;
  5. text_comment – Комментарий, или фио пользователя (можно кириллицей);
  6. home_dir – домашняя директория (скрипт создаст ее сам);
  7. user_shell – командная оболочка или например /usr/sbin/nologin, если в шелл пользователю нельзя;

Но радость была не долгой. Скормив проге список пользователей, получил в ответ:


root@server:/home/serp# newusers ./userlist.txt
*** Error in `newusers': free(): invalid next size (fast): 0x00000000012b23d0 ***
Aborted (core dumped)

Читать