[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