Archive:Настройка SUSE 10.1 как Samba PDC

Перейти к: навигация, поиск
Icon-obsolete.png Эта статья актуальна для версии '10.1', которая теперь является устаревшей!
Пожалуйста, обратитесь к странице обсуждения этой статьи для получения подробной информации.

Введение

Это пошаговое руководство по настройке системы GNU/Linux для работы с Samba, OpenLDAP, DHCP, DNS и ClamAV на примере OpenSUSE Linux 10.1. Это руководство можно использовать для любого другого дистрибутива GNU/Linux.

Статья, описывающая то же для SUSE Linux Professional 9.3, находится здесь

Установка необходимого ПО

Если у вас установленна рабочая версия OpenSUSE 10.1, то в неё необходимо дополнительно установить несколько пакетов. Для этого удобнее всего - использовать YaST (для запуска введите в консоли команду yast2). Ниже приведен список необходимых пакетов:

samba-client
samba-doc
samba
samba-pdb
samba-winbind
yast2-samba-client
yast2-samba-server
samba-vscan
bind
bind-chroot
openldap2
openldap2-client
nss_ldap
perl-ldap
smbldap-tools

Настройка сервера

Настройка Samba

Переместим старый smb.conf в безопастное место:

# cd /etc/samba/
# mv smb.conf smb.conf.OLD

Сейчас, используя свой любимый редактор ascii editor, отредактируйте или создайте новый smb.conf в папке /etc/samba и измените или добавьте следующие строки. Заметьте что в опции workgroup, если foobar.tld длинее чем 15 символов, Samba обрежет его! Я рекомендую создавать файл smb.conf с нуля, как показано внизу:

# Определение имени домена и узла
####################################################
[global]
workgroup = foobar.tld
netbios name = bar
# Настройки ldapsam backend database #################################################### passdb backend = ldapsam:ldap://127.0.0.1 username map = /etc/samba/smbusers
# Настройки системы печати #################################################### printcap name = cups printing = cups
# Путь к скрипту IDEALX (его коснемся позже) #################################################### add user script = /usr/local/sbin/smbldap-useradd -m %u delete user script = /usr/local/sbin/smbldap-userdel %u add group script = /usr/local/sbin/smbldap-groupadd -p %g delete group script = /usr/local/sbin/smbldap-groupdel %g add user to group script = /usr/local/sbin/smbldap-groupmod -m %g %u delete user from group script = /usr/local/sbin/smbldap-groupmod -x %g %u set primary group script = /usr/local/sbin/smbldap-usermod -g %g %u add machine script = /usr/local/sbin/smbldap-useradd -w %u
# если вы хотите добавлять машины в домен автоматически добавьте этот скрипт: # add machine script = /usr/local/sbin/smbldap-useradd -w -i %u # испытано на SUSE 10.0 # # Другие разнообразные директивы ( man smb.conf ) #################################################### obey pam restrictions = Yes logon script = scripts\logon.bat logon path = \\%L\Profiles\%U logon drive = H: logon home = \\%L\%U domain logons = Yes os level = 44 preferred master = Yes domain master = Yes dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd show add printer wizard = yes
# OpenLDAP настройки определяются здесь ################################################### ldap suffix = dc=foobar,dc=tld ldap machine suffix = ou=Computers ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap idmap suffix = ou=Users ldap admin dn = cn=Manager,dc=foobar,dc=tld ldap ssl = no ldap passwd sync = Yes idmap uid = 15000-20000 idmap gid = 15000-20000
# Задание настоек журналирования #################################################### log level = 2 log file = /var/log/samba/%m.log
# Определение настроек сканирования вирусов #################################################### vfs object = vscan-clamav vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
# Настройки домашних директорий #################################################### [homes] comment = Home Directories valid users = %S read only = No browseable = No
# Определение принтеров #################################################### [printers] comment = All Printers path = /var/spool/samba printer admin = @"Print Operators" read only = Yes guest ok = Yes printable = Yes browseable = No
# Драйвера для принтера #################################################### [print$] path = /var/lib/samba/drivers/ guest ok = No browseable = Yes read only = Yes valid users = @"Print Operators" write list = @"Print Operators" create mask = 0664 directory mask = 0775
# Настройка службы сетевого входа (logon) #################################################### [netlogon] comment = NLService path = /var/lib/samba/netlogon guest ok = Yes browseable = No
# Ресурс профилей ( для переносимых профилей ) #################################################### [profiles] comment = Roaming Profiles path = /var/lib/samba/profiles create mask = 0600 directory mask = 0700 browseable = No guest ok = Yes force user = %U valid users = %U "Domain Admins" read only = No profile acls = Yes
# Определение разделенных ресурсов #################################################### [share] comment = data share path = /opt/stuff valid users = %U

