kazu-h に投稿

はじめに

RedHat Linux 9では標準パッケージでsamba2.2が提供されていますが、2003/6/8に
samba-3.0.0beta1がリリースされていて、これを利用してsambaサーバーをPDCにして
テスト運用しています。

2003/6/13現在、何点か不便なことがありますが、最新のバージョンでもなんとかテスト
運用できました。
PDCの機能についてよく理解していないので実用的なテストが出来てるか不明ですが、
興味のある方は以下をご覧ください。 (rootアカウントで行う作業が殆どですが)

samba-3.0.0beta1のPDC運用での課題

  • smbldap-toolsが殆ど使えない。
    これはsamba team 自身もいっていますが、passdbとしてldapsamを使用する
    設定にすると、LDAPデータベースのキー名の互換性がなくなり、smbaldap-
    toolsは初期データの登録以外、殆ど使えなくなります。
    互換モードとしてldapsam_compatがありますが、SIDのマッピングについて変更
    する必要がありそうだったので、互換モードと現バージョンのsmbldap-toolsを
    あきらめました。
    また、これにともなって、sambaサーバのクライアントからのパスワードの変更や
    ユーザの追加などもできなくなります。
    この辺については当面はldapbrowserとmkntpwコマンドを利用して直接変更
    することで対応しようと思っています。
    なお、3.0.0beta1のpassdbのデフォルトはldapsamなので、既にLDAPで運用
    している場合、passdbの設定を互換モードに設定するか、LDAPデータベース
    を移行するまでは、sambaサーバにログインできなくなります。

  • LDAPデータの登録が面倒。
    前述の課題と重なりますが、旧バージョンのsmbldap-toolsを使用して、LDAP
    にデータを登録したのち、いくつかのスクリプトやプログラムを利用してLDAPデータ
    の移行を行います。

LDAPのインストールと設定

RedHat Linux 9用ではLDAPがパッケージとして提供されていますのでこれを利用します。
「パッケージの追加と削除」ツールでインストールします。
LDAPの設定は/etc/openldap/slapd.confを修正します。
設定方法は他の方のを参考に、特に工夫したところはありません。

LDAPデータベースへのデータの登録

LDAPをインストールしてもデータベースが空では意味がありませんので、まず基本的な
エントリを登録します。
smbldap-toolsのなかのsmbldap-populate.plスクリプトを実行するだけです。
つぎにユーザデータとコンピュータの登録を行います。
smbldap-useradd.pl -a UserName
smbldap-useradd.pl -a -w CompName
といった具合に登録します。
データ変換後にパスワードを変更するのは大変なので、ここで各ユーザのパスワードの
変更を行います。
smbldap-passwd.pl -o UserName
としてパスワードを変更します。

LDAPデータベースへのデータの変換

上記で登録したデータはsamba-3.0beta1より以前の形式ですので、3.0beta1の環境で
利用するためにデータの変換を行います。
ユーザエントリの変換
ユーザエントリの変換はsmbldap-usershow.plスクリプトで全ユーザのデータをファイルに
書き出したのち、samba-3.0.0beta1のアーカイブを展開した配下にある、examples/LDIF/
convertSambaAccountスクリプトを適宜修正して使用してデータ形式を変換します。
変換されたファイルをldapmodifyコマンドを使用してLDAPサーバに登録しなおします。
コンピュータエントリの変換
これにはpdbedit -c -m HostName$で行います。
いくつか不要な項目が残りますが、とりあえず必要な情報は変換して登録されるようです。
グループマップの登録
3.0betaでは、いままでtdbsamデータベースでグループIDとSIDのマッピングを行っていたのを
LDAPデータベースに登録するようになりました。
smbldap-populate.plで登録された、各グループのエントリにobjectClassに
sambaSAMGroupMappingを設定したattribute、sambaSIDとしてローカルSIDに「-」と
gidNumberを設定したattribute、sambaGroupTypeにdomainをあらわす2を設定した
attributeを追加します。
この作業は、一度、smbldap-groupshow.plの出力をファイルに書き出した後、これらの
attributeをすべてのGroupsエントリに追加し、ldapmodifyコマンドでLDAPサーバに登録
しなおします。

