В этой статье я опишу создание файл-сервера с установленной FreeBSD 9.2 (Samba-3.6) с авторизацией в домене Windows 2003.
Когда я впервые поднимал файл-сервер на FreeBSD, наткнулся на множество проблем, решение которых приходилось долго искать по тематическим сайтам и форумам. Поэтому здесь на каждом этапе будут описаны типичные проблемы и их решения. Думаю, многим эта статья поможет разрешить некоторые вопросы.
Итак, начнём с начальных данных:
Не буду углубляться в тонкости установки системы. По этому поводу в интернете тонны информации и как ставить систему пусть каждый решает сам. В данном случае я не пересобирал ядро и не поднимал RAID-массивы. Всё и так прекрасно работает.
Отмечу лишь некоторые нюансы:
Переходим к установке Samba (вот здесь первой моей ошибкой была установка порта Heimdal, который, как оказалось, вообще ставить не нужно):
Ставил с параметрами:
Все необходимые пакеты установщик подтянет автоматически согласно зависимостям. Во время установки каждого дополнительного пакета система часто будет спрашивать о параметрах установки. Я всё оставлял по дефолту, только лишь отключал поддержку протокола IPv6, т.к. он нам не нужен.
Далее забиваем конфиги, размещённые в конце статьи. Отмечу, что соблюдение регистра букв обязательно. Если используете Putty, то можно копипастить прямо из вложенных мной конфигов.
smb.conf должен лежать в /usr/local/etc/. Остальные конфиги — в /etc.
Если файла по какому-то недоразумению нет, то создаём его простой командой и тут же забиваем:
Или, например:
Проверить конфиг самбы можно утилитой testparm, которая укажет на неверные записи. Опять же, неверные записи не всегда являются таковыми. Тут нужно знать тонкости.
После того, как конфиги забиты запускаем службу samba:
Или проще:
Хорошим ответом будет:
После любого изменения в конфиге самбы нужно обязательно её перезапустить.
Итак, система стоит, ПО скомпилировано, конфиги забиты. Пришло время ввода машину в домен.
Получаем билет:
Вводим самбу, а соответственно и сам сервер в Active Directory:
Проверяем:
На этом, собственно, можно и закончить, но чтобы не было проблем с записью в расшаренный каталог, рекомендую назначить админа домена в качестве владельца для расшары с указанием группы юзеров:
Вложения:
Когда я впервые поднимал файл-сервер на FreeBSD, наткнулся на множество проблем, решение которых приходилось долго искать по тематическим сайтам и форумам. Поэтому здесь на каждом этапе будут описаны типичные проблемы и их решения. Думаю, многим эта статья поможет разрешить некоторые вопросы.
Итак, начнём с начальных данных:
- Имя домена: domain.ru;
- Имя хоста: msrv-file.domain.ru;
- IP хоста: 10.1.1.6;
- Имя PDC (он же DNS/AD/DHCP/NTP): msrv-dc1.domain.ru;
- IP PDC: 10.1.1.10;
- Болванка с FreeBSD 9.2-i386-bootonly;
- Доступ в Интернет — обязательно;
- Печать не нужна.
Не буду углубляться в тонкости установки системы. По этому поводу в интернете тонны информации и как ставить систему пусть каждый решает сам. В данном случае я не пересобирал ядро и не поднимал RAID-массивы. Всё и так прекрасно работает.
Отмечу лишь некоторые нюансы:
- 1. Во время инсталяции ОС при настройке сетевого интерфейса я осознанно выбрал DHCP, для чего на самом DHCP-сервере было сделано резервирование IP по MAC. Узнать MAC-адрес интерфейса можно с помощью утилиты dmesg.
- 2. Для правильного резолва я сделал соответствие в DNS-сервере на файл-сервер, а также на самом файл-сервере в файл /etc/hosts добавил следующие строки:
10.1.1.10 msrv-dc1.domain.ru 10.1.1.6 msrv-file.domain.ru
- 3. После установки ОБЯЗАТЕЛЬНО сверяем время с PDC (конечно при условии, что он является NTP). При разнице во времени более 5ти минут, файл-сервер будет терять домен.
Сверяемся командой:
#ntpdate 10.1.1.10
Переходим к установке Samba (вот здесь первой моей ошибкой была установка порта Heimdal, который, как оказалось, вообще ставить не нужно):
#cd /usr/ports/net/samba36
#make install clean && rehash
Ставил с параметрами:
[X] LDAP With LDAP support
[X] ADS With Active Directory support
[X] WINBIND With WinBIND support
[X] ACL_SUPPORT With ACL support
[X] SYSLOG With Syslog support
[X] QUOTAS With Disk quota support
[X] POPT With system-wide POPT library
Все необходимые пакеты установщик подтянет автоматически согласно зависимостям. Во время установки каждого дополнительного пакета система часто будет спрашивать о параметрах установки. Я всё оставлял по дефолту, только лишь отключал поддержку протокола IPv6, т.к. он нам не нужен.
Далее забиваем конфиги, размещённые в конце статьи. Отмечу, что соблюдение регистра букв обязательно. Если используете Putty, то можно копипастить прямо из вложенных мной конфигов.
smb.conf должен лежать в /usr/local/etc/. Остальные конфиги — в /etc.
Если файла по какому-то недоразумению нет, то создаём его простой командой и тут же забиваем:
#ee /usr/local/etc/smb.conf
Или, например:
#ee /etc/krb5.conf
Проверить конфиг самбы можно утилитой testparm, которая укажет на неверные записи. Опять же, неверные записи не всегда являются таковыми. Тут нужно знать тонкости.
После того, как конфиги забиты запускаем службу samba:
# /usr/local/etc/rc.d/samba.sh start
Или проще:
#service samba start
Хорошим ответом будет:
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.
Starting winbindd.
После любого изменения в конфиге самбы нужно обязательно её перезапустить.
#service samba restart
Итак, система стоит, ПО скомпилировано, конфиги забиты. Пришло время ввода машину в домен.
Получаем билет:
# kinit -p dl_admin // где dl_admin - администратор домена
dl_admin@DOMAIN.RU's Password: // система попросит пароль админа домена
# klist // проверяем полученный билет
Credentials cache: FILE:/tmp/krb5cc_0 // ответ должен быть примерно таким
Principal: dl_admin@DOMAIN.RU
Issued Expires Principal
Oct 05 10:37:52 Oct 05 17:17:52 krbtgt/DOMAIN.RU@DOMAIN.RU
Вводим самбу, а соответственно и сам сервер в Active Directory:
# net ads join -U dl_admin
dl_admin's password:
Joined 'MSRV-FILE' to realm 'DOMAIN.RU'
Проверяем:
# wbinfo -p
Ping to winbindd succeeded on fd 4
# wbinfo -t
checking the trust secret via RPC calls succeeded
# wbinfo -g
возвращает список групп пользователей
# wbinfo -u
возвращает список пользователей
# id dl_admin
возвращает идентификатор пользователя
На этом, собственно, можно и закончить, но чтобы не было проблем с записью в расшаренный каталог, рекомендую назначить админа домена в качестве владельца для расшары с указанием группы юзеров:
# chown -R dl_admin:"Domain Users" /home/share
# chmod -R 770 /home/share
Вложения:
krb5.conf
[logging]
default = FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmin.log
[libdefaults]
ticket_lifetime = 24000
default_realm = DOMAIN.RU
dns_lookup_realm = false
dns_lookup_kdc = false
kdc_req_checksum_type = 2
checksum_type = 2
ccache_type = 1
forwardable = true
proxiable = true
clockskew = 300
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
[realms]
DOMAIN.RU = {
kdc = tcp/10.1.1.10:88
admin_server = tcp/10.1.1.10:749
default_domain = DOMAIN.RU
}
[domain_realm]
.domain.ru = DOMAIN.RU
domain.ru = DOMAIN.RU
[pam]
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
[login]
krb4_convert = false
krb4_get_tickets = false
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
rc.conf
hostname="msrv-file.domain.ru"
keymap="ru.koi8-r.win.kbd"
ifconfig_bge0="DHCP"
sshd_enable="YES"
moused_enable="YES"
ntpd_enable="YES"
powerd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
# -- sysinstall generated deltas -- # Sun Oct 5 10:31:10 2014
mousechar_start="3"
font8x8="cp866-8x8"
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
scrnmap="koi8-r2cp866"
keymap="ru.koi8-r"
# smbd_enable="YES"
samba_enable="YES"
nmbd_enable="YES"
winbindd_enable="YES"
# -- sysinstall generated deltas -- # Sun Oct 5 15:09:56 2014
tcp_extensions="YES"
resolv.conf
# Generated by resolvconf
nameserver 10.1.1.10
smb.conf
[global]
dos charset = cp866
unix charset = koi8-r
display charset = koi8-r
workgroup = DOMAIN
realm = DOMAIN.RU
netbios name = MSRV-FILE
server string = File Server %v
security = ADS
auth methods = winbind
map to guest = Bad User
log file = /var/log/samba/log.%m
max log size = 50
client signing = Yes
preferred master = No
local master = No
domain master = No
dns proxy = No
winbind use default domain = Yes
inherit acls = Yes
hosts allow = 10.1.1., 127.
map acl inherit = Yes
case sensitive = No
nt acl support = Yes
os level = 10
socket options = SO_RCVBUF=8192 SO_SNDBUF=8192 TCP_NODELAY
load printers = No
printing = bsd
guest account = nobody
guest ok = yes
winbind enum users = Yes
winbind enum groups = Yes
winbind nested groups = No
winbind refresh tickets = Yes
idmap config * : range = 600-20000
idmap config * : backend = tdb
interfaces = bge0
[tmp]
comment = Temporary file space
path = /tmp
read only = No
create mask = 0666
create mode = 666
directory mode = 666
directory mask = 0777
guest ok = Yes
[share]
comment = Share Directory
path = /home/share
write list = "@DOMAIN.RU\Domain Admins", "@DOMAIN.RU\Domain Users"
read only = No
create mode = 660
directory mode = 660
create mask = 0660
directory mask = 0770