Воспользовавшись вашим любимым редактором ascii editor, правим файл smbusers в папке /etc/samba и изменяем или добавим ( исключаю добавленнных по умолчанию ) следующие строки:

root = Administrator

Теперь давайте разберемся с часть IDEALX которую вы видели в smb.conf, итак объяснение такое: "IDEALX скрипты это коллекция user{add,del,mod} и group{add,del,mod} системных утилит ( скриптов ) для манипулирования пользователями и группами сохраненными в LDAP каталоге".

Итак, копируем эти скрипты в соответствующие директории:

# cd /usr/share/doc/packages/samba/examples/LDAP/smbldap-tools-*/
# cp smbldap-* /usr/local/sbin

Сейчас давайте проверим нашу конфигурацию на корректность, вы должны получить вывод как показан ниже:

# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[netlogon]"
Processing section "[profiles]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions

Далее установим для Samba права доступа, чтобы можно было создавать переносимые профили:

# chmod 1777 /var/lib/samba/profiles

Теперь запустим службы Samba :

# rcsmb start
# rcnmb start

И список ресурсов на вашем сервере такой:

# smbclient -L localhost -N
added interface ip=192.168.1.104 bcast=192.168.1.255 nmask=255.255.255.0
Anonymous login successful
Domain=[FOOBAR.TLD] OS=[Unix] Server=[Samba 3.0.12-5-SUSE]
Sharename Type Comment --------- ---- ------- profiles Disk Roaming Profiles share Disk share IPC$ IPC IPC Service (Samba 3.0.12-5-SUSE) ADMIN$ IPC IPC Service (Samba 3.0.12-5-SUSE) Anonymous login successful Domain=[FOOBAR.TLD] OS=[Unix] Server=[Samba 3.0.12-5-SUSE]
Server Comment --------- ------- BAR Samba 3.0.12-5-SUSE
Workgroup Master --------- ------- FOOBAR.TLD BAR
Настройка OpenLDAP

Воспользуйтесь вашим любимым ascii редактором, изменим файл slapd.conf в /etc/openldap каталоге и изменим или добавим следующие строки ( я рекомендую создавать файл slapd.conf с нуля ):

# Определение схем и расположения файлов
################################################################
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/samba3.schema
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args
# Настройка вашей базы и пользователя админа + пароль ################################################################ database bdb suffix "dc=foobar,dc=tld" rootdn "cn=Manager,dc=foobar,dc=tld" rootpw secret directory /var/lib/ldap
# Индексация для ускорения отклика ( неверный индекс может только ухудшить дело ) ################################################################# index objectClass eq index cn pres,sub,eq index sn pres,sub,eq index uid pres,sub,eq index displayName pres,sub,eq index uidNumber eq index gidNumber eq index memberUid eq index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq index default sub
# Настройки списков контроля доступа (ACL) для доступа к различным частям вашей # базы. Вы можете и обойтись и без ACL, но немного безопасности не повредит # Предотвратим просмотр пользовательских паролей, рабочих номеров ... и т.д. ###################################################################### access to attr=userpassword,clearpassword,ldappassword by anonymous auth by self write by dn="cn=Manager,dc=foobar,dc=tld" write by * none
access to * by dn="cn=Manager,dc=foobar,dc=tld" write by users read by self write by * read

Вы должны отредактировать файл чтобы он выглядел как представлено ниже, убедитесь что есть строка samba3.schema в файле /etc/openldap/schema каталога ( список каталогов вы видели ). Если у вас этого нет установите пакет с именем samba-client.

Следующим шагом настройки OpenLDAP конфигурации вам необходимо создать иерархию в вашем домене OpenLDAP. Вы используете скрипты IDEALX для заселения LDAP дерева, первое что необходимо создать каталог smbldap-tools внутри каталога /etc и скопировать smbldap.conf, smbldap_bind.conf из каталога /usr/share/doc/packages/samba/examples/LDAP/smbldap-tools-0.8.7/:

# cd /usr/share/doc/packages/samba/examples/LDAP/smbldap-tools-0.8.7/
# cp smbldap_bind.conf /etc/smbldap-tools
# cp smbldap.conf /etc/smbldap-tools
# cp smbldap_tools.pm /usr/local/sbin
# chmod 644 /usr/local/sbin/smbldap_tools.pm
# cd /etc/smbldap-tools
# chmod 644 smbldap.conf
# chmod 600 smbldap_bind.conf  

Снова используем ваш ascii редактор, правим файл smbldap.conf в каталоге /etc/smbldap-tools и изменяем или добавляем следующие строки ( я рекомндую создавать файл smbldap.conf с нуля ):

# Узнав ваш номер SID по выводу команды net getlocalsid
# И вставляем его ниже
###############################################################
SID="S-1-5-21-2139989288-483860436-2398042574"
slaveLDAP="127.0.0.1" slavePort="389" masterLDAP="127.0.0.1" masterPort="389" ldapTLS="0" verify="require" cafile="/etc/smbldap-tools/ca.pem" clientcert="/etc/smbldap-tools/smbldap-tools.pem" clientkey="/etc/smbldap-tools/smbldap-tools.key" suffix="dc=example,dc=tld" usersdn="ou=Users,${suffix}" computersdn="ou=Computers,${suffix}" groupsdn="ou=Groups,${suffix}" idmapdn="ou=Idmap,${suffix}" sambaUnixIdPooldn="sambaDomainName=foobar.tld,${suffix}" scope="sub" hash_encrypt="SSHA" crypt_salt_format="%s" userLoginShell="/bin/bash" userHome="/home/%U" userGecos="System User" defaultUserGid="513" defaultComputerGid="515" skeletonDir="/etc/skel" defaultMaxPasswordAge="99" userSmbHome="\\BAR\homes\%U" userProfile="\\BAR\profiles\%U" userHomeDrive="H:" userScript="%U.cmd" mailDomain="foobar.tld" with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" with_slappasswd="0" slappasswd="/usr/sbin/slappasswd"

Используя ваш любимый ascii редактор, правим файл smbldap_tools.pm в каталоге /usr/local/sbin и изменим или добавим такие строки:

my $smbldap_conf="/etc/smbldap-tools/smbldap.conf";
my $smbldap_bind_conf="/etc/smbldap-tools/smbldap_bind.conf";

Снова в ascii редактор, редактируем файл smbldap_bind.conf в каталоге /etc/smbldap-tools и приавм или добавляем строки:

slaveDN="cn=Manager,dc=example,dc=tld"
slavePw="secret"
masterDN="cn=Manager,dc=example,dc=tld"
masterPw="secret"

И в который раз, снова в ваш ascii редактор, изменяем файл smbldap-populate в каталоге /usr/local/sbin и изменяем или добавим следующие строки ( по умолчанию есть Administrator, но у меня были проблемы с этим аккаунтом во время присоединения рабочей станции к домену, поэтому ниже в конфигурации samba мы определим root как Administrator и вам необходимо использовать пользователя с uid=0 для присоединения рабочей станции к домену. Если у вас есть решение как использовать пользователя не с uid равным 0 пожалуйста в свободное время сообщите мне и я изменю эту часть в статье ):

my $adminName = $Options{'a'};
if (!defined($adminName)) {
  $adminName = "Admin";
}

Изменив файл smbldap-populate, вам необходимо вам необходимо запустить его из директории /usr/local/sbin, но перед этим запустите сервер LDAP ( вам надо убедиться что вывод команд как здесь ):

# rcldap start
# /usr/local/sbin/smbldap-populate
Using workgroup name from sambaUnixIdPooldn (smbldap.conf): sambaDomainName=foobar.tld
Using builtin directory structure
adding new entry: dc=fooobar,dc=tld
adding new entry: ou=Users,dc=foobar,dc=tld
adding new entry: ou=Groups,dc=foobar,dc=tld
adding new entry: ou=Computers,dc=foobar,dc=tld
adding new entry: ou=Idmap,dc=foobar,dc=tld
adding new entry: sambaDomainName=foobar.tld,dc=foobar,dc=tld
adding new entry: uid=Admin,ou=Users,dc=foobar,dc=tld
adding new entry: uid=nobody,ou=Users,dc=foobar,dc=tld
adding new entry: cn=Domain Admins,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Domain Users,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Domain Guests,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Domain Computers,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Administrators,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Print Operators,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Backup Operators,ou=Groups,dc=foobar,dc=tld

