Здравствуй уважаемый читатель, надеюсь эта статья поможет тебе хоть немного в приобретении опыта работы с такой прекрасной ОС как FreeBSD. Сегодня мы будем настраивать сервер SAMBA в качестве файлового сервера с вводом его в домен и CUPS в качестве принтсервера для win клиентов. Вся настройка производилась на FreeBSD 7.0, представленные конфиги рабочие и протестированные в собственной сети.
Составим список пакетов, которые на понадобяться в работе:
Список составили, теперь можно и приступать. Самое первое установим 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, вам необходимо будет установить в нём свой домен. Мой конфиг:
Всё с настройкой 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 Конфиг:
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:
Далее следует пересобрать ядро с 2 новыми опциями. Для ознакомления можно почитать в /usr/src/sys/ufs/ufs два файла Readme.acls и Readme.extattr:
options UFS_EXTATTR
options UFS_EXTATTR_AUTOSTART
После того как пересобрали ядро можно заниматься и acl, только имеется несколько моментов - если у вас файловая система UFS2 то пересборки ядра с указанными опциями будет достаточно, а если у вас файловая система UFS1 то необходимо выполнить два действия:
Где вместо '/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-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 адрес компа за которым сидит админ. Далее нам необходимо подправить несколько опций в файлах:
Все эти настройки можно найти в официальном руководстве к самбе. После того как произвели все настройки в /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] (самба).
Всё с настройками закончили, эта статья не пошаговое руководство, поэтому с некоторыми моментами вам стоит разобраться самим.