Документация по ОС FreeBSD Суббота, 20.04.2024, 09:55
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Samba

Samba & CUPS & AD & ACL [2008]
Здравствуй уважаемый читатель, надеюсь эта статья поможет тебе хоть немного в приобретении опыта работы с такой прекрасной ОС как FreeBSD. Сегодня мы будем настраивать сервер SAMBA в качестве файлового сервера с вводом его в домен и CUPS в качестве принтсервера для win клиентов. Вся настройка производилась на FreeBSD 7.0, представленные конфиги рабочие и протестированные в собственной сети.

   Составим список пакетов, которые на понадобяться в работе:
 1. Port: samba-3.0.28,1
 Path: /usr/ports/net/samba3
 2. Port: cups-base-1.3.5_2
 Path: /usr/ports/print/cups-base
 3. Port: cups-pstoraster-8.15.4_1
 Path: /usr/ports/print/cups-pstoraster
 4. Port: cups-samba-6.0
 Path: /usr/ports/print/cups-samba
 5. Port: cups-smb-backend-1.0
 Path: /usr/ports/print/cups-smb-backend
 6. Port: heimdal-1.0.1
 Path: /usr/ports/security/heimdal

Список составили, теперь можно и приступать. Самое первое установим heimdal-1.0.1 для того что бы можно
было проводить аутентификацию основанную на Kerberos 5. Переходим в порт с /usr/ports/security/heimdal
make config и выбираем опцию  "[X] LDAP      Use OpenLDAP as the KDC backend". Устанавливаем и создаём конфиг krb5.conf, который выкладываем в /etc. Этот конфиг можно взять, если распоковать сам пакет  heimdal-1.0.1  он так и называется krb5.conf, вам необходимо будет установить в нём свой домен. Мой конфиг:
   
[libdefaults]
 default_realm = OSKOL.IMPEXBANK.RU
 clockskew = 300
 v4_instance_resolve = false
 v4_name_convert = {
 host = {
 rcmd = host
 ftp = ftp
 }
 plain = {
 something = something-else
 }
 }

 [realms]
 OSKOL.IMPEXBANK.RU = {
 kdc = 10.178.1.10
 admin_server=10.178.1.10
 }
 [domain_realm]
 .oskol.impexbank.ru. = OSKOL.IMPEXBANK.RU.

Всё с настройкой Kerberos закончили. Далее устанавливаем пакет samba-3.0.28,1. Его можно установить через sysinstall, но я предпочитаю ставить из портов, заходим в порт /usr/ports/net/samba3 выполняем make config и отмечаем соответствующие пункты:
   
[X] LDAP With LDAP support 
[X] ADS With Active Directory support 
[X] WINBIND With WinBIND support 
[X] ACL_SUPPORT With ACL support 
[X] FAM_SUPPORT With File Alteration Monitor 
[X] SYSLOG With Syslog support 
[X] QUOTAS With Disk quota support 
[X] DNSUPDATE With dynamic DNS update 
[X] POPT With system-wide POPT library 

После установки самбы приступим к составлению конфигурации для введения unix машины в домен Windows.
Для более точной конфигурации можно воспользоваться man smb.conf
Конфиг:

 [global]
 workgroup=Impex
 server string =FreeBSD
 netbios name=unix
 netbios aliases=freebsd samba
 auth methods=winbind
 security =ADS
 hosts allow =10.178.1., 127. 
 log file = /var/log/samba/log.%m
 max log size =0
 log level=0
 syslog=0
 password server =10.178.1.10
 realm = OSKOL.IMPEXBANK.RU
 encrypt passwords=yes
 socket options=SO_RCVBUF=8192 SO_SNDBUF=8192 
 TCP_NODELAY IPTOS_LOWDELAY
 client signing=yes
 idmap uid=10000-15000
 idmap gid=10000-15000
 winbind use default domain=yes
 winbind enum users=yes
 winbind enum groups=yes
 display charset = koi8-r
 unix charset = koi8-r
 dos charset = cp866
 #template homedir=/home/IMPEX/users
 #template shell=/bin/csh
 interfaces=re0 lo0
 bind interfaces only=yes
 nt acl support=yes
 map acl inherit=yes
 inherit acls=no
 inherit owner=no
 inherit permissions=no
 acl check permissions=true
 acl map full control=false
 block size=4096
 client ntlmv2 auth=yes
 #minut
 deadtime=10
 dns proxy=no
 follow symlinks=no
 getwd cache=yes
 hide dot files=yes
 hide special files=yes
 keepalive=0
 max connections=20
 wide links=no
 load printers=yes
 printing=cups
 printcap name=cups
 disable spoolss=no
 use client driver=no
 cups server=10.178.1.79:631

 [public]
 path=/server/share
 #read list="@IMPEX\Domain Users"
 #write list="@IMPEX\Domain Admins" 
 comment="пВЭЙЕ ТЕУХТcЩ"
 create mask=1775
 directory mask=1775
 browseable=yes
 available=yes
 read only=no
 admin users="@IMPEX\Domain Admins"

 [printers]
 comment="All printers"
 path=/var/spool/samba
 public=yes
 guest ok=yes
 writable=no
 printable=yes
 browseable=yes
 read only=yes

 [print$]
 comment="Printer Drivers"
 path=/usr/local/share/cups/drivers
 browseable=yes
 guest ok=no
 read only=yes
 write list="@IMPEX\Domain Admins"
 Read list="@IMPEX\Domain Users"

