Следующий метод используется для создания пользователя с возможностью входа в систему POSIX в базе данных OpenLDAP. Пользователи, имеющие учетную запись, созданную следующим способом, могут войти в систему на любой клиентской машине 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
я ссылаюсь на атрибуты, используемые в учетной записи пользователя POSIX в phpLDAPadmin, и все они имеют метку required
. Однако, наконец, я получаю следующую ошибку:
Warning: ldap_add(): Add: Undefined attribute type
Так что же является правильным объектом $info
для создания пользователя POSIX?