App::LDAP::LDIF::User - the representation of users in LDAP
my $user = App::LDAP::LDIF::User->new( base => $base, # the OU (organization unit) which the user belongs to uid => $name, # user name userPassword => $password, # the password used by the user uidNumber => $uid, # the uid of the user gidNumber => $gid, # the gid of the user sn => [$sn], # the surname of this user ); # these 6 parameters are required # extra parameters of attributes such as title of User can be provided in constructor, too. $user->loginShell("/bin/zsh") # set zsh as the user's shell $uesr->gidNumber("27") # set the user to have 27 as group id my $entry = $user->entry # get the user as a instance of Net::LDAP::Entry my $from_entry = App::LDAP::LDIF::User->new($entry) # new from a Net::LDAP::Entry instance
App::LDAP::LDIF::User is composed of objectClass top, posixAccount, shadowAccount and inetOrgPerson.
The objectClass top is described in RFC2256 (core.schema of OpenLDAP) indicating this kind of entry MUST have objectClass.
The early versions used objectClass account rather than inetOrgPerson. Both account and inetOrgPerson are STRUCTURAL so that only one of them could be satisfied.
The objectClass posixAccount and shadowAccount are described in RFC2307 (nis.schema of OpenLDAP).
The objectClass inetOrgPerson is described in RFC2798 (inetorgperson.schema of OpenLDAP). The inetOrgPerson is derived from organizationalPerson which is derived from person.
The objectClass posixAccount and shadowAccount define userPassword MAY be an attribute of a uesr. Because App::LDAP is designed for working with pam_ldap, userPassword is defined as a required attribute here.
The objectClass inetOrgPerson is derived from organizationalPerson which is derived from person. The person defines sn MUST be a attribute of a user. Since the inetOrgPerson has sn as a required attribute.
required attributes. default [ $self->uid ]
the days from Unix Epoch that last time you changed password.
default value is calculated via Date::Calc::Delta_Days().
the minimum days that user can change their password.
the maximun days that user have to change their password.
the day that user would be warned before password to be expired
default "/home/" . $self->uid