Перед использованием нашей базы ldap убедимся что все что нужно было создано, вы должны получить вывод как здесь:

# slapcat
dn: dc=foobar,dc=tld
objectClass: dcObject
objectClass: organization
o: foobar
dc: foobar
structuralObjectClass: organization
entryUUID: fc296908-e259-1027-9686-c73f68847b0c
creatorsName: cn=Manager,dc=foobar,dc=tld
createTimestamp: 20040124014007Z
entryCSN: 20040124014007Z#000001#00#000000
modifiersName: cn=Manager,dc=foobar,dc=tld
modifyTimestamp: 20040124014007Z
dn: ou=Users,dc=foobar,dc=tld objectClass: organizationalUnit ou: Users structuralObjectClass: organizationalUnit entryUUID: fc4bf504-e259-1027-9687-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014007Z entryCSN: 20040124014007Z#000002#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014007Z
dn: ou=Groups,dc=foobar,dc=tld objectClass: organizationalUnit ou: Groups structuralObjectClass: organizationalUnit entryUUID: fc4e6cb2-e259-1027-9688-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014007Z entryCSN: 20040124014007Z#000003#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014007Z
dn: ou=Computers,dc=foobar,dc=tld objectClass: organizationalUnit ou: Computers structuralObjectClass: organizationalUnit entryUUID: fc55504a-e259-1027-9689-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000001#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: ou=Idmap,dc=foobar,dc=tld objectClass: organizationalUnit ou: Idmap structuralObjectClass: organizationalUnit entryUUID: fc58a128-e259-1027-968a-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000002#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: sambaDomainName=efoobar.tld,dc=foobar,dc=tld objectClass: sambaDomain objectClass: sambaUnixIdPool sambaDomainName: example.tld sambaSID: S-1-5-21-2139989288-483860436-2398042574 uidNumber: 1000 gidNumber: 1000 structuralObjectClass: sambaDomain entryUUID: fc5fcfac-e259-1027-968b-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000003#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: uid=Admin,ou=Users,dc=foobar,dc=tld cn: Admin sn: Admin objectClass: inetOrgPerson objectClass: sambaSamAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 512 uid: Admin uidNumber: 998 homeDirectory: /home/Admin sambaPwdLastSet: 0 sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 2147483647 sambaHomePath: \\bar\homes\Admin sambaHomeDrive: H: sambaProfilePath: \\bar\profiles\Admin\ sambaPrimaryGroupSID: S-1-5-21-2139989288-483860436-2398042574-512 sambaLMPassword: XXX sambaNTPassword: XXX sambaAcctFlags: [U ] sambaSID: S-1-5-21-2139989288-483860436-2398042574-2996 loginShell: /bin/false gecos: Netbios Domain Administrator structuralObjectClass: inetOrgPerson entryUUID: fc9199a6-e259-1027-968c-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000004#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: uid=nobody,ou=Users,dc=foobar,dc=tld cn: nobody sn: nobody objectClass: inetOrgPerson objectClass: sambaSamAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 514 uid: nobody uidNumber: 999 homeDirectory: /dev/null sambaPwdLastSet: 0 sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 2147483647 sambaHomePath: \\bar\homes\nobody sambaHomeDrive: H: sambaProfilePath: \\bar\profiles\nobody sambaPrimaryGroupSID: S-1-5-21-2139989288-483860436-2398042574-514 sambaLMPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX sambaNTPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX sambaAcctFlags: [NU ] sambaSID: S-1-5-21-2139989288-483860436-2398042574-2998 loginShell: /bin/false structuralObjectClass: inetOrgPerson entryUUID: fcbe3362-e259-1027-968d-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000005#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: cn=Domain Admins,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 512 cn: Domain Admins memberUid: Admin description: Netbios Domain Administrators sambaSID: S-1-5-21-2139989288-483860436-2398042574-512 sambaGroupType: 2 displayName: Domain Admins structuralObjectClass: posixGroup entryUUID: fcc7222e-e259-1027-968e-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000006#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: cn=Domain Users,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 513 cn: Domain Users description: Netbios Domain Users sambaSID: S-1-5-21-2139989288-483860436-2398042574-513 sambaGroupType: 2 displayName: Domain Users structuralObjectClass: posixGroup entryUUID: fceb2534-e259-1027-968f-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000007#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: cn=Domain Guests,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 514 cn: Domain Guests description: Netbios Domain Guests Users sambaSID: S-1-5-21-2139989288-483860436-2398042574-514 sambaGroupType: 2 displayName: Domain Guests structuralObjectClass: posixGroup entryUUID: fcf449fc-e259-1027-9690-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000001#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Domain Computers,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 515 cn: Domain Computers description: Netbios Domain Computers accounts sambaSID: S-1-5-21-2139989288-483860436-2398042574-515 sambaGroupType: 2 displayName: Domain Computers structuralObjectClass: posixGroup entryUUID: fcfe6612-e259-1027-9691-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000002#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Administrators,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 544 cn: Administrators description: Netbios Domain Members can fully administer the computer/sambaDomainName sambaSID: S-1-5-32-544 sambaGroupType: 5 displayName: Administrators structuralObjectClass: posixGroup entryUUID: fd077900-e259-1027-9692-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000003#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Print Operators,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 550 cn: Print Operators description: Netbios Domain Print Operators sambaSID: S-1-5-32-550 sambaGroupType: 5 displayName: Print Operators structuralObjectClass: posixGroup entryUUID: fd1062c2-e259-1027-9693-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000004#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Backup Operators,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 551 cn: Backup Operators description: Netbios Domain Members can bypass file security to back up files sambaSID: S-1-5-32-551 sambaGroupType: 5 displayName: Backup Operators structuralObjectClass: posixGroup entryUUID: fd181b16-e259-1027-9694-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000005#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Replicators,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 552 cn: Replicators description: Netbios Domain Supports file replication in a sambaDomainName sambaSID: S-1-5-32-552 sambaGroupType: 5 displayName: Replicators structuralObjectClass: posixGroup entryUUID: fd211446-e259-1027-9695-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000006#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z

