[Volgograd] LDAP add

Taras Ablamsky t на v-lug.vlink.ru
Вс Янв 25 15:53:15 MSK 2004



Dwarf пишет:
> Небольшой скриптик на суд общественности. Задача - добавить нового
> пользователя в базу LDAP. Ищем bottle necks. Или добавляем features.
> 

ОК.

> 
> 
> ------------------------------------------------------------------------
> 
> #!/bin/sh
> 
> # чуть позже, конечно, все эти установочные переменные 
> #SUIFFIX, BINDDN и др. будут занесены в отдельный фай common, но сейчас они тута.
> 
> SUIFFIX="dc=dwarf,dc=net.ru"
> BINDDN="cn=manager,$SUIFFIX"
> 

Может тогда и bind password сюда же, тогда не будет необходимости
запускать это от root.

> NEWUSER=$1
> 
> if [ x$1 == x ]; then
>     echo "Usage: `basename $0` <new username>"
>     exit 1
> fi
> 
> # тут, по большому счёту, нужно проверить, присутствует ли 
> # пользователь NEWUSER уже в системе
> 
> useradd $NEWUSER

Зачем ЭТО ^^^ , только ради того чтоб получить незанятый id?

> 
> NEWUID=`id -u $NEWUSER`
> NEWGID=`id -g $NEWUSER`
> NEWGROUP=$NEWUSER
> 

так давай попробуем его получить от getent passwd
что-то типа
NEWUID=`getent passwd|awk -F: '{print $3}'|sort -n|tail -n1|xargs expr 1 + `
ну и для группы
NEWGID=`getent group|awk -F: '{print $3}'|sort -n|tail -n1|xargs expr 1 + `

Можно что-нибудь еще по-интересней/по-проще придумать.

> 
> ldapadd -c -x -w `cat /etc/ldap.secret` -D "$BINDDN" <<EOF
> dn: uid=$NEWUSER,ou=People,$SUIFFIX
> uid: $NEWUSER
> cn: $NEWUSER
> objectClass: account
> objectClass: posixAccount
> objectClass: top
> loginShell: /bin/bash
> uidNumber: $NEWUID
> gidNumber: $NEWGID
> homeDirectory: /home/$NEWUSER
> userPassword: {crypt}x
> EOF
> 
> # delete new record in /etc/passwd
> 
> PASSWDFILE=/etc/passwd
> PASSWDFILERES=/etc/passwd-res
> 
> mv -f $PASSWDFILE $PASSWDFILERES
> 
> cat $PASSWDFILERES | grep -v "^$NEWUSER" > $PASSWDFILE

Ну это уже совсем не хорошо, тогда уж userdel'ом и удаляй
к тому же user{add,mod,del} вовсе не обязаны работать именно c /etc/passwd

> 
> # стирать или не стирать файлы из /etc/tcb???

А если у кого-то пароли хранятся в /etc/shadow?
Вобщем, не стоит эти записи вообще создавать.

> 
> # adding new group
> # Есть версия, что можно вообще тут воспользоваться скриптом migrate_group, но пока не буду.
> 
> 
> ldapadd -c -x -w `cat /etc/ldap.secret` -D "$BINDDN" <<EOF
> dn: cn=$NEWGROUP,ou=Group,$SUIFFIX
> objectClass: posixGroup
> objectClass: top
> cn: $NEWGROUP
> userPassword: {crypt}x
> gidNumber: $NEWGID
> memberUid: $NEWUSER
> EOF
> 
> passwd $NEWUSER

А вот здесь хорошо бы не использовать passwd, а записывать пароль сразу
в ldap
Так как руками добавить юзера можно и в gq, и просто командой ldapadd из
  шаблонного файлика ldif
Скрипт нужен чтоб добавить 200 юзеров сразу. По крайней мере мне он для 
этого нужен.


--
Taras Ablamsky





Подробная информация о списке рассылки Volgograd