smbldap-toolsを使用しない
Sambaのドメインコントローラは smb.conf に ldapsam:editposix = yes と指定してで作る
ldapsam:editposix = yes を使う場合、winbind は必須
DNSは使わない。名前解決はhostsファイルで行う。
以下を参照にやってみた。ありがとうございます。
nofuture.tv - SambaとOpenLDAPでドメインコントローラを作ってみるメモ
http://www.nofuture.tv/index.rb?SambaLdapMemo
できた。
以下、上記サイトを見たら読む必要なし。
OpenLDAPのインストール
OpenLDAPのインストール
$ sudo apt-get -y install slapd ldap-utils
スキーマファイルを登録
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"
OpenLDAPの設定
パスワードの作成
$ slappasswd -h "{MD5}"
New password:
Re-enter new password:
{MD5}X03MO1qnZdYdgyfeuILPmQ==
入力例
password
出力例
{MD5}X03MO1qnZdYdgyfeuILPmQ==
バックエンドの設定ファイルを作成
$ vi backend.ldif
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb
# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=example,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {MD5}X03MO1qnZdYdgyfeuILPmQ==
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read
バックエンドの設定を登録
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
adding new entry "olcDatabase=hdb,cn=config"
フロントエンドの設定ファイルを作成
$ vi frontend.ldif
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.com
dc: example
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:
dn: ou=users,dc=example,dc=com
objectClass: top
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=example,dc=com
objectClass: top
objectClass: organizationalUnit
ou: groups
dn: ou=idmap,dc=example,dc=com
objectClass: top
objectClass: organizationalUnit
ou: idmap
dn: ou=computers,dc=example,dc=com
objectClass: top
objectClass: organizationalUnit
ou: computers
フロントエンド設定を登録
$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f frontend.ldif
Enter LDAP Password:
adding new entry "dc=example,dc=com"
adding new entry "cn=admin,dc=example,dc=com"
adding new entry "ou=users,dc=example,dc=com"
adding new entry "ou=groups,dc=example,dc=com"
adding new entry "ou=idmap,dc=example,dc=com"
adding new entry "ou=computers,dc=example,dc=com"
パスワードを聞かれるのでpasswordと答える
Sambaのインストール
Sambaのインストール
$ sudo apt-get -y install samba samba-doc winbind
samba-docパッケージに入ってるスキーマを/etc/ldap/schema/にコピーして、解凍する
$ sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
$ sudo gzip -d /etc/ldap/schema/samba.schema.gz
schema_convert.confを作成する
$ vi schema_convert.conf
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/samba.schema
変換作業用のディレクトリ/tmp/ldif_outputを作る
$ mkdir /tmp/ldif_output
slapcatで変換して作業用ディレクトリに出力する
$ slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/cn=samba.ldif
生成された/tmp/cn\=samba.ldifを修正する
$ sudo vi /tmp/cn=samba.ldif
以下の部分の{12}を削除
dn: cn={12}samba,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {12}samba
以下のように変更する
dn: cn=samba,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: samba
ファイルの後部にある以下の部分をすべて削除
structuralObjectClass: olcSchemaConfig
entryUUID: f53006b4-ff77-102f-96ef-cf67afd330fc
creatorsName: cn=config
createTimestamp: 20110420085726Z
entryCSN: 20110420085726.009508Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20110420085726Z
修正した/tmp/cn=samba.ldifをを登録
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/cn\=samba.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=samba,cn=schema,cn=config"
Sambaの設定ファイルsamba_indexes.ldifを作成する
$ vi samba_indexes.ldif
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub
samba_indexes.ldifを登録
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f samba_indexes.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}hdb,cn=config"
LDAPの認証の設定
LDAPの認証
$ sudo apt-get -y install libnss-ldap
ldap-auth-configの設定
LDAP server Uniform Resource Identifier: → ldapi:///
Distinguished name of the search base: → dc=example,dc=com
LDAP version to use: → 3
Make local root Database admin: → Yes
Does the LDAP database require login? → No
LDAP account for root: → cn=admin,dc=example,dc=com
LDAP root account password: → password
やり直すときは sudo dpkg-reconfigure ldap-auth-config
nsswitch.confの設定を変更
$ sudo auth-client-config -t nss -p lac_ldap
/etc/auth-client-config/profile.d/acc-defaultの[ldap_example]以下をldap-auth-configの[lac_ldap]以下にコピペする
$ vi /etc/auth-client-config/profile.d/acc-default
$ sudo vi /etc/auth-client-config/profile.d/ldap-auth-config
[lac_ldap]
nss_passwd=passwd: files ldap
nss_group=group: files ldap
nss_shadow=shadow: files ldap
nss_netgroup=netgroup: nis
pam_auth=auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
pam_account=account sufficient pam_unix.so
account sufficient pam_ldap.so
account required pam_deny.so
pam_password=password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password sufficient pam_unix.so nullok md5 shadow use_authtok
password sufficient pam_ldap.so use_first_pass
password required pam_deny.so
pam_session=session required pam_limits.so
session required pam_unix.so
session optional pam_ldap.so
/etc/auth-client-config/profile.d/ldap-auth-configに以下1行追加する
$ sudo vi /etc/auth-client-config/profile.d/ldap-auth-config
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
PAM プロファイルを有効化する
$ sudo pam-auth-update
全て選択する
Sambaの設定
Sambaの設定
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
$ sudo vi /etc/samba/smb.conf
以下コメントアウトする
38行目
workgroup = WORKGROUP
110行目
passdb backend = tdbsam
112行目
obey pam restrictions = yes
以下の内容を追記
[global]
dos charset = CP932
unix charset = UTF-8
workgroup = EXAMPLE
wins support = Yes
passdb backend = ldapsam
obey pam restrictions = Yes
domain logons = Yes
os level = 65
domain master = Auto
preferred master = Auto
local master = Yes
ldapsam:editposix = yes
ldapsam:trusted = yes
ldap admin dn = cn=admin,dc=example,dc=com
ldap suffix = dc=example,dc=com
ldap group suffix = ou=groups
ldap machine suffix = ou=computers
ldap user suffix = ou=users
ldap ssl = no
ldap delete dn = Yes
ldap passwd sync = Yes
ldap idmap suffix = ou=idmap
idmap backend = ldap:ldap://localhost/
idmap uid = 50000-500000
idmap gid = 50000-500000
logon home = \\%N\%U
logon path = \\%N\%U\profile
logon drive = Z:
logon script = logon.cmd
template shell = /bin/bash
template homedir = /home/%U
[netlogon]
comment = Network Logon Service
path = /srv/samba/netlogon
guest ok = yes
read only = yes
share modes = no
[homes]
# comment = %U's Home Directory
browseable = no
writeable = yes
path = %H
valid users = %S
vfs objects = recycle
recycle:repository = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude = *.tmp ~$*
/srv/samba/netlogonディレクトリをつくる
$ sudo mkdir -p /srv/samba/netlogon
winbind smbd nmbdを止める
$ sudo service smbd stop
$ sudo service nmbd stop
$ sudo service winbind stop
cn=admin,dc=example,dc=comのパスワードを設定する
小文字wオプションは引数としてパスワードを指定
大文字Wオプションはパスワード設定プロンプトが出る
ここでは小文字wオプションを使用し、引数としてパスワードを指定する
$ sudo smbpasswd -w password
Setting stored password for "cn=admin,dc=example,dc=com" in secrets.tdb
winbindを起動。
$ sudo service winbind start
初期ユーザーとグループを設定。
$ sudo net sam provision
Checking for Domain Users group.
Adding the Domain Users group.
Checking for Domain Admins group.
Adding the Domain Admins group.
Check for Administrator account.
Adding the Administrator user.
Checking for Guest user.
Adding the Guest user.
Checking Guest's group.
Adding the Domain Guests group.
smb.confにエラーがある場合、以下のエラーが出る
Provisioning works only with ldapsam backend
Administratorのパスワードを設定。
$ sudo smbpasswd Administrator
New SMB password:
Retype new SMB password:
smbdとnmbdを起動。
$ sudo service nmbd start
$ sudo service smbd start
Administratorに特権与える
$ sudo net rpc rights grant Administrator SeAddUsersPrivilege -U Administrator
Enter Administrator's password:
Successfully granted rights.
$ sudo net rpc rights grant Administrator SeMachineAccountPrivilege -U Administrator
Enter Administrator's password:
Successfully granted rights.
ドメインの情報を確認する
$ net rpc info -U Administrator
Domain Name: EXAMPLE
Domain SID: S-1-5-21-2215086774-2015019925-2070924204
Sequence number: 1303303225
Num users: 2
Num domain groups: 3
Num local groups: 0
LDAPユーザー登録
動作確認用の一般ユーザー作成
$ sudo pdbedit -a -u alice -D 'H:' -h '\\example.com\home\alice'
new password:
retype new password:
-a, --create #create user
-t, --password-from-stdin #get password from standard in
-u, --user=USER #use username
-D, --drive=STRING #set home drive
-h, --homedir=STRING #set home directory
-f, --fullname=STRING #set full name
$ sudo mkdir /home/alice
$ sudo chown alice /home/alice
LDAPユーザーの登録内容を確認
$ id alice
$ sudo pdbedit -u alice -v
$ ldapsearch -xLLL -b "dc=example,dc=com" uid=alice sn givenName cn
ログオンスクリプトをつくる
$ sudo vi /srv/samba/netlogon/logon.cmd
notepad.exe
rem コメント
rem このログオンスクリプトは、ログイン時にメモ帳を立ち上げる。
;; comment
LDAPサーバーにログインする
Winsows に administratorでログイン
C:\WINDOWS\system32\drivers\etc\hostsファイルを編集する
ldap.server.ip.address example.com
参加ドメイン名をexampleにする
ユーザー名administrator,パスpasswordで登録
ユーザー名にalice
パスワードにpassword
ログオン先にEXAMPLEを選択
マイコンピューターを右クリックして、ネットワークドライブの割り当てを行う
ドライブ番号 Z
フォルダ名 \\Virtualmachine\alice
参考
nofuture.tv - SambaとOpenLDAPでドメインコントローラを作ってみるメモ
http://www.nofuture.tv/index.rb?SambaLdapMemo
Samba PDC (lenny) - Samba-JP
http://wiki.samba.gr.jp/mediawiki/index.php?title=Samba_PDC_%28lenny%29
Samba+OpenLDAPによるドメインログオン環境
http://net-newbie.com/samba/
OpenLDAP Server
https://help.ubuntu.com/10.04/serverguide/C/openldap-server.html
Samba and LDAP
https://help.ubuntu.com/10.04/serverguide/C/samba-ldap.html
0 件のコメント:
コメントを投稿