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

make config

[  ] 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)

[global]

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

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

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

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

security = user

# Список сетей, которым разрешено коннектиться к серверу.
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   : <disabled>
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[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

Starting inetd.

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

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

Поле деятельности довольно широкое… Но дальше проблем возникать не должно. Более обширную информацию о samba можно получить, например, здесь.

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

  • 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»

Далее пробуем подключиться к серваку с виндовой машины:

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

Продолжение следует всем удачи !!!


24.05.2011 Posted by | linux and unix | Комментарии к записи Файл-сервер (Samba) на freebsd. отключены