Ubuntu Server 8.04 で Samba と LDAP を動かすメモ。けっこう間違ってるかもしれません。。。全て同じサーバで動かす例です。
お薦めサイト。

http://www.shitomi.jp/ubuntu804/ldap.html
http://www.howtoforge.com/openldap-samba-domain-co...
http://wiki.samba.gr.jp/mediawiki/index.php/Samba_...
http://furyo.on-air.ne.jp/linux/samba_with_ldap.ht...

なにやら設定ファイルがあれこれあって、ややこしいです。動作確認も Windows 相手なので手間がかかります。

|/etc/ldap.secret| LDAP 管理者用パスワード
|/etc/ldap.conf| LDAP クライアント用設定
|/etc/ldap/ldap.conf| LDAP クライアント用設定(ldapsearch) など
|/etc/ldap/slapd.conf| LDAP サーバ設定
|/etc/nsswitch.conf| ユーザ認証順設定
|/etc/auth-client-config/profile.d/| ユーザ認証設定ファイル一括設定用プロファイル
|/etc/pam.d/| ユーザ認証設定個別ファイル
|/etc/samba/smb.conf| Samba サーバ設定ファイル

LDAP Server Install

最初に LDAP サーバをインストールします。samba-doc には LDAP スキーマが入っています。
aptitude install slapd ldap-utils samba-doc
LDAP の管理者パスワードを聞いてくるので入力します。

ここで、/etc/ldap.secret が作成されて、パスワードが入ってるはずです。後でパスワードを設定しなおしてから、このファイルは消します。のこしておいても動きますが。
LDAP Server 設定
LDAP サーバ設定ファイルを変更します。このファイルは所有者が openldap.openldap になっていないとサーバが動かないので、
sudo su -m openldap
cp /etc/ldap/slapd.conf /etc/ldap/slapd.conf_ubuntu_default
vi /etc/ldap/slapd.conf
として編集します。編集後に chown してもよいです。

追加する項目。
include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/misc.schema
slapd.conf の先頭のほうにスキーマ設定があるので、Samba 用のスキーマを追加します。このファイルはあとでコピーします。

書き換える項目。
suffix          "dc=example,dc=com"
rootdn          "cn=admin,dc=example,dc=com"
rootpw {SSHA}なにやらランダムな文字列
rootpw に書き込む文字列は、専用のコマンド(slappasswd)で確認します。
slappasswd
パスワードを 2 回入力すると、{SSHA}で始まる文字列が出力されるので、それをコピー&ペーストします。

一部追加する項目。attrs 行に Samba の設定を追加します。
access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword
        by dn="cn=admin,dc=example,dc=com" write
        by anonymous auth
        by self write
        by * none
by self write を追加します。
access to *
        by dn="cn=admin,dc=example,dc=com" write
        by self write
        by * read
スキーマファイルのコピー
cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
gzip -d /etc/ldap/schema/samba.schema.gz
ls -l /etc/ldap/schema/
クライアント用設定
,/etc/ldap/ldap.conf, LDAP コマンド用設定
sudo su -m openldap
vi /etc/ldap/ldap.conf
host 127.0.0.1
base dc=example,dc=com
ldap_version 3
uri ldap://127.0.0.1/
rootbinddn cn=admin,dc=example,dc=com
LDAP サーバ再起動
/etc/init.d/slapd restart
動作確認
ldapsearch -x
以下のようなものが出れば動いていると思われます。
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.com
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.com
dc: example

# admin, example.com
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

LDAP でユーザ認証をする設定

