Для русификации gecos из nic.schema программы net-nds/openldap-2.3.43:
code text
--- nis.schema.orig 2009-02-23 14:37:35.000000000 +0300
+++ nis.schema 2009-02-23 14:38:57.000000000 +0300
@@ -48,9 +48,9 @@
attributetype ( 1.3.6.1.1.1.1.2 NAME 'gecos'
DESC 'The GECOS field; the common name'
- EQUALITY caseIgnoreIA5Match
- SUBSTR caseIgnoreIA5SubstringsMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
attributetype ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
DESC 'The absolute path to the home directory'
Данная модификация противоречит RFC2307. Это означает, что если Вы используете программы, не умеющие работать с UTF-8 и использующие gecos, то вам надо следить за тем, чтобы символы из этого атрибута входили только в множество символов ASCII.
Для корректной работы smbldap-tools в юникодной среде необходимо применить следущий патч:
code text
--- ./smbldap_tools.pm.orig 2009-02-23 20:09:47.000000000 +0300
+++ /usr/sbin/smbldap_tools.pm 2009-02-23 20:24:04.000000000 +0300
@@ -1213,7 +1213,7 @@
return to_utf8(
-string => $arg,
- -charset => 'ISO-8859-1',
+ -charset => 'utf8',
);
}
@@ -1222,7 +1222,7 @@
return from_utf8(
-string => $arg,
- -charset => 'ISO-8859-1',
+ -charset => 'utf8',
);
}
Теперь, добавление и редактирование свойств пользователей с помощью smbldap-useradd и smbldap-usermod может вестись с использованием в т.ч. кириллицы. Дискуссию по этому поводу можно посмотреть тут:
Кодирование-декодирование в UTF-8
Патчи ниже исправляют порядок следования Имени Фамилии на Фамилию Имя Отчество в атрибуте cn и displayname, как это принято в русском языке:
code text
--- ./smbldap-useradd.orig 2009-02-23 18:22:05.000000000 +0300
+++ /usr/sbin/smbldap-useradd 2009-02-23 20:28:35.000000000 +0300
@@ -281,7 +281,7 @@
$givenName = ( utf8Encode( $Options{'N'} ) || $userName );
$userSN = ( utf8Encode( $Options{'S'} ) || $userName );
if ( $Options{'N'} and $Options{'S'} ) {
- $displayName = $userCN = "$givenName" . " $userSN";
+ $displayName = $userCN = "$userSN" . " $givenName";
}
else {
$displayName = $userCN = $userName;
code text
--- ./smbldap-usermod.orig 2009-02-23 19:20:13.000000000 +0300
+++ /usr/sbin/smbldap-usermod 2009-02-23 20:29:31.000000000 +0300
@@ -337,8 +337,8 @@
# if givenName eq sn eq username (default of smbldap-useradd), cn and displayName would
# be "username username". So we just append surname if its not default
# (there may be the very very special case of an user where those three values _are_ equal)
- $cn = "$Options{'N'}";
- $cn .= " " . $Options{'S'}
+ $cn = "$Options{'S'}";
+ $cn .= " " . $Options{'N'}
unless ( $Options{'S'} eq $Options{'N'} and $Options{'N'} eq $user );
my $push_val = utf8Encode($cn);
push( @mods, 'cn' => $push_val );
Часть этих исправлений указана мною в вики
Samba в режиме PDC с использованием LDAP — Gentoo Linux Wiki . Поскольку к вики доверия нет, то лучше уж тут пусть будет ещё одна копия, да ещё и более полная.