Перенос пользователей

stomotolog

Турист
Регистрация
11 Авг 2005
Сообщения
29
Реакции
0
Credits
52
Доброго здоровьица!!!
Подскажите пожалуйста.. может конечно такой вопрос уже был, я не нашёл ничего на форуме...
В общем есть Linux с postfix, 360 пользователей (почтовых ясчиков), как мне перенести всех пользователей? Незабивать же всех Юзверей и пароли.... Хочу всё поднять на FreeBSD (а то линь RHEL3 загибается ). Как Ваше мнение есчё хотелось бы узнать будет ли быстро работать в этом случае дисковые операции (RAID 5, SCSI)?
С Уважением.
 

enyuri

Местный
Регистрация
30 Июн 2005
Сообщения
162
Реакции
41
Credits
0
Привет!
1. Скопировать файлы с паролями.
cp -a /etc/passwd /newlocation/etc/passwd
cp -a /etc/shadow /newlocation/etc/shadow
cp -a /etc/group /newlocation/etc/group

2. Скопировать хоум директории
cp -a /home/* /newlocation/home/

Не забываем остановить postfix перед копированием хоумов.

PS. Банально копировать файлы с паролями нельзя! Системные пользователи и группы должны остаться, поэтому нужно сначала скопировать файлы в другое место, из них поудалять строчки с системными пользователями, а потом добавить эти файлы к номым парольным файлам
cat /xxx/passwd >> /newlocation/etc/passwd
cat /xxx/shadow>> /newlocation/etc/shadow
cat /xxx/group>> /newlocation/etc/group
 

stomotolog

Турист
Регистрация
11 Авг 2005
Сообщения
29
Реакции
0
Credits
52
Уважаемый enyuri !!!
Вы знаете что то не выходит каменный цветок... всё сделал так как Вы сказали... но нифига... FreeBSD ГВРИТ мне при попытке залогиниться no such user.... как то можно базу паролей и пользователей обновить? Неподскажите?
С Уважением!!!
Спасибо!!!
 

enyuri

Местный
Регистрация
30 Июн 2005
Сообщения
162
Реакции
41
Credits
0
Вопрос до конца не понял, но направление понятно.
Посмотри, что написано у тебя в новом (на фреБСД) /etc/passwd
Если пользователь там есть, но под этим именем нельзя залогинется, значит беда в пароле. Я давно не имел плотного общения с BSD системами, но на сколько это было раньше, BSD в файле /etc/passwd хранила и имя пользователя и криптованный пароль, а в Linuxe это разбили на два файла: /etc/passwd и /etc/shadow. Изменения файла passwd каснулись поля с паролем. Вместо него воткнули "*". А в файле shadow оставили только login и passwd, и еще несколько полей, касающихся времени жизни пароля.

Поэтому, на новой системе добавь тестового пользователя и посмотри, какие поля куда пишет система. Если есть разница в расположении полей, берешь расчестку, типа awk и собираешь нужные поля в кучу как надо.
 

stomotolog

Турист
Регистрация
11 Авг 2005
Сообщения
29
Реакции
0
Credits
52
Вместо shadow в FreeBSD используется master.passwd .. формат такой же у него.... Видимо нельзя переносить пользователей... :-((( .... А С системы Linux на Linux кто-нить переносил когда нить пользователей?
С Уважением!
 

stomotolog

Турист
Регистрация
11 Авг 2005
Сообщения
29
Реакции
0
Credits
52
Есчё один вопрос уважаемые ГУРУ...
Возможно ли поменять пароль пользователя из скрипта... пробовал разные команды так толком и не нашёл... нужно для того чтобы из скрипта создать пользователей и присвоить им пароли взятые из отдельного файла..
С Уважением!
Спасибо за любой ответ!!!

P.S. написал такой вот скриптик
#!/bin/sh

PASSWORD_FILE=/tmp/passwd_new
n=1
for name in ${awk `BEGIN={FS=":"} {print$1}` < "PASSWORD_FILE"}

do
echo "Users $n=$name"
let "n+=1"
pw groupadd -n $name
pw useradd -n $name -d /home/$name -g $name -G mail -s /sbin/nologin -w none
done

exit 0

Как теперь через этот скрипт задать пароль созданному пользователю...???
С Уважением!!
 
Последнее редактирование модератором:

enyuri

Местный
Регистрация
30 Июн 2005
Сообщения
162
Реакции
41
Credits
0
Попробуй так:
echo "clearpassword" | passwd --stdin $name

Если у тебя пароли уже криптованные, то пользуй или awk или sed для редактирования /etc/passwd. Только для начала не забудь сделать его копию! :)
А можно пользователя сразу с паролем добавлять. Для этого есть ключ "-p cryptpassword". cryptpassword можно получить так:
#/bin/bash
function getcryptpass() {
salt=`/usr/bin/uuidgen|dd bs=2 count=1 2>/dev/null`
test -n "${salt}" || report "problem generating password salt"
cryptpass=`echo "print crypt(\"${1}\",\"${salt}\")" | perl`
test -n "${cryptpass}" || report "problem generating encypted password"
}

pass=`dd bs=6 count=1 if=/dev/random 2>/dev/null |uuencode -m /tmp/1\`date +%s\`
2>/dev/null|grep -v "^====$"|grep -v "^begin-base64 664 "`
getcryptpass "${pass}"
echo $pass" "$cryptpass
 

stomotolog

Турист
Регистрация
11 Авг 2005
Сообщения
29
Реакции
0
Credits
52
Уважаемый enyuri !!!
Не получается сменить пароль вот так......echo "clearpassword" | passwd --stdin $name...
По поводу cryptpass вообще ругается на строчку ...function getcryptpass() ...
Поразному пробовал писать даже так...
passwd $name | echo "123"
Не выходит каменный цветок....
С Уважением !!
Спасибо!!!
Будем искать!!
 

stomotolog

Турист
Регистрация
11 Авг 2005
Сообщения
29
Реакции
0
Credits
52
Оказалось всё очень просто....

Спасибо всем огромное кто помогал!!!
А дело значит так.. разобрался наконец-то.. если конечно кому интересно пусть читает...
1) С помощью скрипта считываем пользователей и вносим их в базу данных пользователей (см. выше)
2) Так как у нас есть файлик уже криптованных паролей из Linux shadow... вырезаем опять же с помощью этого скрипта поле пароля что то типа $1$7g178...... бла бла бла.... вставляем это поле в файл master.passwd FreeBSD заместо * (звёздочки)
3) Выполняем команду pwd_mkdb...
И Всё .. пользователи могут спокойно заходить или получать почту!!!
С Уважением!!
Всем спасибо!!!