NAME
OSS::LDAPops - Perform operations on user accounts, groups and netgroups stored in an LDAP directory
SYSNOPSIS
#Define config hash
$GLOBAL::config =
{
LDAPHOST => 'ldap01.mydomain.net',
BINDDN => 'uid=webportal, ou=writeaccess, dc=auth, dc=mydomain,dc=net',
BASEDN => 'dc=auth,dc=mydomain,dc=net',
NISDOMAIN => 'auth.mydomain.net',
PASSWORD => 'xyzzy',
};
#Instantiate new object and connect to server
my($ldapopsobj) = OSS::LDAPops->new($GLOBAL::config);
if (ref($ldapopsobj) !~ m/OSS::LDAPops/ ) {die("Error instantiating object: $ldapopsobj")};
my($ret);
my(@retu);
#Bind server
$ldapopsobj->bind;
@retu = $ldapopsobj->searchuser($ARGV[1]);
die($retu[0]) if (($retu[0] ne undef) and (ref($retu[0]) !~ m/Net::LDAP::Entry/) );
foreach my $entry (@retu) {$entry->dump; }
#if($ret) {die($ret);};
exit;
DESCRIPTION
This module manipulates user, group and netgroup objects within an LDAP directory.
Also included is ldapops.pl. This script implements a command-line utility using OSS::LDAPops.
netgroupcache.pl is also included. This uses OSS::LDAPops to create a local cache of LDAP-backed netgroups in /etc/netgroup.
AUTHOR
Simon <simon@hacknix.net>
ASSUMPTIONS ABOUT THE DIRECTORY
This module and associated sripts make some assumptions about how your directory is configured. these include:
Storage of maxuid
Conventions for use of netgroups
nis.schema is patched to allow equalityMatch on nisNetgroupTriple objects
For more information on directory configuration, and a complete HOWTO which follows this model from installation through to implementation and host configuration, please see:
<TODO: check back soon>
METHODS
This section describes the methods that are implemented and their use.
new
#Define config hash
$GLOBAL::config =
{
LDAPHOST => 'ldap01.mydomain.net',
BINDDN => 'uid=webportal, ou=writeaccess, dc=auth, dc=lastminute,dc=com',
BASEDN => 'dc=auth,dc=mydomain,dc=net',
NISDOMAIN => 'auth.mydomain.net',
PASSWORD => 'xyzzy',
};
#Instantiate new object and connect to server
my($ldapopsobj) = OSS::LDAPops->new($GLOBAL::config);
if (ref($ldapopsobj) !~ m/OSS::LDAPops/ ) {die("Error instantiating object: $ldapopsobj")};
Instantiates an object and connects to the LDAP server. Returns an object on success and false on error.
bind
#Bind to LDAP server with supplied credentials.
#
#No arguments are accepted as the pre-supplied config
#values are used.
groupexists
Check to see if a group exists.
$obj->groupexists(<group>);
Returns 0 when the group does not exist. Returns 2 when the group does exists. Returns a text string on error.
userexists
Check if user exists.
$obj->userexists(<user>);
Returns 0 when the group does not exist. Returns 2 when the group does exists. Returns a text string on error.
searchuser
Search for a users entry in the directory.
$obj->searchuser(<userid>);
(the wildcard * can be used)
Returns an array of Net::LDAP:Entry objects on success Returns false on no results. Returns an error string on error.
searchnetgroup
Search for a netgroup entry in the directory.
#$obj->searchnetgroup(<group>);
(the wildcard * can be used)
Returns an array of Net::LDAP:Entry objects on success Returns false on no results. Returns an error string on error.
addhost
Add a host entry to the directory
$obj->addhost(<hostname>);
Returns a text string on error Returns false on success
addhostgroup
Add a host group entry to the directory
$obj->addhostgroup(<hostname>);
Returns a text string on error Returns false on success
addusergroup
Add a user group entry to the directory
$obj->addusergroup(<groupname>);
Returns a text string on error Returns false on success
adduser
Add a user entry to the directory
$obj->adduser(<username>);
Returns a text string on error Returns false on success
updatepw
Add a user entry to the directory
$obj->updatepw(<username>,<password>,<force reset on login [1|0]>);
Returns a text string on error Returns false on success
addusertoug
Add a user entry to a user group
$obj->addusertoug(<username>,<group>);
Returns a text string on error Returns false on success
deluserfromug
Del a user from a user gorup
$obj->deluserfromug(<username>,<group>);
Returns a text string on error Returns false on success
addhosttohg
Add a host to a host group
$obj->addhosttohg(<host>,<group>);
Returns a text string on error Returns false on success
delhostfromhg
Delete host from host group
$obj->delhostfromhg(<host>,<group>);
Returns a text string on error Returns false on success
addusertohug
add user to host user group
$obj->addusertohug(<host>,<group>);
Returns a text string on error Returns false on success
deluserfromhug
delete user from host user group
$obj->deluserfromhug(<host>,<group>);
Returns a text string on error Returns false on success
addgrouptogroup
Add a group to a group
$obj->addggrouptogroup(<ug|hg>,<host>,<group>);
Returns a text string on error Returns false on success
delgroupfromgroup
delete group from group
$obj->delgroupfromgroup(<ug|hg>,<host>,<group>);
Returns a text string on error Returns false on success
deletedn
Delete an entry by DN (use with caution)
Used to remove users and groups by DN
WARNING: it's possible to damage the tree stucture this way!!!! get it right!!
$obj=>deletedn($dn);
Returns a text string on error. Returns false on success