1
以下方法用於在OpenLDAP數據庫中創建具有POSIX登錄能力的用戶。擁有通過以下方法創建的帳戶的用戶可以登錄任何OpenLDAP客戶端Linux機器。在調用此方法時,必須通過以下變量:如何通過PHP在OpenLDAP中創建一個具有POSIX登錄功能的用戶?
$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用戶?
測試後,我發現,'uid'用於在'phpLDAPadmin'設置'用戶Name'。另外,如果我評論'gidNumber','homedirectory','loginshell'和'posixAccount',錯誤將會消失。而且,你是正確的'密碼'應該是'userPassword',但是如何將加密設置爲'md5'? – Casper
我只是做了一個快速搜索,這應該給你一個想法如何加密密碼:http://blog.michael.kuron-germany.de/2012/07/hashing-and-verifying-ldap-passwords-in- php/ – heiglandreas
非常感謝!我已經發現如何通過'md5'加密密碼。 – Casper