在OpenLDAP数据库中创建一个具有POSIX登录能力的用户。使用以下方法创建的帐户的用户可以登录任何OpenLDAP客户机linux机器。当调用这个方法时,我必须传递以下变量:
-
$ldapconn
:由ldap_connect
返回。 -
$username
:我要创建的用户名 -
$password
:登录帐号密码。
public static function createNewUser($ldapconn, $username, $password) {
if (!$ldapconn) { return false; }
require_once("LDAPConfigurator.php");
$r = ldap_bind($ldapconn, "cn=admin,dc=test,dc=com", "12345");
// Prepare data
$info = [
'cn' => $username,
'sn' => $username,
'gidNumber' => 502,
'homedirectory' => "/home/ldap/".$username,
'loginShell' => "/bin/sh",
'password' => $password,
'uidNumber' => 2333, // Can I set auto increment for this value?
'username' => $username,
'objectclass' => [
'inetOrgPerson',
'posixAccount',
'top'
]
];
// Add data to directory
$r = ldap_add($ldapconn, "cn=".$username",cn=users,ou=groups,dc=test,dc=com", $info);
return true;
}
对于设置
$info
对象,我在phpLDAPadmin中引用POSIX用户帐户中使用的属性,它们都具有required
标签。然而,我最终得到以下错误:
Warning: ldap_add(): Add: Undefined attribute type
那么,创建POSIX用户的适当$info
对象是什么?
看起来您正在尝试添加不支持的属性。inetOrgPerson和posixAccount都不支持username
,根据posixAccount, password-attribute应该是userPassword
。
有关更多信息,请查看http://www.zytrax.com/books/ldap/ape/#objectclasses