作者 主題: ldap導入用戶問題  (閱讀 3067 次)

0 會員 與 1 訪客 正在閱讀本文。

lizeng

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
ldap導入用戶問題
« 於: 2013-09-22 14:30 »
hi:
    最近在搞ldap+sudo,現在遇到一個問題,就是我在導入sudo信息時會報錯,先看一下我的sudo.ldif
dn: ou=SUDOers,dc=hxc,dc=com
objectClass: top
objectClass: organizationalUnit
objectClass: sudoRole
description: SUDO Configuration Subtree
ou: SUDOers

dn: cn=defaults,dc=hxc,dc=com
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOption: requiretty
sudoOption: !visiblepw
sudoOption: env_reset

dn: cn=tang,dc=hxc,dc=com
objectClass: top
objectClass: sudoRole
cn: tang
sudoUser: tang
sudoHost: ALL
sudoRunAsUser: ALL
sudoCommand: ALL
sudoOption: !authenticate

執行 ldapadd -v -c -x -D "cn=root,dc=hxc,dc=com" -w secret -f sudoer.ldif

ldap_initialize( <DEFAULT> )
add objectClass:
        top
        organizationalUnit
        sudoRole
add description:
        SUDO Configuration Subtree
add ou:
        SUDOers
adding new entry "ou=SUDOers,dc=hxc,dc=com"
ldap_add: Invalid syntax (21)
        additional info: objectClass: value #2 invalid per syntax

add objectClass:
        top
        sudoRole
add cn:
        defaults
add description:
        Default sudoOption's go here
add sudoOption:
        requiretty
        !visiblepw
        env_reset
adding new entry "cn=defaults,dc=hxc,dc=com"
ldap_add: Invalid syntax (21)
        additional info: objectClass: value #1 invalid per syntax

add objectClass:
        top
        sudoRole
add cn:
        tang
add sudoUser:
        tang
add sudoHost:
        ALL
add sudoRunAsUser:
        ALL
add sudoCommand:
        ALL
add sudoOption:
        !authenticate
adding new entry "cn=tang,dc=hxc,dc=com"
ldap_add: Invalid syntax (21)
        additional info: objectClass: value #1 invalid per syntax

似乎在說我sudoRole這個objectClass不對,但是在slapd.conf里已經包含了sudo.schema

[root@ftp-1-253 openldap]# vi slapd.conf

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#

include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/duaconf.schema
include         /etc/openldap/schema/dyngroup.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/java.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
include         /etc/openldap/schema/ppolicy.schema
include         /etc/openldap/schema/collective.schema
include         /etc/openldap/schema/sudo.schema

再看sudo.schema
[root@ftp-1-253 openldap]# cat /etc/openldap/schema/sudo.schema
#
# OpenLDAP schema file for Sudo
# Save as /etc/openldap/schema/sudo.schema
#

attributetype ( 1.3.6.1.4.1.15953.9.1.1
    NAME 'sudoUser'
    DESC 'User(s) who may  run sudo'
    EQUALITY caseExactIA5Match
    SUBSTR caseExactIA5SubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.3.6.1.4.1.15953.9.1.2
    NAME 'sudoHost'
    DESC 'Host(s) who may run sudo'
    EQUALITY caseExactIA5Match
    SUBSTR caseExactIA5SubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.3.6.1.4.1.15953.9.1.3
    NAME 'sudoCommand'
    DESC 'Command(s) to be executed by sudo'
    EQUALITY caseExactIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.3.6.1.4.1.15953.9.1.4
    NAME 'sudoRunAs'
    DESC 'User(s) impersonated by sudo (deprecated)'
    EQUALITY caseExactIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.3.6.1.4.1.15953.9.1.5
    NAME 'sudoOption'
    DESC 'Options(s) followed by sudo'
    EQUALITY caseExactIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.3.6.1.4.1.15953.9.1.6
    NAME 'sudoRunAsUser'
    DESC 'User(s) impersonated by sudo'
    EQUALITY caseExactIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.3.6.1.4.1.15953.9.1.7
    NAME 'sudoRunAsGroup'
    DESC 'Group(s) impersonated by sudo'
    EQUALITY caseExactIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
    DESC 'Sudoer Entries'
    MUST ( cn )
    MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $
            description )
    )



請大家幫我看看到底是什麽問題呢


netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17308
    • 檢視個人資料
    • http://www.study-area.org
Re: ldap導入用戶問題
« 回覆 #1 於: 2013-09-22 18:53 »
印象中好在有大大之前有碰過,不過我忘記是在哪篇了~ 再多爬一下吧.....

lizeng

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
Re: ldap導入用戶問題
« 回覆 #2 於: 2013-09-22 19:36 »
經過不斷的分析研究,問題終於找到了,直接修改/etc/openldap/slapd.conf是不直接生效的,必須要刪除/etc/openldap/slapd.d/目錄里的內容,然後再
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d
然後重啟slapd,這時我加的
include /usr/local/etc/openldap/schema/sudo.schema
才會生效.

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17308
    • 檢視個人資料
    • http://www.study-area.org
Re: ldap導入用戶問題
« 回覆 #3 於: 2013-09-23 00:51 »
Good job!

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: ldap導入用戶問題
« 回覆 #4 於: 2013-09-24 17:09 »
2.x版開始就已經採用動態設定了,也就是一設定就生效
slaptest這個小工具就是把slpad.conf轉換成新版的設定檔,大概是這樣子.... XD

ytSKY

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
Re: ldap導入用戶問題
« 回覆 #5 於: 2013-09-25 13:38 »
所以說,雖然 2.x 版的 slapd.conf 是一設定就生效,但若是 include schema 的話
還是要透過 slaptest 的轉換,讓它在 slapd.d 的資料夾內部產生與 schema 相關的 ldif 檔
這樣才能正確使用新加入的 schema 囉?

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: ldap導入用戶問題
« 回覆 #6 於: 2013-09-25 14:13 »
所以說,雖然 2.x 版的 slapd.conf 是一設定就生效,但若是 include schema 的話
還是要透過 slaptest 的轉換,讓它在 slapd.d 的資料夾內部產生與 schema 相關的 ldif 檔
這樣才能正確使用新加入的 schema 囉?

官方文件在這 http://www.openldap.org/doc/admin24/slapdconf2.html

正確來說是2.3x版後才用這種動態配置

再簡單一點來說,如果會設定slapd.d下的config,slapd.conf這個檔可以不需要

剛剛才想到,用slaptest,好像也不需要重啟的樣子?!  文件裡我沒看到說需要重啟...

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: ldap導入用戶問題
« 回覆 #7 於: 2013-09-26 22:09 »
測試過了
使用slaptest還是要重啟slapd才會抓到新的設定  XD