Ryan Braun wrote:
On Tuesday 18 December 2007 10:38 pm, dandantheitman wrote:
On 18/12/2007, Namachivayam <npurusothaman@xxxxxxxxxxxxxxxx> wrote:
Hi Dan,
For adding users (with Posix Attributes), changing the
userpassword, we are using these scripts :
_For creating users with Posix Attribute :_
create a file for example with the content :
<snip>
Hi Namachivayan,
Thanks for your help. What I need to do is figure out a way to use
ldapadd rather than using the ldif file as I would like automate the
UID generation.
I found this objectClass in samba somewhere, it's basically just an object
that holds a gidNumber and a uidNumber value. When my add_user script runs,
it will first find this object, grab the values, create the user, then
increment them as needed.
objectClasses: ( UnixIdPool-oid NAME 'UnixIdPool' SUP top STRUCTURAL MUST ( cn
$ gidNumber $ uidNumber ) X-ORIGIN 'user defined' )
Ryan
Hi,
I would like to share with regard to this, in samba.schema, Below is
the objectclass I found
objectclass ( 1.3.6.1.4.1.7165.2.2.7 NAME 'sambaUnixIdPool' SUP top
AUXILIARY
DESC 'Pool for allocating UNIX uids/gids'
MUST ( uidNumber $ gidNumber ) )
And from idealx scripts which you can download from samba.org You will
see that it uses a piece of perl code to get the next uid. May be this
can help,.
the logic is same as what Ryan described
<snip>
sub get_next_id($$) {
my $ldap_base_dn = shift;
my $attribute = shift;
my $tries = 0;
my $found=0;
my $next_uid_mesg;
my $nextuid;
if ($ldap_base_dn =~ m/$config{usersdn}/i) {
# when adding a new user, we'll check if the uidNumber available
is not
# already used for a computer's account
$ldap_base_dn=$config{suffix}
}
do {
$next_uid_mesg = $ldap->search(
base => $config{sambaUnixIdPooldn},
filter => "(objectClass=sambaUnixIdPool)",
scope => "base"
);
$next_uid_mesg->code && die "Error looking for next uid";
if ($next_uid_mesg->count != 1) {
die "Could not find base dn, to get next $attribute";
}
my $entry = $next_uid_mesg->entry(0);
$nextuid = $entry->get_value($attribute);
my $modify=$ldap->modify( "$config{sambaUnixIdPooldn}",
changes => [
replace => [ $attribute => $nextuid + 1 ]
]
);
$modify->code && die "Error: ", $modify->error;
# let's check if the id found is really free (in ou=Groups or
ou=Users)...
my $check_uid_mesg = $ldap->search(
base => $ldap_base_dn,
filter => "($attribute=$nextuid)",
);
$check_uid_mesg->code && die "Cannot confirm $attribute $nextuid
is free";
if ($check_uid_mesg->count == 0) {
$found=1;
return $nextuid;
}
$tries++;
print "Cannot confirm $attribute $nextuid is free: checking for
the next one\n"
} while ($found != 1);
die "Could not allocate $attribute!";
}
Regards
Niranjan
--
Fedora-directory-users mailing list
Fedora-directory-users@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-directory-users
--
Fedora-directory-users mailing list
Fedora-directory-users@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-directory-users