1. Введение.
Данное HOWTO написано на основе Samba-LDAP-HOWTO из пакета Samba и прозрачных намеков как организовать полную интеграцию с LDAP. Что дает с последним пакетом Samba полнофункциональный NT Server (насколько он полнофункциональный сказать не могу т.к. не работал с большими доменами на основе NT) и возможность перевести пользователей с NT Server 4.0 на Samba сервер в качестве PDC без каких либо усилий со стороны пользователей.
Перед прочтением рекомендуется прочитать документацию идущую с Samba пакетом т.к. я подразумеваю ваше знание что такое Samba.
Samba 2.2.x (www.samba.org). Подойдет любая но лучше брать последнюю т.к. в ней чаще всего исправлены какие либо ошибки присутствующие в более ранних версиях. К примеру 1C Бухгалтерия (Сетевой вариант) будет работать или на Samba 2.0.x версиях или на Samba 2.2.5 и выше. Так же далее в данной документации будет приведены опции для нормальной работы этого отечественного продукта.
OpenLDAP 2.x.x (www.openldap.org) Если не хотите проблем при установке и настройке лучше берите 2.0.23 она стабильна и проста в установке. Я использую LDAP сервер 2.1.8 поскольку 2.0.23 почему-то не очень хорошо работал с SSL.
Berkeley DB 4.x (www.sleepycat.com) Необходима только если вы захотите использовать OpenLDAP 2.1.x. Ее сборка и инсталляция не рассматривается в данном HOWTO.
nss_ldap(pam_ldap) (www.padl.com) Какой из модулей взять зависит от вашего дистрибутива. Хотя при использовании pam_ldap может потребоваться nss_ldap. Мой дистрибутив не содержит pam поэтому в HOWTO рассматривается только случай с nss_ldap как более универсальный.
Stunnel (www.stunnel.org) SSL туннелирование обычных не ssl соединений. Понадобился из-за того что Samba при попытке подключиться через SSL к LDAP (2.1.8) серверу чаще всего говорила, что его там нет, хотя он присутствовал. А через stunnel нормально подключалась.
OpenSSL (www.openssl.org) Необходим для установки SSL соединений. Обычно уже присутствует в системе, но для rpm дистрибутивов необходимо установить devel пакет к OpenSSL (набор include файлов). Его установка не рассматривается в данном HOWTO.
3.1 Stunnel.
Скачиваем (берем с диска), распаковываем. Компилируем:
configure make install
Конфигурационный файл:
/usr/local/etc/stunnel/stunnel.conf # Сертификат для предоставления серверу должен быть. # Генерится при установке (make install) openssl утилитами cert = /usr/local/etc/stunnel/stunnel.pem # Отладочные опции #debug = 7 output = /var/run/stunnel/stunnel.log # Uid и Gid под которыми будет работать процесс. setuid = nobody setgid = nogroup # Установка корня процесса. Директория обычно не существует. # Поэтому ее необходимо создать. Не забудьте изменить # права чтобы stunnel с uid и gid выставленными выше мог туда писать. chroot = /var/run/stunnel/ # PID is created inside chroot jail pid = /stunnel.pid # Если вы используете stunnel в качестве редиректора # необходимо выставить в yes. No необходимо если вы # хотите использовать stunnel в качестве принимающего # ssl соединения и передающего их службам по умолчанию не # умеющих создавать ssl соединения. К примеру pop3s -> pop3. client = yes # Service-level configuration # Описывает пере адресацию с не ssl соединения на # ssl соединение. Я обычно настраиваю stunnel чтобы # он открывал сокет на localhost и передавал уже # через ssl туннель на другую машину. Как это # сделано тут. Если же убрать IP то stunnel # будет открывать соединения на всех доступных # интерфейсах. [ldaps] accept = 127.0.0.1:389 connect = 192.168.1.1:636
далее необходимо прописать stunnel в стартовые файлы системы. rc.inet1 rc.M и т.д. (примеры файлов из Slackware BSD Init ). но перед этим желательно запустить stunnel от root и посмотреть не возникают ли ошибки. Если вы все правильно сделали у вас появится stunnel.pid и stunnel.log в каталоге /var/run/stunnel/.
3.2 OpenLDAP 2.x.x.
ВНИМАНИЕ! Я собирал OpenLDAP БЕЗ SASL. По этому если у вас возникают проблемы с LDAP server из-за SASL, не спрашивайте у меня почему не работает. Я сам не знаю. Если вы обладаете информацией о том как установить и заставить правильно работать OpenLDAP с SASL, напишите мне. Я добавлю методику настройки OpenLDAP c SASL и самой библиотеки SASL в HOWTO (с указанием автора конечно).
Скачиваем (берем с диска), распаковываем. Какие опции я использовал для конфигурации перед сборкой (configure скрипт).
configure --prefix=/opt/ldap --enable-cache
prefix - указывает куда ставить OpenLDAP server по умолчанию ставится в /usr/local.
enable-cache - включить кэш полезно если у вас есть какой либо пользователь без пароля aka анонимус.
Все остальные опции на ваше усмотрение мне хватает и этих.
Компилируем:
configure --prefix=/opt/ldap --enable-cache make depend make install
После этого получаем OpenLDAP сервер собранный но не совсем работоспособный.
Конфигурационный файл сервера slapd.conf :
# Используемые схемы core содержит userPassword и organizationalUnit # samba.schema не поставляется вместе с OpenLDAP ее можно взять в # Samba пакете. Ее можно поместить к остальным схемам. include /opt/ldap/etc/openldap/schema/core.schema include /opt/ldap/etc/openldap/schema/nis.schema include /opt/ldap/etc/openldap/schema/samba.schema # pidfile файл содержащий pid slapd процесса. # argsfile файл содержащий аргументы с которыми был запущен slapd (OpenLDAP сервер). pidfile /opt/ldap/var/slapd.pid argsfile /opt/ldap/var/slapd.args # Данная опция необходима только при использовании OpenLDAP 2.1.x. # Дело в том что OpenLDAP 2.1.x по умолчанию использует только # протокол LDAPv3.Для добавления LDAPv2 необходимо указать возможность # такого подключения. У меня включена из-за LDAP реализации в postfix 1.1.11 # Так-как возможно Samba тоже использует тоже протокол LDAPv2 лучше ее включить. allow bind_v2 # ACL - ограничение доступа к OpenLDAP дереву # Ветка ou=samba,dc=ldap,dc=ru - отвечает как раз за Samba аккаунты. # Данные права позволяют писать/читать/искать данные # админам, Samba процессам. access to dn=".*,ou=samba,dc=ldap,dc=ru" by dn=".*,cn=admin,dc=ldap,dc=ru" write by dn="ou=samba,dc=ldap,dc=ru" write by self write by anonymous auth # Ветка ou=NIS,dc=ldap,dc=ru - отвечает за posix аккаунты аналог записи в passwd # Данные права позволяют писать/читать/искать данные # админам, Samba процессам, а так же пользователям изменять свои данные. # Если админ выставил пользователю пароль доступа. access to dn=".*,ou=NIS,dc=ldap,dc=ru" by dn=".*,cn=admin,dc=ldap,dc=ru" write by dn="ou=samba,dc=ldap,dc=ru" write by self write by anonymous auth # Закрывает доступ к паролям всем кроме админов. # Пользователи могут читать и изменять только свой пароль что удобно. access to attr=userPassword by self write by anonymous auth by dn=".*,cn=admin,dc=ldap,dc=ru" write by * none # Доступ на все остальное открыт только админам # И опять же пользователям и только к записи описывающая # пользователя. access to * by dn=".*,cn=admin,dc=ldap,dc=ru" write by self write by anonymous auth ####################################################################### # TLS файлы скрипт генерящий данные файлы есть в пакете с HOWTO ####################################################################### TLSCertificateFile /opt/ldap/etc/openldap/ssl/slapd.pem TLSCertificateKeyFile /opt/ldap/etc/openldap/ssl/slapd.pem # Описывает модуль в котором хранятся данные. В OpenLDAP 2.1.x используется # Berkeley DB 4.x. database bdb # Префикс - корень всей базы от которого она будет начинаться # Можно описать несколько веток причем с разными базами suffix "dc=ldap,dc=ru" # Местный супер пользователь присутствует только в версии без SASL. # Лучше хранить похешированный пароль чем открытый. # Похешировать пароль можно с помощью slappasswd к примеру MD5 алгоритмом или SHA1 rootdn "cn=admin,dc=ldap,dc=ru" rootpw secret # директория где лежит база directory /opt/ldap/var/openldap-data # выставление индексации в базе # может позволить увеличить скорость доступа # и поиска. index uid pres,eq index cn,sn pres,eq,approx,sub index objectClass eq ldap.conf # указывает откуда начинать искать BASE dc=ldap,dc=ru # URL до LDAP сервера. Возможны следующие префиксы # ldaps:// - ssl соединение , ldapi:// - ipsec, # ldap:// - нешифрованое соединение # Я использую stunnel из-за глюков у postfix при указании # здесь ldaps:// он перестает соединяться с LDAP сервером. # В документации по postfix рекомендуют использовать stunnel. URI ldap://127.0.0.1 # эти опции необходимы только при указании в URI префикса # ldaps:// # всегда требовать TLS TLS hard # файлы или файл с сертификатами TLS_CERT /opt/ldap/etc/openldap/ssl/ldap.pem TLS_KEY /opt/ldap/etc/openldap/ssl/ldap.pem # допускать самопальные сертификаты TLS_REQCERT allow
теперь мы имеем сконфигурированный OpenLDAP сервер и клиент.
Запустим сервер :
Для открытия ssl сокета сервером надо запускать сервер таким образом :
slapd -h "ldaps://" - принимать только ssl соединения на всех интерфейсах slapd -h "ldaps:// ldap://127.0.0.1" - принимать ssl соединения со всех интерфейсов и нешифрованые соединения на localhost.
Подробнее написано в man страничке.
Если сервер не запускается запустите с ключом -d 64. Данное значение позволяет увидеть какие файлы не смог открыть slapd. Вероятнее всего это будет файл с SSL сертификатом и ключом.
Приступим к генерации ключей.
Файлы необходимые для генерации сертификатов и ключей.
ldap.cnf [ req ] default_bits = 1024 encrypt_key = yes distinguished_name = req_dn x509_extensions = cert_type prompt = no [ req_dn ] C=RU ST=Russia L=Linux O=Linux LDAP OU=LDAP SSL Key CN=ldap.ru [email protected] [ cert_type ] nsCertType = client slapd.cnf [ req ] default_bits = 1024 encrypt_key = yes distinguished_name = req_dn x509_extensions = cert_type prompt = no [ req_dn ] C=RU ST=Russia L=Linux O=Linux LDAP OU=LDAP SSL Key CN=ldap.ru [email protected] [ cert_type ] nsCertType = server
После создания этих файлов создайте исполняемый файл
mkldapcert #!/bin/sh /usr/bin/openssl req -new -x509 -days 365 -nodes -config ldap.cnf -out ldap.pem -keyout ldap.pem /usr/bin/openssl req -new -x509 -days 365 -nodes -config slapd.cnf -out slapd.pem -keyout slapd.pem
и запустите его. *.cnf файлы должны лежать в той же директории что и mkldapcert на выходе получите 2 файла *.pem это файлы с сертификатами и ключами. Пропишите ldap.pem клиенту, а slapd.pem серверу.
В результате получите доступность ssl соединений с обоих сторон, что рекомендуем так же как использование вместо telnet ssh.
3.3 nss_ldap.
Наиболее сложный для установки пакет. Рекомендую брать наиболее последний. Я использовал 187 версию и на ее установку и настройку убил около 2 часов. На самом деле использовать данный пакет для полной интеграции самбы с LDAP равносильно забиванию микроскопом гвоздей. Им вполне можно заменить NIS/NIS+ так как LDAP дает большую гибкость чем даже NIS+, а так же обеспечивает ( путем ssl-соединений ) довольно хорошую безопасность а так же может быть использован не только в LAN сетях, но и в глобальных сетях. Теперь перейдем собственно к инсталляции. Выкачиваем, распаковываем.
Сборка :
configure --with-ldap-dir=/opt/ldap --with-ldap-conf-file=/opt/ldap/etc/samba/ldap.conf \ --with-ldap-secret-file=/opt/ldap/etc/samba/ldap.secret make make install
теперь обращаю ваше внимание на то что хотя ldap.conf прописан в другое место файл конфигурации(документации) лежит в /etc зайдите и перенесите. Так же там появился файл nsswitch.ldap его так же можно удалить это файл с примером что надо сделать с nsswitch.conf чтобы nss_ldap заработал.
ldap.conf ( Для nss_ldap а не для ldap клиентов! Это разные файлы. ) # Указываем IP где крутится OpenLDAP. # Я использую ssl-тунелизацию. host 127.0.0.1 # Если указываете URI host указывать не надо. Хотя как это работает не проверял URI ldap://127.0.0.1 # Базовая ветка где будет лежать NIS информация о Samba пользователях. # uid gid home dir и т.д. base ou=NIS,dc=ldap,dc=ru # Используемая версия протокола по умолчанию 3 что верно для OpenLDAP 2.1.x. # Для OpenLDAP 2.0.x лучше использовать 2. ldap_version 3 # Используется для только чтения # rootbinddn - используется для записи # В данном контексте запись не нужна. # rootbinddn можно не использовать но лучше выставить в тоже что и binddn binddn ou=samba,dc=ldap,dc=ru # Используется для только чтения # rootbindpw - который используется для записи и хранится отдельно в ldap.secret bindpw sambapw # Ветка используемая для записи в LDAP в контексте нашей задачи можно не использовать. # Если хотите использовать ldap в качестве замены NIS/NIS+ необходимо чтобы пользователь # обладал правами на запись и присутствовал в файле настройки. # Пароль rootbindpw хранится в ldap.secret. Не знаю можно ли использовать # похешированный пароль, если можно напишите мне. rootbinddn ou=samba,dc=ldap,dc=ru # далее идут различные параметры тонкой настройки # интеграция с MS AD и т.п. # смотрите сами что вам надо. # У nss_ldap и pam_ldap могут использовать один и тот-же файл конфигурации.
Теперь идет системный файл /etc/nsswitch.conf. Он есть во всех системах Linux и Solaris и по идее должен присутствовать в остальных UNIX системах. В этом файле для функционирования Samba+LDAP необходимо изменить строку :
passwd: compat files на passwd: compat files ldap
проще говоря добавить в строку с passwd ldap. Это разрешит системе при поиске пользователя заходить в LDAP.
3.4 Samba 2.2.x
Теперь приступим к установке Samba. Скачиваем последнюю стабильную версию, распаковываем.
Установка:
configure --prefix=/opt/samba --with-ldapsam make install
Это только необходимые опции. Я устанавливаю пакеты обычно в /opt директорию, что бы не забыть что и когда я ставил.
with-ldapsam - включаю поддержку LDAP.
ВНИМАНИЕ! Если ldap стоит как у меня в папке /opt/ldap а не в /usr/local то необходимо сделать линки из /opt/ldap/include (к примеру) в /usr/local/include, а таже из /opt/ldap/lib /usr/local/lib. Это необходимо чтобы конфигурационный скрипт configure нашел ldap в вашей системе. Поэтому если вы компилируете пакеты впервые лучше не трогать опцию prefix.
После того как Samba собралась идем в директорию /opt/samba/lib. Как ни странно но конфигурационный файл Samba по умолчанию лежит здесь.
Привожу smb.conf
Поясню только опции касающиеся LDAP и 1C Бухгалтерии и некоторые мало понятные опции. Приму и добавлю все действительно оптимизирующие Samba опции.
[global] ### smb options ### workgroup = LDAP server string = Samba Server with full LDAP support netbios name = server announce version = 5.1 ### file systems settings ### character set = KOI8-R client code page = 866 hide unreadable = yes ### network browsing ### # Если собираетесь ставить 1C Бухгалтерию на PDC # То os level должен быть выставлен в 255. # Если он стоит в 128 XP даже professional отберет мастер браузер # что приведет к тормозам и глюкам в сети как при ее просмотре # так и при скачивании чего либо. А так же возникнут глюки при работе с 1C Бухгалтерией. # В XP очень крива сетевая часть. Что странно при скорость 6 кб/с с Win9x # с Samba дает стабильно в двое меньше чем Win9x с Samba, обычно 230 кб/с (10 Mbit сеть). # Наиболее прямой реализацией SMB сети является WinNT. # Win2k к сожалению не наблюдал. os level = 255 local master = yes domain master = yes preferred master = yes ### WINS & name resolution ### wins support = yes ;wins server = w.x.y.z dns proxy = yes ### passwords & authentication & security ### security = domain password server = * encrypt passwords = yes null passwords = yes # отключение доступа анонимных пользователей invalid users = nobody ### domain control ### domain logons = yes ;logon script = %U.bat logon path = \\%L\Profiles\9x\%m\%U logon home = \\%L\%U ;logon home = \\%L\Profiles\NT\%m\%U logon drive = H: ### LDAP definitions ### # С OpenLDAP 2.1.x samba отказалась работать по ssl # ссылаясь на отсутствие сервера # но согласилась работать через stunnel ldap server = 127.0.0.1 # Ветка в которой хранятся samba пользователи ldap suffix = "ou=samba,dc=ldap,dc=ru" # Пользователь обладающий правом писать в ветку с samba пользователями. # Пароль выставляется smbpasswd -w пароль и хранится в secrets.tdb ldap admin dn = "ou=samba,dc=ldap,dc=ru" # Выключаем native ssl # Работает с OpenLDAP 2.0.23 ldap ssl = off ### winbind ### winbind uid = 10000-65000 winbind gid = 10000-65000 winbind separator = + ### network options ### socket options = TCP_NODELAY ### oplocks ### # Если собираетесь ставить 1C Бухгалтерию # или MS Access. И тому подобные базы такие же # сетевые как 1C Бухгалтерия необходимо # выставить эти опции как указано. # Кроме этого надо изменить # некоторые параметры ядра. # Они указаны в 5 пункте. kernel oplocks = yes level2 oplocks = no locking = no oplocks = no ### log settings ### log file = /opt/samba/var/logs/log.%m log level = 1 max log size = 50 ### shares ### [netlogon] path = /opt/samba/var/netlogon locking = no read only = yes [profiles] path = /opt/samba/var/profiles read only = no writeable = yes create mask = 0600 directory mask = 0700 [homes] comment = user homes browsable = no read only = no writeable = yes create mask = 0600 directory mask = 0700
Далее запустить samba smbd -D nmbd -D
привожу несколько ldapdiff файлов
сначала добавим пользователей и начала ветвей админов и Samba аккаунтов.
initldap dn: dc=ldap,dc=ru objectclass: dcObject objectclass: organization dc: ldap o: LDAP description: LDAP root dn: cn=admin,dc=ldap,dc=ru objectclass: organizationalRole cn: admin dn: ou=samba,dc=ldap,dc=ru objectclass: organizationalUnit ou: samba description: Samba LDAP Unit userPassword: password dn: ou=NIS,dc=ldap,dc=ru objectclass: organizationalUnit ou: NIS description: NIS LDAP Unit dn: cn=sadmin,cn=admin,dc=ldap,dc=ru objectclass: person cn: sadmin sn: root description: SysAdmin userPassword: password
Эти 2 пользователя должны быть! Видимо для совместимости с NT 4.0 Server там при свежей инсталляции они только и наблюдаются
smbldap # собственно samba account dn: uid=Administrator, ou=samba,dc=ldap,dc=ru objectclass: sambaAccount cn: Administrator uid: Administrator pwdLastSet: 0 logonTime: 0 logoffTime: 0 kickoffTime: 0 pwdCanChange: 0 smbHome: \\%N\ homeDrive: U: profilePath: \\%N\profile rid: 500 primaryGroupID: 512 lmPassword: 37D00B8EA7069F96385257124DB42069 ntPassword: 38605B8AB8F6D30AEFE8388E7D2BE319 acctFlags: [U ] # а это то что обычно лежит в passwd # в LDAP это можно найти только благодаря nss_ldap # что и позволяет полную интеграцию с LDAP, хотя и является # своего рода хинтом. dn: uid=Administrator, ou=NIS,dc=ldap,dc=ru cn: Administrator objectclass: posixAccount uid: Administrator uidNumber: 1005 gidNumber: 4 homeDirectory: /smb/home/admin dn: uid=nobody, ou=samba,dc=ldap,dc=ru cn: nobody objectclass: sambaAccount uid: nobody pwdLastSet: 0 logonTime: 0 logoffTime: 0 kickoffTime: 0 pwdCanChange: 0 smbHome: \\%N\ homeDrive: U: profilePath: \\%N\profile rid: 501 primaryGroupID: 514 lmPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX ntPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX acctFlags: [NU ] dn: uid=nobody, ou=NIS,dc=ldap,dc=ru cn:nobody objectclass: posixAccount uid: nobody uidNumber: 1006 gidNumber: 4 homeDirectory: /home/ftp
Теперь добавляем эти файлы при помощи ldapadd в LDAP базу. slapd должен быть запущен если вы используете stunnel как я он тоже должен быть запущен.
ldapadd -D "cn=admin,dc=ldap,dc=ru" -W -f файл
сначала первый затем второй.
Теперь можно добавлять пользователей : сначала нужно добавить запись вида
dn: uid=geco, ou=NIS,dc=ldap,dc=ru cn:nobody objectclass: posixAccount uid: nobody uidNumber: 1006 gidNumber: 4 homeDirectory: /smb/geco
в LDAP далее sambaAccount можно добавить с помощью smbpasswd -a geco. В результате Samba не станет матюгаться что нет такого пользователя а честно добавит его.
Для samba версии меньшей чем 2.2.7a Для этой самбы все танцы с бубном отпадают.
Причины некорректной работы и обрушения индексных файлов:
1) железо 2) файловая система 3) samba и её настройки 4) default параметры ядра 5) настройки клиента
Оговорюсь сразу, это метод не панацея, это один из возможных вариантов. Природа работы 1С не изучена и вряд ли кто-нибудь поймёт почему при практически аналогичных условиях (версии, клиенты и тп.) в первом случае всё работает на ура, во втором ни в какую. В моём случае все работает только в таких рамках
Для начала внимательно man smb.conf Приведу свой вольный перевод механизма блокировок: В случае с термином "шара" не смог найти краткий и ёмкий заменитель на русском языке.
# kernel oplocks
Булева опция используется только для UNIX где ядро поддерживает механизм oplocks (в настоящее время только IRIX и Linux 2.4.x). kernel oplocks позволяет обходить samba oplocks при обращении локального процесса или NFS операции к файлу с которым уже работает клиент Samba. Это позволяет как бы одновременно (последовательным доступом) SMB, NFS и локальными процессам совместно работать с данными (из мана: very cool feature ((: ). По умолчанию: kernel oplocks = True Не трогать эту опцию на системах, не поддерживающих ядерную блокировку. См. также: oplocks и level2 oplocks
# level2 oplocks
Эта опция управляет поддержкой read-only oplocks на шаре. Level2 позволяют клиентам Windows NT открывшим oplock файл снизить права с read-write на read-only при открытии этого файла вторым клиентом, вместо реализации полного oplocks для второго клиента. Это позволяет вновь открывшим файл (с выставленным level2 oplocks) кэшировать файл только для чтения (т.е. они не могут кэшировать запись или блокировать запросы на файл). Это не влияет на скорость доступа к не записываемым и исполняемым файлам (типа .exe). Как только один из клиентов, который имеет read-only oplock записывает этот файл, остальные клиенты предупреждаются на уровне системы (не требуется ответа о полученном предупреждении), снимается oplock с файла и он стирается из read-only кэша. Рекомендуется, чтобы этот параметр был включен, для ускорения доступа при совместном использовании данных. Больше информации по level2 oplocks см. CIFS спецификации. Обратите внимание, oplocks параметр должен быть установлен на "Истина" при использовании "Истина" у этого параметра.
# oplocks
Булева опция (Yes/No или True/False) сообщает smbd, включать/выключать oplocks на запрашиваемые файлы с какой-либо шары. Включенные oplocks улучшают скорость доступа к файлам на шарах Samba примерно на 30%, позволяя клиентам локально кэшировать файлы. Возможно отключение этой опции для ненадежных сетевых сред (это включено по умолчанию в Серверах Windows NT [*] ). Для получения дополнительной информации см. файл Speed.txt в документации к Samba. Oplocks может быть выборочно выключен на некоторых файлах шары. cм. опцию veto oplock. В некоторых системах oplocks выставляются за основу работы с файлами самой ОС. Это позволяет синхронизацию данных между всеми доступами к oplocks файлам (Samba, NFS или локальный процесс UNIX).
См. опцию kernel oplocks.
По умолчанию: oplocks = True
Теперь всё это осмыслим и вас введёт в заблуждение механизм блокировок как на уровне ядра, так и на уровне samba. Очень большое подозрение на неправильную документацию продукта микрософт, либо 1С сама выключает эту блокировку на winNT, что нам не известно [*], и как следствие полностью повторенные куски документации в samba, где идёт сравнение механизмов.
Решение:
1) Убедимся что память не битая, винт без бэдов, для ide оттюнен hdparm. Cетевые карты не должны сбоить. прокачайте по ftp и samba на сервер и обратно 1Gb файл несколько раз, при подвисании/падении скорости до значительных величин и ошибках/варнингах ядра на сетевые карты, они должны быть заменены немедленно. Лучше если каждая 1С база лежит на отдельной партиции. Файл-сервер должен содержать достаточное кол-во памяти.
2) Поставим журналируемую фс, чем решим очень много проблем. у меня базы лежат на cgi xfs и reiserfs хинт: партицию монтируйте с опцией noatime
3) Категорически настаиваю на обновлении samba до 2.2.5 [на время написание документа, это последняя версия ветки 2.2]
blocking locks = yes kernel oplocks = yes locking = no oplocks = no level2 oplocks = no posix locking = yes strict locking = no share modes = yes
хинт: при таком раскладе невозможно пользоваться 1С:Монитор для сброса пользователей (показывает нереальное кол-во пользователей). тогда прибегнем к: smbcontrol smbd close-share mybasa у вас ведь каждая база в отдельной шаре? ;) шара не пропадёт из виду и может быть спокойно задействована при обращении к ней
Обратите внимание, если 1С шара лежит на PDC:
у вас не должно быть перевыборов в сети никогда:
os level = 255
включите WINS:
wins support = yes
и пропишите на клиентах
4) если у вас базы большие, man sysctl категорически рекомендуем. вот мой /etc/sysctl.conf на работу с ~40 клиентами базы в 150-250Mb (основные)
fs/file-max=131070 net/core/rmem_default=1048576 net/core/rmem_max=1048576 net/core/wmem_default=1048576 net/core/wmem_max=1048576 kernel/shmmax=167772160 vm/bdflush=100 1000 128 256 500 6000 6000 2048 2
5) Конечно, сами клиенты должны иметь хорошее железо, особенно в сетевой части. Рихтовка win98 клиентов: Устранение неполадок -> Файловая система -> Новая семантика блокировок С w2k всё ок.
Приглашаются люди к созданию проекта "Урбос".
Цели преследуемые проектом:
1. Полная интеграция с OpenLDAP всех возможных сервисов. Это HOWTO является частью пакета документации по интеграции с LDAP. Ранее было написано HOWTO по созданию Postfix+courier-imap+OpenLDAP в связи с выходом новой версии courier-imap и собственно с неудобочитаемостью сейчас находится переработке.
2. Построение на основе OpenLDAP единых доменов аля NIS/NIS+. Возможные варианты через nss_ldap или pam_ldap. Я пока не понял как заставить добавлять пользователям shadow пароли так, чтобы это действительно работало.
3. Создание Web-интерфейса направленного на эффективное управление сервисами и LDAP доменом. На основе java и tomcat-серевера. Как наиболее универсального и технологичного языка для написания web-приложений.Что позволит установить сервер на какой угодно платформе. Главное была бы java машина.
Анатолий В. Шипицын aka norguhtar mailto:[email protected] 1-4 пункты.
Валентин С. Рябинин aka bass mailto:[email protected] 5 пункт.
Всем людям с irc.rinet.ru #lrn за интересные идеи, знания, мысли и проявленное терпение.
Валентину С. Рябинину за присланный материал по 1C Бухгалтерии включенный в данное HOWTO.