Теперь запустим/перезапустим демонов:

# rcldap start
# rcsmb start
# rcnmb start

Давайте добавим еще несколько аккаунтов в вашу базу LDAP: первым вам необходимо добавить root для SAMBA, потому что подключение клиентских машин в домен требует использования аккаунта administrator ( пользователя с uid 0 ) и второе что необходимо добавить LDAP пароль в файл secrets.tdb для того чтобы SAMBA могла обновлять базу LDAP:

# smbpasswd -a root
# smbpasswd -w secret
Сохраним пароли для "cn=Manager,dc=foobar,dc=tld" в secrets.tdb

Заметьте, команда smbpasswd -w secret для того чтобы SAMBA могла использовать обновление в базе LDAP, достичь того же определив в файле slapd.conf под rootpw директивой.

Используя скрипты IDEALX для добавления пользователей/групп ... и т.д. в LDAP которые будут использоваться с SAMBA:

# smbldap-useradd -a USERNAME

Для того чтобы заставить систему авторизироваться через LDAP и использовать их posix аккаунты сохраненные в LDAP для SAMBA, вам необходимо настроить вашу систему выполнять авторизацию через LDAP для локальных и удаленных подключений.

Итак используем YaST для настройки вашей системы как LDAP клиента:

Yastldap.png

Снова открываем ваш любимый ascii редактор, правим файл nsswitch.conf в папке /etc/ и изменяем следующие строки:

passwd: files ldap
group: files ldap

Сейчас просмотрите список элементов в административной базе, использует ли ваша система использует обе, локальную и LDAP ( если вы еще не добавили аккаунты тогда будет не менее двух Admin и nobody ):

# getent passwd
+::0:0:::
Admin:x:998:512:Netbios Domain Administrator:/home/Admin:/bin/false
nobody:x:999:514:nobody:/dev/null:/bin/false

Если все что описано выше вам необходимо выполнить более двух раз, то необходимо подумать о автоматизации, первое создадим каталог scripts в каталоге /etc/samba:

# echo session required pam_mkhomedir.so skel=/etc/skel umask=0022 >>/etc/pam.d/common-session

Фу-у, теперь остальное вы можете доделать сами :D !!

Настройка динамического DNS

Предварительные шаги

