I would create a new custom objectclass "MyCompanyPerson", defining it as deriving from person, and adding or creating the attributes I wanted. Does that sound like it's what you want?
EDIT:
I'm not a world expert on this, but this is an anonymized version of what I am using today. It's annoying that there are no local-use OIDs (no way that my LDAP is ever getting connected to somebody else's), but you can request your own OID if you want.
$ for i in * ; do echo ; echo $i ; echo ; cat $i | sed 's/^/ /' ; done
mycompany.conf
include /etc/openldap/schema/oidmacros include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/samba.schema include /etc/openldap/schema/mycompany.schema
mycompany.schema
attributeType ( MyCompanyInternalTelephone-oid NAME 'MyCompanyInternalTelephone' DESC 'MyCompany Internal Telephone' EQUALITY telephoneNumberMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 SINGLE-VALUE X-ORIGIN 'Custom MyCompany Internal Telephone Directory' ) attributeType ( MyCompanyPhotoURL-oid NAME 'MyCompanyPhotoURL' DESC 'MyCompany Photo URL' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Custom MyCompany Wiki' ) objectClass ( MyCompanyPerson-oid NAME 'MyCompanyPerson' DESC 'MyCompany Person' SUP ( inetOrgPerson ) STRUCTURAL MUST ( ) MAY ( MyCompanyInternalTelephone $ MyCompanyPhotoURL $ sshPublicKey ) X-ORIGIN 'Custom MyCompany Directory' )
oidmacros
# OID Macros # # Yellowbank's IANA Assigned OID for testing objectIdentifier MyCompany 1.3.6.1.4.1.25948.1 objectIdentifier MyCompanyAT MyCompany:1 objectIdentifier MyCompanyOC MyCompany:2 objectIdentifier MyCompanyPhotoURL-oid MyCompanyAT:100 objectIdentifier MyCompanyInternalTelephone-oid MyCompanyAT:101 objectIdentifier MyCompanyPerson-oid MyCompanyOC:1
openssh.schema
# octetString SYNTAX attributetype ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' DESC 'MANDATORY: OpenSSH Public key' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) # printableString SYNTAX yes|no objectclass ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY DESC 'MANDATORY: OpenSSH LPK objectclass' MAY ( sshPublicKey $ uid ) )