※LDAPのデータがおかしくなったら。。
LDAPデータベースを操作しているとまれに、ldapsearchでエントリが検索できないという
現象に遭遇することがあります。
原因としては、LDAPデータベースファイルのいくつかがなぜかrootオーナになってしまうこと
で、ldapというユーザ名で起動しているLDAPサーバデーモンがデータベースファイルにアク
セス出来ない、ということらしいのですが、一度こうなると、オーナをldapに変更してもだめで、
LDAPサーバデーモンを停止させてから、rootでslapcatコマンドでデータベースを直接
バックアップしてからデータベースファイルを削除、次にslapaddコマンドでバックアップデータを
リストアし、ファイルのオーナをldapに変更し、最後に、LDAPサーバデーモンを再起動します。
これでなんとか復活するようです。

PAM(認証方法)とNSS(参照方法)の設定

ここから先は失敗するとシステムにログインできなくなると脅されますが、提供されている
サンプルを使用し、システムアカウント(rootなど)を/etc/passwd, /etc/group,
/etc/shadowに残しておく限り、最悪、LDAPサーバを停止すればなんとかなるようです。
システムの「PAM」とシステム情報(パスワード、グループなど)の「NSS」
の設定を行います。
pam_ldapとnss_ldapを入手してコンパイル、インストールし、/etc/pam.d/配下を設定します。
ここでも、他の方のを参考に、特に工夫したところはありません。

SAMBAのインストール

sambaのインストール/アップグレード自体はsamba.orgのパッケージをダウンロードしてきて、
インストールするだけです。
設定の説明については他のサイトに譲りますが、LDAP+PDCに関連する設定を含めた
当方の設定は以下のようになります。
workgroupやcharsetなど環境依存の設定は利用する環境に合わせて適宜変更して
ください。
[global]
#------ Base Options ------
unix charset = EUC-JP
dos charset = CP932
display charset = EUC-JP
# ads server = none
# realm = none
workgroup = workgroup
server string = Samba PDC
#
interfaces = eth* lo
#------ Security Options -----
security = user
hosts allow = 127. 192.168.0.
encrypt passwords = yes
update encrypted = Yes
passdb backend = ldapsam
map to guest=bad password
#当面は、smbldap-toolsが使えないので以下のpasswd関連の設定は正しく機能しない。
passwd program = /usr/local/sbin/smbldap-passwd.pl -o %u
passwd chat = *New* %n\n *Retype* %n\n *success*\n
unix password sync = yes
printer admin = Administrator
#
#------ Logging Option -----
log file = /var/log/samba/%m.log
max log size = 0
# passwd chat debug = yes
# debug level = 5
#------ Protocol Options ------
#------ Tuning Options -------
#------ Logon Options ------
#当面は、smbldap-toolsが使えないので以下の設定は正しく機能しない。
add machine script = /usr/local/sbin/smbldap-useradd.pl -w %m
# add group script = /usr/local/sbin/smbldap-groupadd.pl %g
# delete group script = /usr/local/sbin/smbldap-userdel.pl %g
# add user to group script = /usr/local/sbin/smbldap-groupmod.pl -m %u %g
# delete user from group script = /usr/local/sbin/smbldap-groupmod.pl -x %u
%g
# set primary group script = /usr/local/sbin/smbldap-groupmod.pl -w %u %g
# add user script = /usr/local/sbin/smbldap-useradd.pl -m -a %u
#
domain logons = yes
#------ Browse Option ------
os level = 65
preferred master = yes
# local master = yes
domain master = yes
#------ WINS Options ---
dns proxy = no
wins support = no
name resolve order = lmhosts hosts bcast
#------ LDAP Options -----
#suffixについてはLDAPサーバ側と設定を同じにする。
#ldap server , ldap portの設定は無くなりました。
#
ldap suffix = dc=my-domain,dc=com
# ldap user suffix = ou=Users,dc=my-domain,dc=com
# ldap group suffix = ou=Groups,dc=my-domain,dc=com
# ldap machine suffix = ou=Computers,dc=my-domain,dc=com
ldap admin dn = cn=Manager,dc=my-domain,dc=com
# ldap filter = (&(uid=%u)(objectClass=sambaSamAccount))
ldap ssl = no
# ldap passwd sync = yes
[homes]
comment = %u's Home Directories
valid users = %S
read only = No
create mask = 0664
directory mask = 0775
delete veto files = Yes
veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
browseable = No
[profiles]
comment = User profiles
path = /home/samba/profiles
create mode = 0600
directory mode = 0700
writeable = yes
browseable = no
guest ok = no
[netlogon]
comment = The domain logon service
path = /home/samba/netlogon
writeable = no
locking = no
# guest ok = no
admin users = Administrator
write list = Administrator
[print$]
path = /usr/share/samba/printers
write list = Administrator, root
guest ok = Yes
[printers]
path = /tmp
printable = Yes
browseable = No

category