Для того чтобы создать вашу dynDNS инфраструктуру нам необходимо сделать несколько вещей до настоящей настройки пары серверов DHCP и DNS для динамического обновления. Первое нам необходимо создать ключ (key) который будет использоваться для безопастного обмена между серверами DHCP и DNS.

Для создания ключа (key) и файла который декларирует ключ key выполните следующие команды:

# cd /etc
# genDDNSkey

Это по умолчанию создаст файл с именем named.keys с ключом DHCP_UPDATER, конечно вы можете выбрать другие ключи key и файл ( для этого почитайте руководство ):

# genDDNSkey --key-file=/ur/path --key-name MY_KEY_NAME

Когда ключ (key) был создан, вам необходимо сказать демонам DHCP и DNS использовать этот файл до того как они будут запущены в ограниченном окружении ( chroot jail).

Воспользуйтесь вашим ascii редактором, правим файл dhcpd в каталоге /etc/sysconfig и изменим или добавим следующие директивы:

DHCPD_CONF_INCLUDE_FILES="/etc/named.keys"

Также правим файл named в папке /etc/sysconfig:

NAMED_CONF_INCLUDE_FILES="/etc/named.keys"

Теперь можно двигаться к настройке вашего DHCP и DNS серверов.

Настройка DHCP

Используя ascii редактор, редактируем файл dhcpd.conf в каталоге /etc и изменяем или добавим следющие строки ( я рекомендую вам создать файл dhcpd.conf с нуля ). Также для IP адреса значения произвольные, вы те которые соответствуют вашему случаю:

# Файл с ключом мы будем использовать для безопастного обновления файлов зон
###########################################################
include "/etc/named.keys";
# Наш сервер авторитетный ######################################################### server-identifier bar.foobar.tld; authoritative;
# Спецификация зоны ########################################### zone foobar.forward { primary 192.168.1.104; key DHCP_UPDATER; } zone foobar.reverse { primary 192.168.1.104; key DHCP_UPDATER; }
# Различные опции ######################################## default-lease-time 86400; max-lease-time 172800;
option domain-name "foobar.tld"; option domain-name-servers 192.168.1.104;
ignore client-updates; ddns-domainname "foobar.tld"; ddns-updates on; ddns-update-style interim;
# Определение сетевых настроек ( range ... ) ################################################# subnet 192.168.1.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.1.10 192.168.1.254; zone foobar.tld { primary 127.0.0.1; key DHCP_UPDATER; } zone 1.168.192.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; } option subnet-mask 255.255.255.0; option routers 192.168.1.1; one-lease-per-client on; }

Конфигурация выше резервирует предел от 1 - 10 для зарезервированных жесткого заданных (hard-wired IP) адресов, и динамически распределяться будут адреса из 10 - 254.

Настройка сервера имен

Используем ваш любимый ascii редактор, правим файл named.conf в каталоге /etc и изменим или добавим строки ( я рекомендую создать named.conf файл заново ). Также как в примере выше с DHCP, значения и пределы выборочные и вы используйте нужные вам.

# Подключим файл с ключом
#################################################
include "/etc/named.keys";
# Доступ (Access Control Lists) ################################################# acl mynet { 192.168.1.0/24; 127.0.0.1; };
# Различные настройки ################################################# options { directory "/var/lib/named"; allow-query { mynet; }; forwarders { 83.139.64.3; }; };
# Объявления зон ################################################# zone "localhost" in { type master; file "localhost.zone"; };
zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.zone"; };
zone "." in { type hint; file "root.hint"; };
# Оъявлене прямой зоны foobar.tld ################################################# zone "foobar.tld" { type master; file "dyn/foobar.forward"; allow-update { key DHCP_UPDATER; }; allow-query { mynet; }; allow-transfer { mynet; }; };
# Объявление обратной зоны foobar.tld ################################################# zone "1.168.192.in-addr.arpa" { type master; file "dyn/foobar.reverse"; allow-update { key DHCP_UPDATER; }; allow-query { mynet; }; allow-transfer { mynet; }; };

Создав файл named.conf, вы должны создать/настроить файлы с зонами.

Воспользуемся ascii редактором, создаем файл foobar.forward в каталоге /var/lib/named/dyn и изменим или добавим следующее ( рекомендую вам создать файл foobar.forward с нуля ).