Ещё забыли одну вещь сделать, идём в /etc и редактируем файл nsswitch.conf. Приводим файл к такому виду:
   
group: files winbind
group_compat: nis
hosts: files dns
networks: files
passwd: files winbind
passwd_compat: nis
shells: files
#services: compat
#services_compat: nis
#protocols: files
#rpc: files

Ну что конфигурацию самбы составили, можно теперь пробовать вводить машину с FreeBSD в домен.
   
Делается это довольно просто:
   1. Необходимо получить билет Kerberos от PDC:
   man kinit
       kinit 'имя юзера домена'
       пр: 
       
kinit user@exemple.ru

   После того как билет получен вы увидите:
   kinit: NOTICE: ticket renewable lifetime is 1 week
   
   2. Посмотреть полученный билет пожно командой
       klist
       пр:
   
unix# klist
Credentials cache: FILE:/tmp/krb5cc_0
Principal: atrium@OSKOL.IMPEXBANK.RU

Issued Expires Principal
Oct 20 13:45:50 >>>Expired<<< krbtgt/OSKOL.IMPEXBANK.RU@OSKOL.IMPEXBANK.RU
Oct 20 13:46:47 >>>Expired<<< pdc$@OSKOL.IMPEXBANK.RU

   3. Далее запускаем самбу, к стати стоит добавить в /etc/rc.conf следующие строки - smbd_enable="YES" nmbd_enable="YES" winbindd_enable="YES"
       /usr/local/etc/rc.d/samba start
   
   4. Выполняем пару команд:
   man net
       net ads join -U 'логин юзера'
       пр:
net ads join -U Администратор
Joined 'Unix' to realm 'OSKOL.IMPEXBANK.RU'

   5. Всё можно проверить командами, если все предыдущие операции прошли успешно, а команды проверки не работают сделайте 'shutdown -r now':
   man wbinfo
wbinfo -u
wbinfo -g

   Так же нам необходимо отредактировать файл /etc/pam.d/login. Советую сделать бэкап файла. Если что либо случится, т.е допустим     не будет пускать в систему, то загрузитесь в однопользовательском режиме 'boot -s' и скопируйте бэкап в /etc/pam.d
       
# $FreeBSD: src/etc/pam.d/login,v 1.17 2007/06/10 18:57:20 yar Exp $
#
# PAM configuration for the "login" service
#
# auth
#auth sufficient pam_self.so no_warn
#auth include system
#account
#account requisite /usr/lib/pam_securetty.so
#account required /usr/lib/pam_nologin.so
#account include system
# session
#session include system
# password
#password include system

auth required pam_nologin.so no_warn
auth sufficient /usr/local/lib/pam_winbind.so
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth required pam_unix.so no_warn try_first_pass
account sufficient /usr/local/lib/pam_winbind.so
account required pam_unix.so
session required pam_permit.so

   Перзагружаем комп 'shutdown -r now' и проверяем 'wbinfo -u' - должен показать юзеров домена. Если всё отлично, то давайте ещё настроим     ACL, эта возможность позволит выставлять галочки на доступ через Windows (хотя надо ли оно :-)). Включаем поддержку acl для файловой     системы на которой у нас будут крутиться шары, я делаю отдельную файловую систему с точкой монтирования /server и в ней располагаю все
