Для начала включим поддержку acl. Нужно для того, чтобы на расшаренных дисках наследовались права windows. Для этого в fstab добавить надо один параметр - acl:
/dev/md0 /home ext3 defaults,acl 1 2На этом ресурсе мы будем выделять пространство под сетевые диски для пользователей. Затем устанавливаем пакеты openldap, smbldap-tools и samba. Samba мы компилировали из исходников, скачав самый свежий. smbldap-tools был также скачан самый свежий. Помещаем все скрипты из пакета smbldap-tools в /usr/sbin, а конфигурационные файлы в /etc/smbldap-tools. Проверяем наличие файла samba.schema в /etc/openldap/schema/. Если нет, то обязательно добавить. В нашем случае скопировали из samba-3.5.4/examples/LDAP.
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/samba.schema //добавлена строка allow bind_v2 pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdLastSet,sambaPwdMustChange //добавлены параметры by dn="cn=root,dc=corp" write by self write by anonymous auth by * none access to * by dn="cn=root,dc=corp" write by * read loglevel 256 database bdb suffix "dc=corp" rootdn "cn=root,dc=corp" rootpw {SSHA}s9I8oj/q+vBhpzff/xORexVWcZTV1ri1 //результат работы команды slappasswd directory /var/lib/ldap index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub index sambaSID eq //добавлена строка index sambaPrimaryGroupSID eq //добавлена строка index sambaDomainName eq //добавлена строка index default subВыполняем команду slappasswd.
[root@server]# slappasswdРезультат заносим в slapd.conf, rootpw.
BASE dc=corp URI ldap://127.0.0.1/Также изменяем /etc/ldap.conf, добавив или изменив строки:
base dc=corp uri ldap://127.0.0.1/Копируем /etc/openldap/DB_CONFIG.example в /var/lib/ldap/DB_CONFIG.
[root@server]# chown ldap:ldap /var/lib/ldap/DB_CONFIG [root@server]# chmod 600 /var/lib/ldap/DB_CONFIGсоздадим файл /etc/openldap/start.ldif с таким содержанием:
dn: dc=corp objectClass: dcObject objectClass: organization o: kontora dc: corp dn: cn=root,dc=corp objectClass: organizationalRole cn: rootСоздадим начальную структуру:
[root@server]# slapadd -l /etc/openldap/start.ldifУстанавливаем владельца ldap режим доступа на каталог:
[root@server]# chown -R ldap:ldap /var/lib/ldap [root@server]# chmod 600 /var/lib/ldap/*Запускаем openldap.
[global] workgroup = CORP netbios name = PDC-SRV security = user enable privileges = yes server string = Server linux encrypt passwords = Yes unix password sync = yes ldap passwd sync = yes passwd program = /usr/sbin/smbldap-passwd -u "%u" passwd chat = "Changing *\nNew password*" %n\n "*Retype new password*" %n\n" ldap ssl = off acl map full control = True acl compatibility = auto map acl inherit = Yes nt acl support = Yes acl group control = Yes nt status support = Yes log level = 3 syslog = 0 log file = /var/log/samba/log.user%U max log size = 100000 time server = Yes socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE mangling method = hash2 Dos charset = cp866 Unix charset = utf8 display charset = utf8 logon script = logon.bat logon drive = H: logon home = \\PDC-SRV\public logon path = domain logons = Yes domain master = Yes os level = 65 preferred master = Yes wins support = yes passdb backend = ldapsam:ldap://127.0.0.1/ ldap admin dn = cn=root,dc=corp ldap suffix = dc=corp ldap group suffix = ou=Groups ldap user suffix = ou=Users ldap machine suffix = ou=Users ldap idmap suffix = ou=Idmap add user script = /usr/sbin/smbldap-useradd -m "%u" delete user script = /usr/sbin/smbldap-userdel "%u" add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%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' load printers = Yes create mask = 0640 directory mask = 0750 printing = cups printcap name = cups deadtime = 10 guest account = nobody map to guest = Bad User dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd preserve case = yes short preserve case = yes case sensitive = no [homes] comment = Home Directories browseable = no writable = yes msdfs root = Yes [netlogon] path = /home/netlogon/ browseable = No read only = yes root preexec = /opt/start %m %M %u %U %T //об этом чуть ниже... root postexec = /opt/stop %m %M %u %U %T [public] path = /home/public guest ok = yes browseable = Yes writable = yes create mask = 0660 directory mask = 0770Проверяем на наличие ошибок в конфигурации:
[root@server]# testparmТеперь о скриптах /opt/start и /opt/stop:
#!/bin/sh #start a1=$1 a2=$2 a3=$3 a4=$4 a5=$5 name=`date '+%y-%m'` echo "in $a1 $a2 $a3 $a4 $a5 `date`" >> /var/log/samba/$name-logs.log
#!/bin/sh #stop a1=$1 a2=$2 a3=$3 a4=$4 a5=$5 name=`date '+%y-%m'` echo "out $a1 $a2 $a3 $a4 $a5 `date`" >> /var/log/samba/$name-logs.logПозволяют более понятно нам сказать, кто и с какой машины вошел в домен.
[root@server]# net getlocalsidПри выполнении команды могут быть ошибки, но результат будет в конце.
slaveDN="cn=root,dc=corp" slavePw="Ваш пароль" masterDN="cn=root,dc=corp" masterPw="Ваш пароль"Устанавливаем права на эти файлы:
[root@server]# chmod 644 /etc/smbldap-tools/smbldap.conf [root@server]# chmod 600 /etc/smbldap-tools/smbldap_bind.confустанавливаем пароль администратора:
[root@server]# smbpasswd -WДалее выполнить команду:
[root@server]# smbldap-populateПри этом у нас получится готовая структура. Теперь можно запускать samba. Теперь настроим наш сервер так, чтобы он мог получать данные о пользователях с базы openldap. Для этого изменим файл /etc/nsswitch.conf, добавив параметр ldap:
passwd: files ldap shadow: files ldap group: files ldapТакже небходимо изменить /etc/pam.d/system-auth-ac:
auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_ldap.so use_first_pass //изменения auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so //изменения account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok //изменения password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session optional pam_mkhomedir.so //изменения session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so //измененияПосле этого желательно перегрузить сервер.
[root@server]# net groupmap listДолжно быть нечто похожее:
Domain Admins (S-1-5-21-2067875449-1876125111-693129624-512) -> Domain Admins Domain Users (S-1-5-21-2067875449-1876125111-693129624-513) -> users Domain Guests (S-1-5-21-2067875449-1876125111-693129624-514) -> Domain Guests Domain Computers (S-1-5-21-2067875449-1876125111-693129624-515) -> Domain Computers Administrators (S-1-5-32-544) -> Administrators Account Operators (S-1-5-32-548) -> Account Operators Print Operators (S-1-5-32-550) -> Print Operators Backup Operators (S-1-5-32-551) -> Backup Operators Replicators (S-1-5-32-552) -> ReplicatorsТеперь введем наш сервер непосредственно в домен:
[root@server]# net rpc join -S PDC-SRV -U rootТеперь наш сервер готов быть контроллером домена.
Теперь нужны удобные утилиты для управлением домена. Скачиваем с сайта Microsoft Windows Server 2003 Resource Kit Tools. Набор средств Windows Server 2003 Resource Kit Tools включает в себя набор инструментов для администраторов, разработчиков и опытных пользователей для управления службой Active Directory, групповыми политиками, сетями TCP/IP, реестрами, безопасностью, масштабируемостью и множеством других областей операционной системы Windows Server 2003.
И удобная утилита для управления базами openldap - Ldap Admin.