如何通过PHP在OpenLDAP中创建具有POSIX登录能力的用户


How to create a user with POSIX login ability in OpenLDAP via PHP?

在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

支持的属性