Следующий метод используется для создания пользователя с POSIX возможность входа в базу данных OpenLDAP. Пользователи, имеющие учетную запись, созданную следующим способом, могут войти в систему на любом клиентском компьютере с ОС OpenLDAP. При вызове этого метода я должен передать следующие переменные:
$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
объект, я ссылаюсь на атрибуты, используемые в учетной записи пользователя POSIX в phpLDAPadmin и все они имеют required
этикетка. Тем не менее, я, наконец, получаю следующую ошибку:
Warning: ldap_add(): Add: Undefined attribute type
Так что же такое $info
объект для создания пользователя POSIX?
Похоже, вы пытаетесь добавить атрибут, который не поддерживается. username
не поддерживается ни inetOrgPerson, ни posixAccount, а атрибут пароля должен быть userPassword
согласно posixAccount.
Для получения дополнительной информации посмотрите поддерживаемые атрибуты на http://www.zytrax.com/books/ldap/ape/#objectclasses
Других решений пока нет …