|NSS| 認証システムの選択、優先度設定
|PAM| ユーザ認証
インストール
aptitude install libpam-ldap libnss-ldap nss-updatedb libnss-db
いろいろ聞かれます。
:LDAP Server
デフォルト (ldapi:///)
:serach base
dc=example,dc=com
:LDAP Version
3
:Make local root...
YES(デフォルト)
:...require login?
NO(デフォルト)
:LDAP root
cn=admin,dc=example,dc=com
:root passwd
LDAPのパスワード

この先は間違えると Linux にログインできなくなります。。。実際試行錯誤中になりました。。。

ログインできなくなった場合

ログインできなくなった時はシングルユーザモードで起動します。

Ubuntu 8.04 の GRUB メニューは数秒で消えます。[ ESC ] キーを押すとメニューに入れるので、再起動や電源 ON したら [ Esc ] キーに手を置いて待ち構えます。
GRUB からシングルユーザモードで起動
この編集は保存されないので、次回は通常起動します。
# [ e ] キーを押すと編集モードになります。
# カーソルキーで二行目(Kernel 行)へ移動し [ e ] キーを押します。
# 行の終わりに[スペース] single を入力します
# [ Enter ] キーを押して編集モードを抜けます
# [ b ] キーを押して起動させます。
# 途中で止まるので、。。。。メニューのどこを選んだかわすれた。。。root で中断するようなもの
# root パスワードを入力します。
# 変更した設定ファイルを元に戻します。
# exit すると起動処理を継続できます

LDAP でユーザ認証をする設定のつづき|

|/etc/auth-client-config/profile.d/| ユーザ認証設定ファイル一括設定用プロファイル
|/etc/pam.d/| ユーザ認証設定個別ファイル
|/etc/nsswitch.conf| ユーザ認証順設定
|/etc/ldap.conf| LDAP クライアント用設定
LDAP クライアント設定
vi /etc/ldap.conf
host 127.0.0.1
base dc=example,dc=com
ldap_version 3
uri ldap://127.0.0.1/
rootbinddn cn=admin,dc=example,dc=com
NSS 設定
cp /etc/nsswitch.conf /etc/nsswitch.conf_ubuntu_default
vi /etc/nsswitch.conf
3行ほど変更します。ldap files とすると、LDAP へ先に問い合わせるようになります。
passwd: files ldap
group: files ldap
shadow: files ldap
PAM 設定
ファイルを一括して変更するやりかたと、ひとつずつ変更するやりかたがあります。どちらも結果は同じです。。。たぶん。
ひとつづつ変更するやりかたでやります。
PAM 一括設定
さんこうまでに。
/etc/auth-client-config/profile.d/ に一括設定用のプロファイルがあります。いくつかサンプルファイルがあります。
ここに新規にファイルを作成して、auth-client-config コマンドを実行すると一括で反映ができます。
auth-client-config -a -p プロファイル名 設定ファイル名
PAM 個別設定
cd /etc/pam.d
mkdir backup_default
cp common* backup_default/
vi common-account
以下コメント以外の行を記述しています。
account sufficient      pam_ldap.so
account required        pam_unix.so
vi common-auth
auth    sufficient      pam_ldap.so
auth    required        pam_unix.so nullok_secure use_first_pass
vi common-password
password   sufficient   pam_unix.so nullok obscure min=4 max=8 md5
password   required     pam_ldap.so try_first_pass
vi common-session
session required        pam_unix.so
session optional        pam_ldap.so
テスト
ssh してみたりして、問題ないかテスト。
再起動
sync
reboot
問題無くログインできたら、うまくいったかもしれません。。。

Samba インストール

aptitude install samba smbclient libpam-smbpass smbldap-tools

Samba 設定

cp /etc/samba/smb.conf /etc/samba/smb.conf_ubuntu_default
vi /etc/samba/smb.conf
PDC として動かす場合です。
[global]
  dos charset = CP932
  unix charset = UTF8
  netbios name = SAMBA9
  workgroup = TEST9
  passdb backend = ldapsam
  domain logons = yes
  domain master = Yes
  preferred master = Yes
  domain master = Yes
  local master = Yes
  wins support = yes
  os level = 64
  log level = 1
  enable privileges = Yes
  store dos attributes = yes
  map archive = no

  add share command = /etc/samba/mgrshare
  change share command = /etc/samba/mgrshare
  delete share command = /etc/samba/mgrshare

  admin users = Administrator
  ldap ssl = no
  ldap admin dn = cn=admin,dc=example,dc=com
  ldap suffix = dc=example,dc=com
  ldap group suffix = ou=Groups
  ldap user suffix = ou=Users
  ldap machine suffix = ou=Computers
  ldap idmap suffix = ou=Idmap

  add user script = /usr/sbin/smbldap-useradd -m "%u"
  ldap delete dn = Yes
  delete user script = /usr/sbin/smbldap-userdel "%u"
  rename user script = /usr/sbin/smbldap-usermod -r "%unew" "%uold"
  add machine script = /usr/sbin/smbldap-useradd -w "%u"
  add group script = /usr/sbin/smbldap-groupadd -p "%g"
  delete group script = /usr/sbin/smbldap-groupdel "%g"
  add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
  delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
  set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

  ldap passwd sync = Yes
  passwd program = /usr/sbin/smbldap-passwd %u
  passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*

  logon path = \\%N\profiles\%U

  socket options = TCP_NODELAY SO_SNDBUF=8760 SO_RCVBUF=8760

#  username map = /etc/samba/smbusers

[homes]
  comment = %U's Home Directory
  browseable = no
  writeable = yes
  hide unreadable = Yes
  delete veto files = Yes
  hide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/
  vfs objects = recycle
  recycle:repository = recycle
  recycle:keeptree = yes
  recycle:versions = yes
  recycle:touch = no
  recycle:maxsize = 0
  recycle:exclude = *.tmp ~$*

[profiles]
  comment = Profile Directory
  path = /var/lib/samba/shares/profiles
  profile acls = yes
  writeable = yes
  directory mask = 0700
  create mask = 0600
  browseable = no

[netlogon]
  comment = Network Logon Service
  path = /var/lib/samba/shares/netlogon
  guest ok = yes
  writeable = no
Samba 用ディレクトリ作成
mkdir -p /var/lib/samba/shares/{netlogon,profiles,printers}
chmod 1777 /var/lib/samba/shares/profiles
chmod g+ws /var/lib/samba/shares/printers
chgrp "Print Operators" /var/lib/samba/shares/printers
Samba 再起動
/etc/init.d/samba restart
Samba パスワード設定
smbpasswd -w Samba管理者パスワード

Samba と LDAP の設定

|/etc/smbldap-tools/smbldap.conf| Samba LDAP 設定
|/etc/smbldap-tools/smbldap_bind.conf| Samba LDAP接続アカウント設定
ファイル配置
cd /usr/share/doc/smbldap-tools/examples/
cp smbldap_bind.conf /etc/smbldap-tools/
cp smbldap.conf.gz /etc/smbldap-tools/
gzip -d /etc/smbldap-tools/smbldap.conf.gz
cd /etc/smbldap-tools/
編集
cd /etc/smbldap-tools
cp smbldap_bind.conf  smbldap_bind.conf_ubuntu_default
vi smbldap_bind.conf
slaveDN="cn=admin,dc=example,dc=com"
slavePw="LDAPの管理者生パスワード"
masterDN="cn=admin,dc=example,dc=com"
masterPw="LDAPの管理者生パスワード"
cp smbldap.conf smbldap.conf_ubuntu_default
vi smbldap.conf
以下は変更する行だけです。
SID="なにやら長い数字"
SID は net コマンドで取り出してコピー&ペーストします。
net getlocalsid
変更行のつづき
sambaDomain="TEST9"
suffix="dc=example,dc=com"
mailDomain="example.com"
userSmbHome="\\SAMBA9\%U"
userProfile="\\SAMBA9\profiles\%U"
SAMBA9 となっている所は /etc/samba/smb.conf で netbios name = として設定した値です。
smbldap.conf には、他にもいろいろデフォルト値が設定できるので、ユーザ追加をする前に設定しておいたほうがよいです。

使う

Windows のユーザやグループを追加
一括で出来るコマンドがあります。
smbldap-populate -u 30000 -g 30000
確認します。
ldapsearch -x
ずらずらでてくればうまくいってるかもです。
ユーザ追加テスト
追加してみる
smbldap-useradd -a test01
smbldap-passwd test01
表示してみる
pdbedit -v test01
ユーザかわってみる
su - test01
exit
削除してみる
smbldap-userdel test01
うまくいくかな。。。

だいたいおわりかも。

コマンドなど

おもなコマンド
|smbldap-なんちゃら| LDAPユーザ管理用コマンド
|pdbedit| Samba ユーザ管理コマンド
|ldapsearch| LDAP 検索コマンド
たまに使うコマンド
|pdbedit -L| ユーザ一覧表示
|pdbeidt -v ユーザ名| 詳細情報表示
ldapsearch -x| 全部表示
|smbldap-passwd ユーザ名| パスワード設定
|smbldap-useradd -w コンピュータ名| PC 追加
スーパーユーザ追加
smbldap-useradd -a -m -G "Domain Admins,Domain Users" ユーザ名

うまくいかない場合

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

編集にはIDが必要です