[Volgograd] LDAP add

Dwarf linux на dwarf.net.ru
Пн Янв 26 22:04:45 MSK 2004


On Mon, Jan 26, 2004 at 11:46:03AM +0300, Taras Ablamsky wrote:

Млин, сам файл забыл вложить. Он.

-- 
Best regards,
Dwarf (aka Maxim V. Kovrov).

It is better to travel hopefully than to fly Continental.
----------- следущая часть -----------
#!/bin/sh

# чуть позже, конечно, все эти установочные переменные 
#SUIFFIX, BINDDN и др. будут занесены в отдельный фай common, но сейчас они тута.

SUIFFIX="dc=dwarf,dc=net.ru"
BINDDN="cn=manager,$SUIFFIX"
BINDDNSECRET=`cat /etc/ldap.secret` # хто владеет этим файлом, тот владеет всем

# не хочу я пароль в открытом виде выставлять. Пущай лучше в файле торчит.

NEWUSER=$1
NEWGROUP=$NEWUSER


if [ -z "$1" ]; then
    echo "Usage: `basename $0` <new username>"
    exit 1
fi

# присутствует ли пользователь NEWUSER уже в системе

getent passwd | grep "^$NEWUSER:"

if [ $? == 0 ]; then
		echo "User $NEWUSER already exist!"
		exit 1
fi

getent passwd | grep "^$NEWGROUP:"

if [ $? == 0 ]; then
    echo "Group $NEWGROUP already exist!"
    exit 1
fi

UID_MIN=`cat /etc/login.defs | grep "^UID_MIN" | awk -F' ' '{print $2}'`
GID_MIN=`cat /etc/login.defs | grep "^GID_MIN" | awk -F' ' '{print $2}'`

if [ ! -r /etc/default/useradd ]; then
		echo "Default file configuration not readable"
		exit 1
fi

. /etc/default/useradd

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 + `

# не залазить в случае чего в область системных пользователей
# проверять UID_MAX и GID_MAX нет никакого желания. У меня стока пользователей не наберётся.

if [ -z $UID_MIN ]; then
		UID_MIN=1000
fi

if [ -z $GID_MIN ]; then
    GID_MIN=1000
fi

if [ $NEWUID -lt $UID_MIN ]; then
		NEWUID=$UID_MIN
fi

if [ $NEWGID -lt $GID_MIN ]; then
		NEWGID=$GID_MIN
fi

NEWHOME=$HOME/$NEWUSER

if [ ! -d $NEWHOME ]; then
		umask 077
		cp -Rf $SKEL $NEWHOME
		chown -R $NEWUID $NEWHOME
		chgrp -R $NEWGID $NEWHOME

# Если такая директория наличиствует, можно выдать диагностическое сообщение,
# а можно пользовать существующую, это, когда у меня будет плотная миграция на ldap...

else
# 		chown -R $NEWUID $NEWHOME
#     chgrp -R $NEWGID $NEWHOME
		echo "WARNING: home directory for user $NEWUSER already exist."
fi

# если есть необходимость такая, можно, конечно, заморачиваться с
# поролем каким-нибудь случайным. Мне просто лень.

NEWPASSWD={crypt}x

ldapadd -c -x -w "$BINDDNSECRET" -D "$BINDDN" <<EOF
dn: uid=$NEWUSER,ou=People,$SUIFFIX
uid: $NEWUSER
cn: $NEWUSER
objectClass: account
objectClass: posixAccount
objectClass: top
loginShell: $SHELL
uidNumber: $NEWUID
gidNumber: $NEWGID
homeDirectory: $NEWHOME
userPassword: $NEWPASSWD
EOF

# adding new group

ldapadd -c -x -w "$BINDDNSECRET" -D "$BINDDN" <<EOF
dn: cn=$NEWGROUP,ou=Group,$SUIFFIX
objectClass: posixGroup
objectClass: top
cn: $NEWGROUP
userPassword: {crypt}x
gidNumber: $NEWGID
memberUid: $NEWUSER
EOF

echo "User $NEWUSER successfully added."

passwd $NEWUSER


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