файлы необходимые для ftp, samba, apache или чего ещё :) так проще управлять (в принципе кому как). Для включения поддержки acl в файле /etc/fstab к файловой системе добавить флаг acls. Это вариан самый простой но у него есть свои недостатки:
(HANDBOOK)

ACL включаются во время монтирования флагом acls, который добавляется к /etc/fstab. Этот флаг также можно сделать постоянным с помощью tunefs(8), изменив флаг ACL в заголовке файловой системы. Вообще говоря, использование флага в суперблоке предпочтительно по нескольким причинам:
1. Постоянный ACL флаг не может быть изменен путем перемонтирования системы (mount(8) -u), а
только через umount(8) и mount(8). Это означает, что ACL нельзя включить на корневой файловой системе
после загрузки. Это также означает, что вы не можете изменить флаг на используемой файловой системе.

2. Установка флага в суперблоке приводит к постоянному монтированию файловой системы с включенным ACL, даже если нет записи в fstab или при смене порядка устройств. Это предотвращает случайное монтирование файловой системы без ACL, которое может повлечь за собой проблемы с безопасностью.
(HANDBOOK)

Если Вас все перечисленные недостатки не пугают, то приступим /etc/fstab:
   
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1h /home ufs rw 2 2
/dev/ad0s1g /server ufs rw,acls 2 2
/dev/ad0s1d /tmp ufs rw 2 2
/dev/ad0s1e /usr ufs rw 2 2
/dev/ad0s1f /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

Далее следует пересобрать ядро с 2 новыми опциями. Для ознакомления можно почитать в
/usr/src/sys/ufs/ufs два файла Readme.acls и Readme.extattr:
           
options UFS_EXTATTR
options UFS_EXTATTR_AUTOSTART

После того как пересобрали ядро можно заниматься и acl, только имеется несколько моментов -
если у вас файловая система UFS2 то пересборки ядра с указанными опциями будет достаточно, а если
у вас файловая система UFS1 то необходимо выполнить два действия:
   
mkdir -p /server/.attribute/system
cd /server/.attribute/system
extattrctl initattr -p / 388 posix1e.acl_access
extattrctl initattr -p / 388 posix1e.acl_default

Где вместо '/server' указывается ваша точка монтирования на которой включёы списки контроля доступа (alc).
   
Для работы с acl  из FreeBSD вам  понадобятся две команды. Советую почитать маны:
getfacl - получение списков
setfacl - установка и удаление списков

При установки прав для пользователя домена из FreeBSD указывайте его полное имя:
       пр:
       
setfacl -nm u:atrium@example.ru:rwx /файл или папка

Так вроде со всем разобрались у нас остался только cups (Common UNIX Printing System) - cups.org:
Его можно установить в качестве опции к самбе или отдельно, будем устанавливать отдельно, для этого заходим в /usr/ports/print/cups-base и выполняем уже хнакомые команды make; make install; make clean. Установили cups, теперь нам необходимо установить ещё     /usr/ports/print/cups-pstoraster, /usr/ports/print/cups-samba, /usr/ports/print/cups-smb-backend. Приступаем к конфигурированию, все     файлы конфигурации для cups находятся в /usr/local/etc/cups. Приводим файл cupsd.conf к виду:    
       
LogLevel error
 MaxLogSize 1m
 HostNameLookups no
 AccessLog /var/log/cups/access_log
 ErrorLog /var/log/cups/error_log
 PageLog /var/log/cups/page_log
 Listen localhost:631
 Listen ip:631
 Listen /var/run/cups.sock
 DataDir /usr/local/share/cups
 FontPath /usr/local/share/cups/fonts
 TempDir /var/spool/cups/tmp
 RequestRoot /var/spool/cups
 ServerAdmin admin@osk.impexbank.ru
 ServerName unix.oskol.impexbank.ru
 ServerTokens none
 KeepAlive off
 MaxClients 100
 Timeout 300
 ConfigFilePerm 0640
 Browsing On
 BrowseOrder allow,deny
 BrowseAllow all
 BrowseAddress @LOCAL
 BrowseInterval 30
 Printcap /etc/printcap
 PrintcapFormat bsd
 ReloadTimeout 60
 SystemGroup wheel
 <Location />
 Allow All
 # Allow shared printing and remote administration...
 Order allow,deny
 Allow @LOCAL
 </Location>
 <Location /admin>
 Encryption IfRequested
 Allow ip admin
 # Allow remote administration...
 Order allow,deny
 Allow @LOCAL
 </Location>
 <Location /admin/conf>
 Encryption IfRequested
 Allow ip admin
 # Allow remote access to the configuration files...
 Order allow,deny
 Allow @LOCAL
 </Location>
 <Policy default>
 <Limit Send-Document Send-URI Hold-Job Release-Job 
Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription 
Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job 
Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
 Allow all
 </Limit>
 <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer 
CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
 Allow all
 </Limit>
 <Limit Pause-Printer Resume-Printer Enable-Printer 
Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs 
Release-Held-New-Jobs Deactivate-Printer Activate-Printer 
Restart-Printer Shutdown-Printer Startup-Printer Promote-Job 
Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
 Allow all
 </Limit>
 <Limit Cancel-Job CUPS-Authenticate-Job>
 Allow all
 </Limit>
 <Limit All>
 Allow all
 </Limit>
 </Policy>

Не забудте подставить вместо ip адрес на котором будет крутится cups, а вместо ip admin адрес компа за которым сидит админ.    Далее нам необходимо подправить несколько опций в файлах:
mime.convs:
application/octet-stream application/vnd.cups-raw 0 -
mime.types:
application/octet-stream

Все эти настройки можно найти в официальном руководстве к самбе. После того как произвели все настройки в /etc/rc.conf добавляем строку:
           
cupsd_enable="YES"

   Перезапускаем компьютер и заходим по адресу ip:631 или localhost:631. Вы увидите графический интерфейс, после того как вы добавите принтеры, у меня они были сетевые необходимо чтобы win клинетам при поключении принтера в автоматическом режиме устанавливались драйвера, для этого     сушествует утилитка для экспорта принтеров в самбу cupsaddsmb, если с помощью неё не получится попоробуйте скрипт, который я вам предлагаю:
   
#!/bin/sh
#Скрипт добавления драйвера принтера в самба из cups
#---------------------------
#| ВАЖНО!!
#---------------------------
#---------------------------
#Первый параметр - имя драйвера принтера должно совпадать с именем ppd файла
#Второй параметр - имя хоста
#Третий параметр - логин и пароль
NAME_DRIVER="$1"
HOST="$2"
LP="$3"
#Выполнение
rpcclient -d 4 -U ''$LP'' -c 'adddriver "Windows NT x86" \
"'$NAME_DRIVER':pscript5.dll:'$NAME_DRIVER'.ppd:\
 ps5ui.dll:pscript.hlp:NULL:RAW:pscript.ntf,cups6.ini,cupsps6.dll,cupsui6.dll"' \
$HOST 2>/tmp/add_driver_error.log 1>/tmp/add_driver_successfully.log
echo ""
echo "Результат работы";
echo "---------------------";
tail -n 1 /tmp/add_driver_successfully.log
rpcclient -N -d 4 -U ''$LP'' -c "setdriver $NAME_DRIVER $NAME_DRIVER" \
 $HOST 2>>/tmp/add_driver_error.log 1>>/tmp/add_driver_successfully.log
tail -n 1 /tmp/add_driver_successfully.log
echo "--------------------------------------------------------------------------";
echo "Вывод ошибок работы скрипта $0 сохранён в /tmp/add_driver_error.log";
echo "--------------------------------------------------------------------------";
echo "Вывод работы скрипта $0 сохранён в /tmp/add_driver_successfully.log"
echo "--------------------------------------------------------------------------";

   Не забудте создать папку W32X86 с правами 777 и скинуть в неё драйвера (файлы указаны в скрипте), эта папка должна находится в [$print] (самба).
   
   Всё с настройками закончили, эта статья не пошаговое руководство, поэтому с некоторыми моментами вам стоит разобраться самим.



Источник: http://www.lissyara.su/?id=1779
Категория: Samba | Добавил: oleg (28.10.2008) | Автор: atrium
Просмотров: 1910 | Рейтинг: 5.0/1 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024