Установка samba на freebsd. Администрирование FreeBSD - Видеоуроки

VPN (mpd5)>>DNS (bind 9.x)>>Kernel>> Squid (NAT)>>Postfix (Mail)>> Samba

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

Медленно но верно подошел к настройке сервера Samba. В данном случае он меня интересует как файл-сервер.

Итак приступим к установке…

Обновим порты:

#portsnap fetch update

cd /usr/ports/net/samba34

LDAP With LDAP support

ADS With Active Directory support

CUPS With CUPS printing support

WINBIND With WinBIND support

[X] ACL_SUPPORT With ACL support

AIO_SUPPORT With Asyncronous IO support

[X] FAM_SUPPORT With File Alteration Monitor

[X] SYSLOG With Syslog support

[X] QUOTAS With Disk quota support

UTMP With UTMP accounting support

PAM_SMBPASS With PAM authentication vs passdb backends

CLUSTER With experimental cluster support

DNSUPDATE With dynamic DNS update(require ADS)

EXP_MODULES With experimental modules

[X] POPT With system-wide POPT library

[X] PCH With precompiled headers optimization

MAX_DEBUG With maximum debugging

SMBTORTURE With smbtorture

samba_enable="Yes"


ee /usr/local/etc/smb.conf

#======================= Global Settings =====================================
# В разделе global задаются все основные настройки (голбальные для сервера Samba)

# Название рабочей групы. Должно совпадать с названием рабочей групы

# на клиентских машинах.
workgroup = LOCALNET

# Строка описания сервера. Высвечивается в сетевом окружении.
server string = FreeBSD Samba Server
# Тип входа. user — авторизация пользователей по логину и паролю. Те, кто

# хочет создать файлообменник, могут воспользоваться опцией share.

# Список сетей, которым разрешено коннектиться к серверу.
hosts allow = 192.168.0. 127.

# Куда будут писаться логи, и в каком формате.
log file = /var/log/samba/log.%m

# Задаем максимальный размер лог-файла (в килобайтах). 10 мегабайт — для среднего сервера

# достаточно

max log size = 10240

# Если несколько сетевых интерфейсов, указываем, на каких «слушать» запросы пользователей.

# Даже если интерфес только один, по привычке указываю. А вдруг что-то поменяется 😉
interfaces = 192.168.0.155/24

# Если уж есть samba-сервер, то сделаем его мастер-браузером для нашей сети.
local master = yes

# «Крутость» операционной системы. Учитывается при выборах мастер-браузера.
os level = 255

#Дает дополнительный приоритет во время «голосования» и выборов мастер-браузера.

preferred master = yes

#============================ Share Definitions ==============================
# Здесь начинается описание расшареных ресурсов

# comment — комментарий к ресурсу

# path — путь к каталогу, который необходимо «расшарить»

# browseable — будет ли каталог виден в «сетевом окружении», или будет скрытым

# writable — возможно ли записывать данные в этот сетевой ресурс

# valid users — список пользователей, которым разрешен доступ к данной шаре

# hosts allow — перечень IP, которым разрешен доступ к данной шаре

# guest ok — разрешаем гостевой доступ


comment = Share for admins
path = /var/samba/admin
browseable = yes
writable = yes
valid users = winadmin
hosts allow = 192.168.0.2
comment = Share for all users
path = /var/samba/share
browseable = yes
writable = yes
guest ok = yes

Проверим командой:

Далее добавим пользователя winadmin. samba имеет свою базу логинов и паролей. Работать с этой базой можно с помощью утилиты smbpasswd. Однако не стоит забывать про то, что для корректной работы в системе должен присутствовать точно такой же пользователь. Что ж, если должен, значит сделаем. Добавим системного пользователя winadmin, правда доступ к консоли ему давать не будем 😉

# adduser
Username: winadmin
Full name: Local administrators
Uid (Leave empty for default):
Login group : nobody
Login group is nobody. Invite admin into other groups? :
Login class : rusian
Shell (sh csh tcsh nologin) : nologin
Home directory :
Home directory permissions (Leave empty for default):
Use password-based authentication? : no
Lock out the account after creation? :
Username: winadmin
Password:
Full Name: Local administrators
Uid: 1003
Class: rusian
Groups: nobody
Home: /home/admin
Home Mode:
Shell: /usr/sbin/nologin
Locked: no
OK? (yes/no): yes
adduser: INFO: Successfully added (admin) to the user database.
Add another user? (yes/no): no
Goodbye!

