Freebsd файловый сервер для windows
Профиль | Сайт | Отправить PM | Цитировать
Знаю, тема избитая-переизбитая — связать BSD-Linux систему с доменной Windows-сетью. Но во всех инструкциях, по которым я действовал (в частности, вот этой и вот этой), не получается не только настроить так, как нужно мне, но даже и дойти вообще до каких-то осмысленных настроек. Просто расшарить папку у меня получалось, без аутентификации доменных пользователей. Но это не нужно.
А нужно вот что: есть доменная сеть, где всё на Windows. Подсеть одна — 192.168.0.*. PDC работает на Windows 2000 server, установлена AD. Для файлового сервера, члена домена, нужно только предоставление сетевых папок доменным пользователям, сидящим под Windows, и разграничение доступа (чаще всего по группам в AD, но и по отдельным пользователям тоже). Квоты тоже не нужны. Единственное, чего бы хотелось, это более простое управление разрешениями на доступ из-под какой-нибудь оболочки, неважно, где это будет находиться — на сервере Windows, локально на файловом сервере из-под иксов, или с Windows-машины администратора.
Почему выбор пал на FreeBSD? Да потому что ни один Линукс не смог распознать рэйд-массив (зеркало) на сервере. Убунту видит два диска отдельно, и из них можно легко построить программный рэйд, но зачем мне программный, если уже построен аппаратный? FreeBSD сразу предложила установку на ar0.
Пользуясь хэнд-буком, установил FreeBSD 7.0, Gnome и Samba3 (достаточно свежую, которая идёт в комплекте дисков FreeBSD 7.0), пользуясь sysinstall-ом. Настроил автозапуск Гнома, перезагрузился, зашёл под root-ом.
Дерево пакетов и систему не обновлял, не вижу смысла в этом. Всё, что есть на дисках, и так достаточно свежее, а если заработает, как мне надо, так вообще подходить к серверу не буду. Пользователей не заводил — удалённый доступ по SSH не включал на этапе установки, он тоже не нужен пока. Будет нужен — так включу. И локальных пользователей на сервере тоже не будет, сервер будет работать с доменными, и брать всё из AD. Так что из пользователей будет один root для «зашёл-настроил-вышел».
После установки, в вышеприведённых инструкциях написано, что надо установить heimdal для работы с kerberos5. Это меня удивило. А зачем? Поддержка пятого кербероса, согласно хэнд-буку, встроена в дистрибутив ещё со времён FreeBSD-5.1. Читаю хэнд-бук дальше — «Heimdal Kerberos доступен в виде порта (security/heimdal), его минимальный комплект включен в базовую установку FreeBSD.» Понятно, возвращаюсь к инструкции. Чтобы настроить heimdal, надо отредактировать файл /etc/krb5.conf. Нету этого файла нигде! Ладно, установлю heimdal сам.
Появилось окошко, что ставить. Я выбрал LDAP (как по инструкциям), и на всякий случай, x11 utilies — подумал, что будет GUI какой-нибудь.
Heimdal скомпилировался и установился. А krb5.conf как не было, так и нет! Поискал — нашлись файлы krb5.conf.5 (справка какая-то), и два одинаковых файла krb5.conf.5.gz в разных местах. Вот тут я и застрял.
Подскажите, как выйти из этого тупика, а я потом наверняка задам ещё вопросы. Если всё получится, напишу инструкцию, но постараюсь сделать её наиболее универсальной и простой.
Freebsd файловый сервер для windows
Профиль | Сайт | Отправить PM | Цитировать
Знаю, тема избитая-переизбитая — связать BSD-Linux систему с доменной Windows-сетью. Но во всех инструкциях, по которым я действовал (в частности, вот этой и вот этой), не получается не только настроить так, как нужно мне, но даже и дойти вообще до каких-то осмысленных настроек. Просто расшарить папку у меня получалось, без аутентификации доменных пользователей. Но это не нужно.
А нужно вот что: есть доменная сеть, где всё на Windows. Подсеть одна — 192.168.0.*. PDC работает на Windows 2000 server, установлена AD. Для файлового сервера, члена домена, нужно только предоставление сетевых папок доменным пользователям, сидящим под Windows, и разграничение доступа (чаще всего по группам в AD, но и по отдельным пользователям тоже). Квоты тоже не нужны. Единственное, чего бы хотелось, это более простое управление разрешениями на доступ из-под какой-нибудь оболочки, неважно, где это будет находиться — на сервере Windows, локально на файловом сервере из-под иксов, или с Windows-машины администратора.
Почему выбор пал на FreeBSD? Да потому что ни один Линукс не смог распознать рэйд-массив (зеркало) на сервере. Убунту видит два диска отдельно, и из них можно легко построить программный рэйд, но зачем мне программный, если уже построен аппаратный? FreeBSD сразу предложила установку на ar0.
Пользуясь хэнд-буком, установил FreeBSD 7.0, Gnome и Samba3 (достаточно свежую, которая идёт в комплекте дисков FreeBSD 7.0), пользуясь sysinstall-ом. Настроил автозапуск Гнома, перезагрузился, зашёл под root-ом.
Дерево пакетов и систему не обновлял, не вижу смысла в этом. Всё, что есть на дисках, и так достаточно свежее, а если заработает, как мне надо, так вообще подходить к серверу не буду. Пользователей не заводил — удалённый доступ по SSH не включал на этапе установки, он тоже не нужен пока. Будет нужен — так включу. И локальных пользователей на сервере тоже не будет, сервер будет работать с доменными, и брать всё из AD. Так что из пользователей будет один root для «зашёл-настроил-вышел».
После установки, в вышеприведённых инструкциях написано, что надо установить heimdal для работы с kerberos5. Это меня удивило. А зачем? Поддержка пятого кербероса, согласно хэнд-буку, встроена в дистрибутив ещё со времён FreeBSD-5.1. Читаю хэнд-бук дальше — «Heimdal Kerberos доступен в виде порта (security/heimdal), его минимальный комплект включен в базовую установку FreeBSD.» Понятно, возвращаюсь к инструкции. Чтобы настроить heimdal, надо отредактировать файл /etc/krb5.conf. Нету этого файла нигде! Ладно, установлю heimdal сам.
Появилось окошко, что ставить. Я выбрал LDAP (как по инструкциям), и на всякий случай, x11 utilies — подумал, что будет GUI какой-нибудь.
Heimdal скомпилировался и установился. А krb5.conf как не было, так и нет! Поискал — нашлись файлы krb5.conf.5 (справка какая-то), и два одинаковых файла krb5.conf.5.gz в разных местах. Вот тут я и застрял.
Подскажите, как выйти из этого тупика, а я потом наверняка задам ещё вопросы. Если всё получится, напишу инструкцию, но постараюсь сделать её наиболее универсальной и простой.
Blog of Khlebalin Dmitriy
(Дорогу осилит идущий…)
Файл-сервер (Samba) на 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
make install clean
Далее ждем пока закончится установка…
Сделаем rehash
Далее пропишем в /etc/rc.conf следующее значение:
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 — разрешаем гостевой доступ
[winadmin]
comment = Share for admins
path = /var/samba/admin
browseable = yes
writable = yes
valid users = winadmin
hosts allow = 192.168.0.2
[share]
comment = Share for all users
path = /var/samba/share
browseable = yes
writable = yes
guest ok = yes
Проверим командой :
smbtree
Далее добавим пользователя winadmin. samba имеет свою базу логинов и паролей. Работать с этой базой можно с помощью утилиты smbpasswd. Однако не стоит забывать про то, что для корректной работы в системе должен присутствовать точно такой же пользователь. Что ж, если должен, значит сделаем. Добавим системного пользователя winadmin, правда доступ к консоли ему давать не будем 😉
# adduser
Username: winadmin
Full name: Local administrators
Uid (Leave empty for default):
Login group [admin]: nobody
Login group is nobody. Invite admin into other groups? []:
Login class [default]: rusian
Shell (sh csh tcsh nologin) [sh]: nologin
Home directory [/home/admin]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
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
# 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[97421]: [2009/09/04 10:48:42, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396)
Sep 4 10:48:42 mail nmbd[97421]: *****
Sep 4 10:48:42 mail nmbd[97421]:
Sep 4 10:48:42 mail nmbd[97421]: 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[97421]:
Sep 4 10:48:42 mail nmbd[97421]: *****
Отлично. 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. В окне запроса логина и пароля вбиваем рутовый логин и пароль.
Выставляем необходимые параметры, применяем. Потом в образовательных целях просматриваем конфигурационный файл, чтобы посмотреть на то, как изменения записываются в конфиг.
Поле деятельности довольно широкое… Но дальше проблем возникать не должно. Более обширную информацию о samba можно получить, например, здесь.
На что еще стоит обратить пристальное внимание, так это на безопасность. Наведу несколько опций контроля доступа, которые могут пригодится:
- encryptpasswords — глобальная опция; принимает значение no или yes. Отвечает за возможность включения или отключения шифрования паролей при пересылке по сети.
- smbpasswdfile — глобальная опция; указывает пуль к файлу, в котором хранится список пользователей и паролей Samba (по умолчанию имеет значение /usr/local/etc/samba/smbpasswd).
- unixpasswordsync — глобальная опция; указывает на необходимость синхронизации паролей Samba с системными паролями; принимает значение yes или no.
- nullpasswords — глобальная опция; разрешает вход пользователей с пустым паролем.
- updateencrypted — глобальная опция; при установке значения в yes, указывает изменять файл с шифрованными паролями, в случае, когда пользователь входит в систему, указывая пароль в явном виде.
- invalidusers — список пользователей, которым будет отказано в доступе к ресурсу
- path — опция, используемая при описании ресурсов; позваоляет задать системную директорию.
- comment — комментарий к общедоступному ресурсу.
- writable — определяет, доступен ли ресурс на запись.
- adminusers — список пользователей, которые будут иметь доступ как пользователь root.
- validusers — список пользователей, имеющих доступ к ресурсу.
- readlist — список пользователей, имеющих доступ только на чтение к ресурсу с правами на запись.
- writelist — список пользователей, имеющих право чтения и записи в ресурсе, доступном только на чтение.
- browsable — определяет видимость ресурса для пользователей.
- guestok — определяет, разрешен ли доступ гостевых пользователей.
- guestonly — если установлено значение в yes, то доступ к ресурсу смогут получить только гостевые пользователи.
- usernamemap — позволяет указать файл, в котором хранится список сопоставлений имен груп и пользователей системы FreeBSD с именами и группами Windows (пароли должны совпадать). Пример записи из файла: «root = Admin Administrator»
Далее пробуем подключиться к серваку с виндовой машины:
Далее собственно по аналогии предоставляем доступ ко всем остальным папкам на серваке. Собственно на этом первоначальная настройка сервера закончена. Неплохо бы еще прикрутить сюда авторизацию доменных пользователей, но как это сделать я пока не представляю.