1

以下方法用于在 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 用户的正确对象是什么?

4

1 回答 1

1

看起来您正在尝试添加不受支持的属性。inetOrgPerson 和posixAccountusername都不支持,密码属性应userPassword根据 posixAccount。

有关更多信息,请查看http://www.zytrax.com/books/ldap/ape/#objectclasses上支持的属性

于 2016-08-25T08:51:44.533 回答