$TTL 5D
@               IN SOA  bar.foobar.tld. root.foobar.tld. (
                                        200524085  ; serial
                                        3H         ; refresh
                                        1H         ; retry
                                        1W         ; expire
                                        5D )       ; minimum
@ NS bar.foobar.tld.
bar A 192.168.1.104

Вновь в ваш любимый ascii редактор, создаем файл foobar.reverse в каталоге /var/lib/named/dyn и добавим следующее:

$TTL 5D
@                      IN SOA  bar.foobar.tld. root.foobar.tld. (
                                200524086  ; serial
                                3H         ; refresh
                                1H         ; retry
                                1W         ; expire
                                5H )       ; minimum
@ NS bar.foobar.tld.
104 PTR bar.foobar.tld.

Оба фала зон для localhost есть по умолчанию, так что создавать их не надо, файл root.hint также присутствует по умолчанию.


Проверка содержимого

ClamAV

Настроим проверку контента в SAMBA, это немного капризная настройка и требует выполнения некоторых изменений. Итак, сперва копируем файл vscan-clamav.conf из каталога /usr/share/doc/packages/samba-vscan/ в /etc/samba:

# cp  /usr/share/doc/packages/samba-vscan/vscan-clamav.conf /etc/samba

Далее создаем каталог с именем clamd в папке /var/run и сменим его владельца и группу на vscan:

# mkdir /var/run/clamd
# chown vscan:vscan /var/run/clamd

Также нам необходимо создать каталог который бужет использоваться как quarantine и будет принадлежать пользователю vscan:

# mkdir /var/lib/clamav/quarantine
# chown vscan /var/lib/clamav/quarantine 

Воспользуемся вашим любимым ascii редактором, создаем файл vscan-clamav.conf в каталоге /etc/samba и добавим в него следующие строки ( рекомендую вам создать файл vscan-clamav.conf с нуля ):

[samba-vscan]
max file size = 0
verbose file logging = yes
scan on open = yes
scan on close = yes
deny access on error = yes
deny access on minor error = yes
send warning message = yes
infected file action = quarantine
quarantine directory  = /var/lib/clamav/quarantine
quarantine prefix = vir-
max lru files entries = 100
lru file entry lifetime = 5
exclude file types =
clamd socket name = /var/run/clamd/clamd
libclamav max files in archive = 1000
libclamav max archived file size = 10 * 1048576
libclamav max recursion level = 5

Воспользуйтесь вашим любимым ascii редактором, создадим файл clamd.conf в папке /etc/ и изменим или добавим следующие строки ( рекомендую создать файл clamd.conf с нуля ):

LogFile /var/log/clamd
LogFileUnlock
LogSyslog
LogFacility LOG_MAIL
LogVerbose
PidFile /var/lib/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav
LocalSocket /var/run/clamd/clamd
FixStaleSocket
User vscan
Foreground
Debug
ScanRAR

Запускаем всех демонов:

# rcnamed start
# rcdhcpd start
# rcldap start
# rcsmb start
# rcnmb start
# rcclamd star

Настроим запуск всех демонов при старте системы:

# chkconfig named on
# chkconfig dhcpd on
# chkconfig smb on
# chkconfig nmb on
# chkconfig clamd on

Настройка клиентов

Настройка клиентов для подключения к домену не очень сложна. Предполагается, что все ваши службы работают слаженно.

Для начала присоединим клиентскую машину к домену SAMBA. Учетная запись машины будет добавляться в домен автоматически, если вы добавите аккаунт POSIX-машины (примечание: значок $ указывает, что это аккаунт компьютера) командой:

# smbldap-useradd -w machine_name$

Теперь на рабочей станции Windows вызовите контекстное меню значка Мой компьютер и выберите Свойства. В появившемся диалоге выберите вкладку Имя компьютера. Перед вами появится такой диалог:

Файл:Network-properties.gif

Теперь нажмите кнопку Изменить..., после чего возникнет это окно:

Prop-add.gif

Выберите переключатель домена:, введите имя домена foobar.tld, нажмите ОК. Появится диалог параметров:

Auth-prompt.jpg

Введите имя пользователя Administrator и его пароль (он задавался командой smbpasswd -a root).

Нажмите ОК и перезагрузите рабочую станцию. Сразу после загрузки зарегистрируйтесь в домене под пользователем, которого вы добавили с помощью скрипта smbldap-useradd.old-en:Howto setup SUSE 10.1 as Samba PDC