Теперь воспользуемся утилитой smbpasswd, чтобы добавить пользователя samba:

# smbpasswd -a winadmin
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /usr/local/etc/samba/smbpasswd did not exist. File successfully created.
Added user winadmin.

Опция указывает на то, что пользователь в базе пользователей samba еще не существует, то есть указывает, что мы добавляем нового пользователя. В случае, если вам необходимо просто сменить пароль для пользователя, этот ключ опускаем.

Как вы уже догадались, пароли samba и пароли системных пользователей хранятся в рахных хранилищах, соответственно могут отличатся (и я рекомендую использовать разные пароли). Из вывода видно, что пароли samba хранятся в файле /usr/local/etc/samba/smbpasswd.

У меня еще не созданы папки шар. Нужно создать:). Кстати, samba бережно относится к правам доступа файлов. Доступ будет осуществлятся от имени авторизовавшегося пользователя. Соответственно выставляем необходимые права доступа:

# mkdir -p /var/samba/winadmin

# mkdir /var/samba/share

# chown winadmin:nobody /var/samba/winadmin/

# chmod 777 /var/samba/share

Пробуем запустить samba.

# sh /usr/local/etc/rc.d/samba start
Removing stale Samba tdb files: done
Starting nmbd.
Starting smbd.
# ps -ax | grep smb
97289 ?? Ss 0:00,01 /usr/local/sbin/nmbd -D -s /usr/local/etc/smb.conf
97293 ?? Is 0:00,01 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf
97294 ?? I 0:00,00 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf

Кажется все заработало… На всякий случай посмотрим, что делается в логах:

# tail — f /var/log/messages

Sep 4 10:48:42 mail nmbd: nmbd/nmbd_become_lmb.c:become_local_master_stage2(396)

Sep 4 10:48:42 mail nmbd:
Sep 4 10:48:42 mail nmbd: Samba name server MAIL is now a local master browser for workgroup LOCALNET on subnet 192.168.0.155
Sep 4 10:48:42 mail nmbd:
Sep 4 10:48:42 mail nmbd: *****

Отлично. Samba даже стала мастер-браузером для рабочей группы LOCALNET в подсети 192.168.44.0/24. После набора в командной строке адреса сервера (\\192.168.44.100), появилось окно запроса логина и пароля доступа к сетевому ресурсу. После ввода логина winadmin и заданого пароля, доступ был разрешен. Это уже неплохо 🙂

Чтобы ознакомиться с полными возможностями samba, воспользуемся интерфейсом управления.

Немного общей информации… SWAT (Samba Web Administration Tool) — программа, которая позволяет сконфигурировать сервер Samba через web-интерфейс изменяя таким образом конфигурационный файл smb.conf. SWAT является частью набора Samba, поэтому развивается параллельно и не использует устаревшие опции в smb.conf.

SWAT запускается через суперсервер inetd. Чтобы разрешить запуск SWAT, необходимо в конфигурационном файле /etc/inetd.conf раскомментировать такую строку:

swat stream tcp nowait/400 root /usr/local/sbin/swat swat

Добавляем в rc.conf поддержку inetd и запускаем службу:

# echo ‘inetd_enable=»YES»‘ >> /etc/rc.conf

# sh /etc/rc.d/inetd start

Открываем любимый браузер и в строке адреса набиваем: http://ip_interface_samba-servera:901 . В моем случае этоhttp://192.168.44.100:901 . В окне запроса логина и пароля вбиваем рутовый логин и пароль.

Выставляем необходимые параметры, применяем. Потом в образовательных целях просматриваем конфигурационный файл, чтобы посмотреть на то, как изменения записываются в конфиг.

