(2015.6.17)
Samba 4をスタンドアロンサーバとしてファイルサーバにしたうえで、ユーザ情報を外部 LDAP サーバに置く方法。
この運用スタイルは、Samba 3 以前の古い情報はいろいろ見つかるが, 意外と Samba 4 のが見当たらない。
Active Directory は使わない。
まず, 既存のユーザ情報を LDAP に移行する。
Samba 4と OpenLDAP が, それぞれ単独できちんと動いていることが重要。
OpenLDAP のインストールはこちら; OpenLDAP の設定
データ移行の前に, 必要なスキーマ (クラス) を追加する.
rootエントリを追加する。
samba-root.ldif::
dn: dc=fruits # suffix に対しては STRUCTURAL なオブジェクト # 'organization' is a STRUCTURAL objectClass: dcObject objectClass: organization dc: fruits o: sample org
このldif を投入.
# ldapadd -x -w パスワード -D "cn=admin,dc=orange,dc=fruits" -f samba-root.ldif adding new entry "dc=fruits"
/etc/samba/smb.conf ファイルの [global]
セクションを編集する。
smbldap-populate までは, passdb backend
を変更しない。
# まだコメントアウトしない
passdb backend = tdbsam
# ここから追加
# まだコメント
# passdb backend = ldapsam:"ldap://localhost/"
ldap admin dn = cn=admin,dc=orange,dc=fruits
ldap suffix = dc=orange,dc=fruits
ldap user suffix = ou=people
# ou=でなければならない. cn=groupsとすると, ou=cn=groups
ldap group suffix = ou=groups
ldap machine suffix = ou=hosts
ldap idmap suffix = ou=idmap
ldap ssl = no
# ここまで追加
それぞれの意味;
ldap admin dn | LDAPサーバの管理者の DN (Distinguished Name). ldap suffix 値は追加されない。 |
ldap suffix | |
ldap group suffix | ldap suffix 値が付加される |
ldap idmap suffix | ldap suffix 値が付加される |
ldap machine suffix | ldap suffix 値が付加される |
ldap user suffix | ldap suffix 値が付加される |
LDAP adminパスワードを設定. secrets.tdb
ファイルに保存される。
# smbpasswd -w パスワード Setting stored password for "cn=admin,dc=orange,dc=fruits" in secrets.tdb
Samba-LDAP連携のツール集。yum コマンドでインストールする。
# yum install smbldap-tools
対話形式で初期設定する. 上の ldap suffix
などの値と合わせること。
# smbldap-config
とはいうものの, 自動的に, /etc/samba/smb.conf ファイルの値が初期値になっている。ほとんどは [Enter]キーで進んでいい。変更するのは 'ldap master bind password' ぐらい。ldap master bind dn [cn=admin,dc=orange,dc=fruits]
のパスワード。
Fedora 22 Linux の場合, /etc/smbldap-tools/smbldap.conf ファイルと /etc/smbldap-tools/smbldap_bind.conf ファイルが更新される。
LDAP内に必要なツリーを作成させる。
# smbldap-populate Populating LDAP directory for domain MYGROUP (S-1-5-21-xxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx) (using builtin directory structure) adding new entry: dc=orange,dc=fruits adding new entry: ou=people,dc=orange,dc=fruits adding new entry: ou=cn=groups,dc=orange,dc=fruits adding new entry: ou=hosts,dc=orange,dc=fruits adding new entry: ou=idmap,dc=orange,dc=fruits adding new entry: sambaDomainName=MYGROUP,dc=orange,dc=fruits adding new entry: uid=root,ou=people,dc=orange,dc=fruits adding new entry: uid=nobody,ou=people,dc=orange,dc=fruits adding new entry: cn=Domain Admins,ou=cn=groups,dc=orange,dc=fruits adding new entry: cn=Domain Users,ou=cn=groups,dc=orange,dc=fruits adding new entry: cn=Domain Guests,ou=cn=groups,dc=orange,dc=fruits adding new entry: cn=Domain Computers,ou=cn=groups,dc=orange,dc=fruits adding new entry: cn=Administrators,ou=cn=groups,dc=orange,dc=fruits adding new entry: cn=Account Operators,ou=cn=groups,dc=orange,dc=fruits adding new entry: cn=Print Operators,ou=cn=groups,dc=orange,dc=fruits adding new entry: cn=Backup Operators,ou=cn=groups,dc=orange,dc=fruits adding new entry: cn=Replicators,ou=cn=groups,dc=orange,dc=fruits Please provide a password for the domain root: Changing UNIX and samba passwords for root New password: パスワードを入力 Retype new password:
JXplorer などで、ツリーを確認してみよう。
既存のアカウント (ユーザ) 情報を移行
# pdbedit -i tdbsam -e ldapsam:ldap://localhost Importing account for xxxx...ok Importing account for xxxx...ok
ようやく, smb.conf ファイルで LDAP を有効にする。passdb backend
を変更する。
Sambaを再起動。共有フォルダにアクセスできる??
JXplorer などでエントリを見ると、
ところで, Zimbra による LDAP では、userPassword
アトリビュートにパスワードが格納される。共通化できない。
userPassword アトリビュートは, inetOrgPerson -> organizationalPerson -> person クラスで定められている。
ユーザの追加は smbldap-useradd コマンド. ホスト名などをいちいちコマンドラインで指定する必要はない。
# smbldap-useradd -a nasuser1
パスワード変更は smbldap-passwd.