Archive:Настройка SUSE 10.1 как Samba PDC
Эта статья актуальна для версии '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 клиента:
Снова открываем ваш любимый 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
Теперь нажмите кнопку Изменить..., после чего возникнет это окно:
Выберите переключатель домена:, введите имя домена foobar.tld, нажмите ОК. Появится диалог параметров:
Введите имя пользователя Administrator и его пароль (он задавался командой smbpasswd -a root).
Нажмите ОК и перезагрузите рабочую станцию. Сразу после загрузки зарегистрируйтесь в домене под пользователем, которого вы добавили с помощью скрипта smbldap-useradd.old-en:Howto setup SUSE 10.1 as Samba PDC