На что еще стоит обратить пристальное внимание, так это на безопасность. Наведу несколько опций контроля доступа, которые могут пригодится:

  • encrypt passwords глобальная опция; принимает значение no или yes. Отвечает за возможность включения или отключения шифрования паролей при пересылке по сети.
  • smb passwd file — глобальная опция; указывает пуль к файлу, в котором хранится список пользователей и паролей Samba (по умолчанию имеет значение /usr/local/etc/samba/smbpasswd).
  • unix password sync — глобальная опция; указывает на необходимость синхронизации паролей Samba с системными паролями; принимает значение yes или no.
  • null passwords — глобальная опция; разрешает вход пользователей с пустым паролем.
  • update encrypted — глобальная опция; при установке значения в yes, указывает изменять файл с шифрованными паролями, в случае, когда пользователь входит в систему, указывая пароль в явном виде.
  • invalid users — список пользователей, которым будет отказано в доступе к ресурсу
  • path — опция, используемая при описании ресурсов; позваоляет задать системную директорию.
  • comment — комментарий к общедоступному ресурсу.
  • writable — определяет, доступен ли ресурс на запись.
  • admin users — список пользователей, которые будут иметь доступ как пользователь root.
  • valid users — список пользователей, имеющих доступ к ресурсу.
  • read list — список пользователей, имеющих доступ только на чтение к ресурсу с правами на запись.
  • write list — список пользователей, имеющих право чтения и записи в ресурсе, доступном только на чтение.
  • browsable — определяет видимость ресурса для пользователей.
  • guest ok — определяет, разрешен ли доступ гостевых пользователей.
  • guest only — если установлено значение в yes, то доступ к ресурсу смогут получить только гостевые пользователи.
  • username map — позволяет указать файл, в котором хранится список сопоставлений имен груп и пользователей системы FreeBSD с именами и группами Windows (пароли должны совпадать). Пример записи из файла: «root = Admin Administrator»

В этой статье я опишу создание файл-сервера с установленной FreeBSD 9.2 (Samba-3.6) с авторизацией в домене Windows 2003.

Когда я впервые поднимал файл-сервер на 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 - администратор домена [email protected]"s Password: // система попросит пароль админа домена # klist // проверяем полученный билет Credentials cache: FILE:/tmp/krb5cc_0 // ответ должен быть примерно таким Principal: [email protected] Issued Expires Principal Oct 05 10:37:52 Oct 05 17:17:52 krbtgt/[email protected]
Вводим самбу, а соответственно и сам сервер в 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

Default = FILE:/var/log/kerberos/krb5libs.log kdc = FILE:/var/log/kerberos/krb5kdc.log admin_server = FILE:/var/log/kerberos/kadmin.log 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 } } DOMAIN.RU = { kdc = tcp/10.1.1.10:88 admin_server = tcp/10.1.1.10:749 default_domain = DOMAIN.RU } .domain.ru = DOMAIN.RU domain.ru = DOMAIN.RU debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false 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

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 comment = Temporary file space path = /tmp read only = No create mask = 0666 create mode = 666 directory mode = 666 directory mask = 0777 guest ok = Yes 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

Теги: Добавить метки

Первым делом — обновляем порты:

# cd /usr/ports
# portsnap fetch update

# cd /usr/ports/net/
# ls | grep samba

samba34
samba35
samba36

Приступаем к установке:

# cd /usr/ports/net/samba36

Из опций можно добавить With Syslogd :

LDAP — поддержка LDAP .
ADS -поддержка Active Directory. Отключаем.
CUPS — поддержка сервера печати CUPS.
WINBIND — обьединение пользвателей Windows/Unix. Почитать можно тут>>>.
ACL_SUPPORT — поддержка Access Control List.
AIO_SUPPORT — поддержка возможности асинхронного ввода-вывода.
FAM_SUPPORT — API для мониторинга за состоянием файла или группы файлов/директорий.
SYSLOG — поддержка логирования syslog. Включаем.
QUOTAS — поддержка квотирования. Поскольку диски не резиновые, а пользователи жадные до дискового пространства — включаем.
UTMP — включаем поддержку уникального идентификатора для каждого вновь подключенного пользователя. Поскольку понижает производительность — выключаем.
PAM_SMBPASS — поддержка синхронизации системных пользователей и пользователей samba. В нашем случае неактуально, поэтому оставляем выключеным.
DNSUPDATE — поддержка динамического обновления DNS. Поскольку данный вариант работает с поддержкой Active Directory, что нам не нужно, то оставляем отключенным.
EXP_MODULES — поддержка експериментальных модулей. А нам нужна стабильность в работе.
POPT — поддержка системной библиотеки анализа коммандной строки.
PCH — предкомпиляционная оптимизация заголовков.
MAX_DEBUG — включение режима максимальной отладки.
SMBTORTURE — утилита для стресс-тестирования серверов.

