smbldap-toolsでちょっと戸惑う

smbldap-toolsでエラーになったこと
$ sudo smbldap-useradd -a test
Use of uninitialized value in concatenation (.) or string at /usr/share/perl5/smbldap_tools.pm line 879.
Can’t call method “get_value” on an undefined value at /usr/sbin/smbldap-useradd line 204.
ldapの検索で引っかかっている?
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 fd=14 ACCEPT from IP=172.16.241.103:42801 (IP=0.0.0.0:389)
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=0 BIND dn=”cn=Manager,dc=yatao,dc=local” method=128
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=0 BIND dn=”cn=Manager,dc=yatao,dc=local” mech=SIMPLE ssf=0
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=0 RESULT tag=97 err=0 text=
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=1 SRCH base=”dc=yatao,dc=local” scope=2 deref=2 filter=”(&(objectClass=posixAccount)(uid=testuser))”
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=2 SRCH base=”sambaDomainName=yatao.local,dc=yatao,dc=local” scope=0 deref=2 filter=”(objectClass=sambaUnixIdPool)”
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=3 MOD dn=”sambaDomainName=yatao.local,dc=yatao,dc=local”
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=3 MOD attr=uidNumber
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=3 RESULT tag=103 err=0 text=
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=4 SRCH base=”dc=yatao,dc=local” scope=2 deref=2 filter=”(uidNumber=1005)”
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=4 SEARCH RESULT tag=101 err=0 nentries=0 text=
Jul 9 08:43:40 sacrifice slapd[15885]: conn=1 fd=19 ACCEPT from IP=172.16.241.103:42802 (IP=0.0.0.0:389)
Jul 9 08:43:40 sacrifice slapd[15885]: conn=1 op=0 BIND dn=”cn=Manager,dc=yatao,dc=local” method=128
Jul 9 08:43:40 sacrifice slapd[15885]: conn=1 op=0 BIND dn=”cn=Manager,dc=yatao,dc=local” mech=SIMPLE ssf=0
Jul 9 08:43:40 sacrifice slapd[15885]: conn=1 op=0 RESULT tag=97 err=0 text=
Jul 9 08:43:40 sacrifice slapd[15885]: conn=1 op=1 SRCH base=”dc=yatao,dc=local” scope=2 deref=0 filter=”(&(objectClass=posixAccount)(uidNumber=1005))”
Jul 9 08:43:40 sacrifice slapd[15885]: conn=1 op=1 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
Jul 9 08:43:40 sacrifice slapd[15885]: conn=1 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=5 SRCH base=”ou=Group,dc=yatao,dc=local” scope=2 deref=2 filter=”(&(objectClass=posixGroup)(?gidNumber=))”
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 op=5 SEARCH RESULT tag=101 err=0 nentries=0 text=value does not conform to assertion syntax
Jul 9 08:43:40 sacrifice slapd[15885]: conn=0 fd=14 closed (connection lost)
Jul 9 08:43:40 sacrifice slapd[15885]: conn=1 fd=19 closed (connection lost)
/usr/sbin/smbldap-useradd
/usr/share/perl5/smbldap_tools.pm
二つのファイルを読みながら30分悩んだ。
defaultUserGidというキーワードを発見、早速調べてみるとやはりこれではまっていた人が多いみたい。
defaultComputerGidという設定もあるのだが、現状で登録端末無いからとりあえず無指定としたがけどsmbldap-useraddは-aオプションで登録が完了することを確認。
一段落。
続いてsmbldap-passwdも。
defaultMaxPasswordAgeを指定しなくちゃ駄目です。
Use of uninitialized value in string at /usr/sbin/smbldap-passwd line 277, line 2.
Failed to modify UNIX password: shadowMax: value #0 invalid per syntax at /usr/sbin/smbldap-passwd line 285,
line 2.
こんな感じで注意を受けます。
端末の登録
$ sudo smbldap-useradd -w pdc-demo
Use of uninitialized value in substitution (s///) at /usr/sbin/smbldap-useradd line 241.
Use of uninitialized value in string at /usr/share/perl5/smbldap_tools.pm line 544.
failed to add entry: gidNumber: value #0 invalid per syntax at /usr/share/perl5/smbldap_tools.pm line 560.
またですねぇ。。
どうもsmbldap.confの内容に不足があるみたい。
userHomeやuserLoginShellもちゃんと書いておくことを前提としているのですね。
普通に処理されているので、さわらない方が良いのかもしれませんが誤りっぽいところを発見。(問題とは一切関係なさそう)
smbldap-tools 0.9.4-1のsmbldap_tools.pmより
# success = add_posix_machine($user, $uid, $gid)
sub add_posix_machine
{
my ($user,$uid,$gid,$wait) = @_;
if (!defined $wait) {
$wait=0;
}
# bind to a directory with dn and password
my $add = $ldap->add ( “uid=$user,$config{computersdn}”,
attr => [
#’objectclass’ => [‘top’, ‘person’, ‘organizationalPerson’, ‘inetOrgPerson’, ‘posixAccount’],
‘objectclass’ => [‘top’, ‘account’, ‘posixAccount’],
‘cn’ => “$user”,
#’sn’ => “$user”,
‘uid’ => “$user”,
‘uidNumber’ => “$uid”,
‘gidNumber’ => “$gid”,
‘homeDirectory’ => ‘/dev/null’,
‘loginShell’ => ‘/bin/false’,
‘description’ => ‘Computer’,
‘gecos’ => ‘Computer’, # < ==ここのカンマはおかしくないですか? ] ); $add->code && warn “failed to add entry: “, $add->error ; #ここが560行
sleep($wait);
return 1;
}
そんなこんなで、最低限必要と思われる/etc/smbldap-tools/smbldap.confの内容
SID=”S-1-5-21-2216866858-1619610787-4081851776″
sambaDomain=”reptec.local”
masterLDAP=”sacrifice.reptec.local”
masterPort=”389″
ldapTLS=”0″
suffix=”dc=reptec,dc=local”
usersdn=”ou=People,${suffix}”
computersdn=”ou=Machine,${suffix}”
groupsdn=”ou=Group,${suffix}”
sambaUnixIdPooldn=”sambaDomainName=${sambaDomain},${suffix}”
scope=”sub”
hash_encrypt=”SSHA”
userLoginShell=”/bin/false”
userHome=”/home/%U”
userHomeDirectoryMode=”700″
userGecos=”System User”
skeletonDir=”/etc/skel”
defaultUserGid=”513″
defaultComputerGid=”553″
defaultMaxPasswordAge=”0″

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です