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
デフォルト (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 にログインできなくなります。。。実際試行錯誤中になりました。。。
smbldap.conf には、他にもいろいろデフォルト値が設定できるので、ユーザ追加をする前に設定しておいたほうがよいです。
お薦めサイト。
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 サーバをインストールします。samba-doc には LDAP スキーマが入っています。
ここで、/etc/ldap.secret が作成されて、パスワードが入ってるはずです。後でパスワードを設定しなおしてから、このファイルは消します。のこしておいても動きますが。
aptitude install slapd ldap-utils samba-docLDAP の管理者パスワードを聞いてくるので入力します。
ここで、/etc/ldap.secret が作成されて、パスワードが入ってるはずです。後でパスワードを設定しなおしてから、このファイルは消します。のこしておいても動きますが。
LDAP サーバ設定ファイルを変更します。このファイルは所有者が openldap.openldap になっていないとサーバが動かないので、
追加する項目。
書き換える項目。
一部追加する項目。attrs 行に Samba の設定を追加します。
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.schemaslapd.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 * noneby 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
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
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 ] キーに手を置いて待ち構えます。
Ubuntu 8.04 の GRUB メニューは数秒で消えます。[ ESC ] キーを押すとメニューに入れるので、再起動や電源 ON したら [ Esc ] キーに手を置いて待ち構えます。
この編集は保存されないので、次回は通常起動します。
# [ e ] キーを押すと編集モードになります。
# カーソルキーで二行目(Kernel 行)へ移動し [ e ] キーを押します。
# 行の終わりに[スペース] single を入力します
# [ Enter ] キーを押して編集モードを抜けます
# [ b ] キーを押して起動させます。
# 途中で止まるので、。。。。メニューのどこを選んだかわすれた。。。root で中断するようなもの
# root パスワードを入力します。
# 変更した設定ファイルを元に戻します。
# exit すると起動処理を継続できます
# [ e ] キーを押すと編集モードになります。
# カーソルキーで二行目(Kernel 行)へ移動し [ e ] キーを押します。
# 行の終わりに[スペース] single を入力します
# [ Enter ] キーを押して編集モードを抜けます
# [ b ] キーを押して起動させます。
# 途中で止まるので、。。。。メニューのどこを選んだかわすれた。。。root で中断するようなもの
# root パスワードを入力します。
# 変更した設定ファイルを元に戻します。
# exit すると起動処理を継続できます
|/etc/auth-client-config/profile.d/| ユーザ認証設定ファイル一括設定用プロファイル
|/etc/pam.d/| ユーザ認証設定個別ファイル
|/etc/nsswitch.conf| ユーザ認証順設定
|/etc/ldap.conf| LDAP クライアント用設定
|/etc/pam.d/| ユーザ認証設定個別ファイル
|/etc/nsswitch.conf| ユーザ認証順設定
|/etc/ldap.conf| 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
cp /etc/nsswitch.conf /etc/nsswitch.conf_ubuntu_default vi /etc/nsswitch.conf3行ほど変更します。ldap files とすると、LDAP へ先に問い合わせるようになります。
passwd: files ldap group: files ldap shadow: files ldap
さんこうまでに。
/etc/auth-client-config/profile.d/ に一括設定用のプロファイルがあります。いくつかサンプルファイルがあります。
ここに新規にファイルを作成して、auth-client-config コマンドを実行すると一括で反映ができます。
/etc/auth-client-config/profile.d/ に一括設定用のプロファイルがあります。いくつかサンプルファイルがあります。
ここに新規にファイルを作成して、auth-client-config コマンドを実行すると一括で反映ができます。
auth-client-config -a -p プロファイル名 設定ファイル名
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
cp /etc/samba/smb.conf /etc/samba/smb.conf_ubuntu_default vi /etc/samba/smb.confPDC として動かす場合です。
[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
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
|/etc/smbldap-tools/smbldap.conf| Samba LDAP 設定
|/etc/smbldap-tools/smbldap_bind.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 には、他にもいろいろデフォルト値が設定できるので、ユーザ追加をする前に設定しておいたほうがよいです。
一括で出来るコマンドがあります。
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-なんちゃら| 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" ユーザ名
コメントをかく