Добавляем автозапуск при старте сервера. В файл /etc/rc.conf добавляем:

samba_enable=»YES»

nmbd_enable=»YES»
smbd_enable=»YES»

Теперь — добавим пользователя:

# adduser sambaroot
Username: sambaroot
Full name:
Uid (Leave empty for default):
Login group :
Login group is sambaroot. Invite sambaroot into other groups? :
Login class :
Shell (sh csh tcsh bash rbash nologin) : nologin
Home directory :
Home directory permissions (Leave empty for default):
Use password-based authentication? :
Use an empty password? (yes/no) :
Use a random password? (yes/no) :
Enter password:
Enter password again:
Lock out the account after creation? :
Username: sambaroot
Password: *****
Full Name:
Uid: 1002
Class:
Groups: sambaroot
Home: /home/sambaroot
Home Mode:
Shell: /usr/sbin/nologin

Для каждого созданного пользователя — выполняем следующую команду, что бы SAMBA добавил его в собственную базу (в случае, если не используется MySQL или LDAP )

# smbpasswd -a sambaroot
New SMB password:
Retype new SMB password:
Added user sambaroot.

Проверить, какие пользователи есть в SAMBA можно командой:

# pdbedit -L
setevoy:1001:User &
sambauser:1003:User &

Теперь — пробуем запустить сервер:

# service samba onestart
Removing stale Samba tdb files: …… done
Starting nmbd.
Starting smbd.

Проверяем:

# service samba status
nmbd is running as pid 44633.
smbd is running as pid 44636.

Если появляется сообщение такого плана «nmbd is not running » — решение описано .

В целом, мой файл конфигурации получился таким:


workgroup = WORKGROUP
server string = Setevoy home samba server
security = user
load printers = no
log file = /var/log/samba/log.%m
max log size = 50
interfaces = re0
dns proxy = no
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866


comment = Public Stuff
path = /home/samba
public = yes
writable = yes
guest ok = yes
write list = @wheel


comment = Home Directories
browseable = no
read only = no

Краткое пояснение к опциям:

# comment — комментарий к ресурсу
# path — путь к каталогу, который необходимо «расшарить»
# browseable — будет ли каталог виден в «сетевом окружении», или будет скрытым
# writable — возможно ли записывать данные в этот сетевой ресурс
# valid users — список пользователей, которым разрешен доступ к данной шаре
# hosts allow — перечень IP, которым разрешен доступ к данной шаре

Наконец-то нашлось у меня время разобраться с FreeBSD. Сейчас, по-быстрому, поднимем сервер под FreeBSD и настроим необходимые сервисы. Это не будет инструкцией для новичков, я не буду разъяснять назначение команд и параметров - исключительно информация о том "как это было".

В этой статье описан процесс установки и настройки сети. Чтобы не засорять большим количеством текстов, - то что называется "насетапить" - опишу отдельно. Все проверено на моем домашнем сервере и работает. В дальнейшем поднимем службы нашего сервера: gate&proxy, mail, web, IP-PBX и др.

Почему под FreeBSD?

Я не буду спорить и доказывать почему именно FreeBSD, а не Linux и уж никак не Windows - каждому свое. Тем более, тот кто это читает свой выбор уже сделал. Единственное что хотелось бы сказать об этом - это почему FreeBSD я выбрал для себя. Был я администратором офиса в мире проприетарного (ломаного, естественно) ПО. Но так как я всегда учусь и развиваюсь, решил выбрать изучить UNIX-like систему. Это и бесплатно, и, как мне показалось, круто - ведь в винде может разобраться (на том низком уровне, который был на то время у меня) даже школьник. Выбрал я FreeBSD, а не Linux. Потому что Linux-ов много, и как выбрать конкретный дистрибутив я не придумал. Тем более, разбираясь в одном из дистрибутивов Linux совсем не значит что можно также успешно разобраться в другом. А FreeBSD - она одна!

