Windows認証 (LDAP,LDAP Replication + SAMBA,PDC,BDC) on Debian ホスト設定 vim /etc/hosts 127.0.0.1 ldap1.com # 192.168.24.71 ldap1.com mail.ldap1.com 192.168.24.72 ldap2.com mail.ldap2.com 以下PDCのみのLDAPとSAMBA設定 以下インストール aptitude install slapd ldap-utils libldap-dev aptitude install samba smbclient swat smbldap-tools samba-doc aptitude install migrationtools zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema 以下で得たMD5をslapd.confのrootpwに適用する。 ldap1:/etc/ldap# slappasswd -s PASSWORD -h {MD5} {MD5}MZ9NJuPFNrXdhxuyxS4xeA== vim /etc/ldap/slapd.conf include /etc/ldap/schema/samba.schema #add suffix "dc=ldap1,dc=com" #change rootdn "cn=admin,dc=ldap1,dc=com" #change rootpw {MD5}k3pcIXcHEYMlTicw3RGw7w== #add #検索用 index objectClass eq index uid,uidNumber,gidNumber,memberUid eq index cn,mail,surname,givenname eq,subinitial index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq # アクセス制限 他のaccessはコメントアウト access to attrs=userPassword,sambaNTPassword,sambaLMPassword by self write by dn="cn=admin,dc=ldap1,dc=com" write by anonymous auth by * none access to * by dn="cn=admin,dc=ldap1,dc=com" write by self write by * read 以下設定、ldapsearchで見るLDAP、BDCを設定する場合は以下をBDCのLDAPに向ける。 vim /etc/ldap/ldap.conf BASE dc=ldap1, dc=com #change URI ldap://ldap1.com #change LDAP起動 /etc/init.d/slapd restart 以下sambaの設定 vim /etc/samba/smb.conf [global] workgroup = MYDOMAIN dos charset = CP932 unix charset = UTF-8 display charset = UTF-8 netbios name = PDC security = user domain logons = yes domain master = yes local master = yes os level = 64 #PDCのため値を大きくしておく。BDCはこの数値以下にしておく preferred master = yes wins support = yes logon path = logon home = #Sambaのアドミンユーザー admin users = Administrator passdb backend = ldapsam:ldap://ldap1.com/ ldap suffix = dc=ldap1, dc=com ldap admin dn = cn=admin,dc=ldap1,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=People # リナックスとWindwosのパスワード同期 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*up dated* # windows managerからの変更のため add user script = /usr/sbin/smbldap-useradd -m "%u" ldap delete dn = Yes delete user script = /usr/sbin/smbldap-userdel "%u" 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" interfaces = 192.168.24.0/24 127.0.0.1 eth0 guest account = nobody #ログインした際に時間を合わせたりするスクリプト等を置く場所 [netlogon] comment = Network Logon Service path = /home/samba/netlogon guest ok = yes writable = no share modes = no #プロファイル情報格納場所 [profiles] comment = Users profiles path = /home/samba/profiles guest ok = no browseable = no create mask = 0600 directory mask = 0700 #[printers] # comment = All Printers # browseable = no # path = /var/spool/samba # printable = yes # public = no # writable = no # create mode = 0700 #[print$] # comment = Printer Drivers # path = /var/lib/samba/printers # browseable = yes # read only = yes # guest ok = no [homes] comment = Home Directories path = %H/samba #change writable = yes #change browseable = no vfs objects = recycle #add ごみ箱設定 recycle:repository = .recycle #add  recycle:keeptree = no #add recycle:versions = yes #add recycle:touch = no #add recycle:maxsize = 0  #add recycle:exclude = *.tmp ~$* #add load printers = no                 #プリンタは不要 disable spoolss = yes mkdir -p /home/samba/netlogon mkdir -p /home/samba/profiles chown -R nobody /home/samba chmod 1777 /home/samba/profiles 以下でチェック testparm 既存ユーザーのsambaディレクトリの作成 mkdir /etc/skel/samba vi mkhomedir.sh for user in `ls /home` do id $user > /dev/null 2>&1 [ $? -eq 0 ] && \ [ ! -d /home/$user/samba ] && \ mkdir /home/$user/samba && \ chown $user:$user /home/$user/samba && \ echo "/home/$user/samba create" done sh mkhomedir.sh vi /etc/cron.weekly/recyclewatch #!/bin/bash for user in `ls /home/` do if [ -d /home/$user/samba/.recycle ]; then tmpwatch -f 720 /home/$user/samba/.recycle/ fi done chmod +x /etc/cron.weekly/recyclewatch #プリンターエラーの対応 touch /etc/printcap /etc/init.d/samba start SambaとLDAPの認証パスワードの設定ツール zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf 以下で得たSIDをsmbldap.conに適用 net getlocalsid vim /etc/smbldap-tools/smbldap.conf SID="S-1-5-21-3869316386-1369744062-3351931823" #change, get sid from command as "net getlocalsid" sambaDomain="MYDOMAIN" # change ldapTLS="0" # change #verify="require" #cafile="/etc/opt/IDEALX/smbldap-tools/ca.pem" #clientcert="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.pem" #clientkey="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.key" usersdn="ou=People,${suffix}" hash_encrypt="CRYPT" #change #defaultMaxPasswordAge="45" suffix="dc=ldap1,dc=com" #change sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}" #change userSmbHome="\\PDC\%U" #change userProfile="\\PDC\profiles\%U" #change userHomeDrive="Z:" #change ネットワークドライブ名 mailDomain="ldap1.com" #change 上記の項目でslaveLDAPとmasterLDAPはPDCとBDCを設定する場合にはそれぞれのIPを設定しておく vim /etc/smbldap-tools/smbldap_bind.conf slaveDN="cn=admin,dc=ldap1,dc=com" slavePw="PASSWORD" masterDN="cn=admin,dc=ldap1,dc=com" masterPw="PASSWORD" LDAPにサンバ初期化登録 smbldap-populate 以下でSambaアドミニストレーターを設定 getent passwd getent group で アドミンやドメイングループの確認をして以下設定 smbldap-populate -a Administrator -k 998 -m 512 smbldap-passwd Administrator サンバのアドミンパスワード設定 smbpasswd -w PASSWORD 以下でユーザー登録 -a 追加 -m ディレクトリを作成 smbldap-useradd -a -m sakai PASSWORD smbldap-passwd sakai ディレクトリごと削除 -r で以下削除可能 smbldap-userdel -r sakai 以下でLDAPのユーザを認識、id等で確認可能 apt-get install libnss-ldap vim /etc/libnss-ldap.conf vim /etc/nsswitch.conf passwd: compat ldap group: compat ldap shadow: compat ldap サーバーのSSH等もLDAPで管理したい場合は、PAMを設定 apt-get install libpam-ldap vim /etc/pam_ldap.conf vim /etc/pam.d/common-auth auth sufficient pam_ldap.so vim /etc/pam.d/common-account auth sufficient pam_ldap.so WindowsでMy Computerの右クリック、DomainをChangeをクリックして、ユーザー名にAdministrator、設定したパスワードを入力してドメインに登録する。 再起動後、ユーザー名(sakai)とパスワードでログイン == LDAPのレプリケーション設定 - slave ssh 192.168.24.72 rm -rf /var/lib/ldap/* suffix "dc=ldap1,dc=com" #change rootdn "cn=admin,dc=ldap1,dc=com" #change rootpw PASSWORD #change vim /etc/ldap/slapd.conf updatedn cn=admin,dc=ldap1,dc=com updateref ldap://ldap1.com - master ssh 192.168.24.71 /etc/init.d/slapd stop 以下LDAP情報をコピー scp /var/lib/ldap/* 192.168.24.72:/var/lib/ldap/. vim /etc/ldap/slapd.conf replogfile /var/lib/ldap/replog replica uri=ldap://ldap2.com:389 binddn="cn=admin,dc=ldap1,dc=com" bindmethod=simple credentials=PASSWORD - slave chown -R openldap:openldap /var/lib/ldap/ apt-get install libnss-ldap /etc/libnss-ldap.conf base dc=ldap1,dc=com uri ldap://ldap2.com/   #BDCのためにスレーブを見る用にしておく ldap_version 3 rootbinddn cn=admin,dc=ldap1,dc=com - master and slave /etc/init.d/slapd start ==BDCの設定 - slave マスターから設定ファイルをコピー scp 192.167.24.71:/etc/samba/smb.conf /etc/samba/. 以下書き換える vim /etc/samba/smb.conf passdb backend = ldapsam:ldap://ldap2.com/  #スレーブを見るようにしておく domain master = no os level = 33 #PDCより下げておく。Windowsのデフォルトが32なので33にあたりにしておく。' wins support = no wins server = 192.168.24.71 smbpasswd -w PASSWORD 自分のLDAPを見るようにしておく vim /etc/ldap/ldap.conf BASE dc=ldap1, dc=com URI ldap://ldap2.com PDCを落としてWindowsからDomainで入れるか確認、以下のログファイルでBDCが昇格したことを確認 cd /var/log/samba/ ============================= その他LDAP用コマンド 以下既存のユーザーをLDAPにmigrationする際のツール vim /usr/share/migrationtools/migrate_common.ph $DEFAULT_MAIL_DOMAIN = "ldap1.com"; #add $DEFAULT_BASE = "dc=ldap1,dc=com"; #add $DEFAULT_MAIL_HOST = "mail.ldap1.com"; #add 以下のLDAPの基本情報等を登録 vi base.ldif dn: dc=ldap1,dc=com objectClass: dcObject objectclass: organization o: ldap1 Organization dc: ldap1 dn: cn=admin, dc=ldap1,dc=com objectclass: organizationalRole cn:admin dn: ou=People,dc=ldap1,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=ldap1,dc=com objectClass: organizationalUnit ou: Group ldapadd -h localhost -x -D "cn=admin,dc=ldap1,dc=com" -W -f base.ldif ldapsearch -x -b 'dc=test,dc=com' uid=test1 ldapmodify -x -Dcn=admin,dc=test,dc=com -W -f add.ldif vim add.ldif dn: uid=test1,ou=People,dc=test,dc=com changetype: modify add: userPassword userPassword: PASSWORD ============================= == subversion と Apache Basic Authentication as LdAP aptitude install subversion libapache2-svn mkdir /var/svn svnadmin create --fs-type fsfs /var/svn chown -R www-data:513 /var/svn cd /tmp svn checkout http://localhost/svn ln -s /etc/apache2/mods-available/authnz_ldap.load /etc/apache2/mods-enabled/authnz_ldap.load ln -s /etc/apache2/mods-available/ldap.load /etc/apache2/mods-enabled/ldap.load vim /etc/apache2/mods-enabled/dav_svn.conf DAV svn SVNPath /var/svn AuthType Basic AuthName "LDAP Auth" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL ldap://test.com/ou=People,dc=test,dc=com?uid?sub?(objectclass=posixAccount) Require valid-user svn checkout http://localhost/svn svn import http://localhost/svn -m "init" cd svn touch test.txt svn add test.txt svn commit -m "up test.txt" svn checkout http://localhost/svn/ Authentication realm: LDAP Auth Password for 'root': 以下でも可。SSHの証明書をauthorized_keysに加えてパスワード入力なし設定をしてもOK. svn checkout svn+ssh://localhost/var/svn == CVS apt-get install cvs mkdir /var/cvs chown -R root:513 /var/cvs export CVSROOT=/var/cvs cvs init SSHの証明書をauthorized_keysに加えてパスワード入力なし設定をしてもOK. export CVSROOT=:ext:sakai@192.168.24.71:/var/cvs