以下方法用于在 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;
}
为了设置对象,我在phpLDAPadmin$info中引用了 POSIX 用户帐户中使用的属性,它们都有标签。但是,我最终收到以下错误:required
Warning: ldap_add(): Add: Undefined attribute type
那么$info创建 POSIX 用户的正确对象是什么?