Установка FreeBSD

Установку детально описывать не вижу смысла. Нет там ничего сложного. Последовательность такая:

  • качаем Disc1 с офф. сайта (вся коллекция дисков или DVD не нужна, софт лучше собирать из портов)
  • грузимся с него
  • метод установки выбираем, конечно же, Custom
  • в Options ничего менять не будем
  • в Partition создаем раздел ("C", "Q", Standart - если будет единственной ОСью)
  • в Label создаем точки монтирования:
1G - / RAM * 1.5 - swap 3G - /var/tmp 2-4G * N - /var/cache # ТОЛЬКО ЕСЛИ БУДУТ proxy servers! сколько надо - /var/ftp # ТОЛЬКО ЕСЛИ БУДЕТ file server ! сколько надо - /var/mail # ТОЛЬКО ЕСЛИ БУДЕТ mail server ! сколько надо - /var/db # ТОЛЬКО ЕСЛИ БУДЕТ database server ! 10-20G - /usr 1G или более - /home остальное - /var
  • в Distributions - custom выбираем:
base kernels dict doc info man catman proflibs src (тут откроются подпункты, выбрать all) ports local
  • запускаем установку
  • после установки можно и понастраивать (имя, ip). Но мы то любители консоли...

Настройка сети на FreeBSD

После перезагрузки войдем под рутом и выполним минимальные настройки сети и запустим sshd (за консолью сидеть не всегда удобно).

Если настройки сети (по ifconfig смотрим имя сетевого адаптера) статические, то выполняем:

Echo "hostname="rublin"" >> /etc/rc.conf echo "ifconfig_de0_name="net0"" >> /etc/rc.conf echo "# ifconfig_net0="DHCP"" >> /etc/rc.conf echo "ifconfig_net0="inet 192.168.67.99 netmask 255.255.252.0"" >> /etc/rc.conf echo "defaultrouter="192.168.67.100"" >> /etc/rc.conf

Echo "hostname="rublin"" >> /etc/rc.conf echo "ifconfig_de0_name="net0"" >> /etc/rc.conf echo "ifconfig_net0="DHCP"" >> /etc/rc.conf echo "# ifconfig_net0="inet 192.168.67.99 netmask 255.255.252.0"" >> /etc/rc.conf echo "# defaultrouter="192.168.67.100"" >> /etc/rc.conf

9 октября 2014 в 12:58

Создание файл-сервера на базе FreeBSD с авторизацией в AD

  • IT-инфраструктура ,
  • Сетевые технологии

В этой статье я опишу создание файл-сервера с установленной FreeBSD 9.2 (Samba-3.6) с авторизацией в домене Windows 2003.

Когда я впервые поднимал файл-сервер на 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 - администратор домена [email protected]"s Password: // система попросит пароль админа домена # klist // проверяем полученный билет Credentials cache: FILE:/tmp/krb5cc_0 // ответ должен быть примерно таким Principal: [email protected] Issued Expires Principal Oct 05 10:37:52 Oct 05 17:17:52 krbtgt/[email protected]
Вводим самбу, а соответственно и сам сервер в 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

Default = FILE:/var/log/kerberos/krb5libs.log kdc = FILE:/var/log/kerberos/krb5kdc.log admin_server = FILE:/var/log/kerberos/kadmin.log 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 } } DOMAIN.RU = { kdc = tcp/10.1.1.10:88 admin_server = tcp/10.1.1.10:749 default_domain = DOMAIN.RU } .domain.ru = DOMAIN.RU domain.ru = DOMAIN.RU debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false 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

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 comment = Temporary file space path = /tmp read only = No create mask = 0666 create mode = 666 directory mode = 666 directory mask = 0777 guest ok = Yes 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

Теги:

  • freebsd
  • samba
  • active directory
Добавить метки