Настройка samba

Понадобилось мне сделать домашнее хранилище для музыки, фильмов и всякой разнородной инфы. Итак, на сегодня задача следующая - настроить самбу, сделать шары и авторизацию пользователей. Настройка будет проводиться на ОС FreeBSD :).

Версия FreeBSD у меня следующая:

# uname -a
FreeBSD srv-home 6.4-RELEASE-p7 FreeBSD 6.4-RELEASE-p7 #0: Sat Oct  3 20:59:38 YEKST 2009 root@home.ru:/usr/obj/usr/src/sys/HAUNTED  i386

Идем в порты (обновляем их если нужно) и ставим самбу:

# cd /usr/ports/net/samba32
# make install clean

Я выбрал следующие опции:

  • CUPS
  • WINBIND
  • ACL_SUPPORT
  • QUOTAS
  • UTMP
  • POPT

После установки правим конфиг /usr/local/etc/smb.conf. У меня получился такой:

#======================= Global Settings =====================================
[global]
  # Имя рабочей группы
  workgroup = HOME
  # Имя сервера в сети
  server string = Documents
  # NetBIOS имя
  netbios name = srv-home

  # Режим работы самбы. Возможные значения - share, user, server, domain и ads.
  # Многим пользователям обычно хватает режима - user
  security = user
  # Подсети, которым разрешен доступ к самбе
  hosts allow = 192.168.7. 127.
  # Загружать принтеры? Мне принтеры не нужны, я выключил эту опцию
  load printers = no
  printing = bsd
  #guest account = nobody
  # Путь к лог файлу. Я все отправляю в /dev/null, так samba работает чуток быстрее. Но для отладки логи нужны.
  #log file = /var/log/samba/log.%m
  log file = /dev/null
  log level = 0
  max log size = 50
  # Шифровать пароли
  encrypt passwords = yes

  # Определяем в каком хранилище будут хранится пароли
  passdb backend = tdbsam

  include = /usr/local/etc/smb.conf.%m
  
  # Оптимизация работы самбы, чуток добавляет скорости
  max xmit = 65535
  socket options = TCP_NODELAY SO_SNDBUF=32768 SO_RCVBUF=32768 SO_KEEPALIVE

  # Интерфейс, на котором будет работать самба
  interfaces = 192.168.7.250/24

  local master = yes
  domain master = yes
  preferred master = yes

  # Уровень ОС
  os level = 65

  # Разрешить netlogons?
  domain logons = no
  # Включить поддержку wins
  wins support = yes
  # Включить сервер времени
  time server = yes

  # Кодировка, в которой будут выводиться сообщения самбы в stdout и stderr
  display charset = cp866
  # Системная кодировка
  unix charset = koi8-r
  # Кодировка для DOS клиентов
  dos charset = cp866

  # Чувствительность к регистру
  case sensitive = no

  # Читать DOS атрибуты первыми?
  #store dos attributes = yes

   # Эти скрипты используются контроллером домена для работы с машинами, пользователями и группами
   #add machine script = /usr/local/bin/ldapaddmachine '%u' computers
   #add user script = /usr/local/bin/ldapadduser '%u' people
   #add group script = /usr/local/bin/ldapaddgroup '%g'
   #add user to group script = /usr/local/bin/ldapaddusertogroup '%u' '%g'
   #delete user script = /usr/local/bin/ldapdeleteuser '%u'
   #delete group script = /usr/local/bin/ldapdeletegroup '%g'
   #delete user from group script = /usr/local/bin/ldapdeleteuserfromgroup '%u' '%g'
   #set primary group script = /usr/local/bin/ldapsetprimarygroup '%u' '%g'
   #rename user script = /usr/local/bin/ldaprenameuser '%uold' '%unew'

#============================ Share Definitions ==============================
[homes]
  comment = Home Directories
  browseable = no
  writable = yes

# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers]
  comment = All Printers
  path = /var/spool/samba
  browseable = no
# Set public = yes to allow user 'guest account' to print
  guest ok = no
  writable = no
  printable = yes

[Video]
  comment = Video
  path = /mnt/media/samba/video
  browseable = yes
  public = no
  writable = yes
  force user = smb_user
  force group = smb_read
  valid users = @smb_read, @smb_write
  write list = @smb_write
  read list = @smb_read

[Music]
  comment = Music
  path = /mnt/media/samba/music
  browseable = yes
  public = no
  writable = yes
  force user = smb_user
  force group = smb_read
  valid users = @smb_read, @smb_write
  write list = @smb_write
  read list = @smb_read

[Distrib]
  comment = Distrib
  path = /mnt/media/samba/distrib
  browseable = yes
  public = no
  writable = yes
  force user = smb_user
  force group = smb_read
  valid users = @smb_read, @smb_write
  write list = @smb_write
  read list = @smb_read

[Wallpapers]
  comment = Wallpapers
  path = /mnt/media/samba/wallpapers
  browseable = yes
  public = no
  writable = yes
  force user = smb_user
  force group = smb_read
  valid users = @smb_read, @smb_write
  write list = @smb_write
  read list = @smb_read

Некоторые пояснения к конфигу:

  • force user - это пользователь, под которым samba будет записывать данные в шары
  • force group - тоже самое, только для группы
  • valid users - пользователи и/или группы, которым разрешен доступ
  • write list - пользователи и/или группы, которым разрешена запись в папку
  • read list - пользователи и/или группы, которым разрешено чтение

В строках, где значение параметра начинается с @, это значит, что это правило применяется не к одному пользователю, а к группе.

Так же нужно создать сами папки и дать нужные права на них:

# mkdir /mnt/media/samba/video
# mkdir /mnt/media/samba/music
# mkdir /mnt/media/samba/distrib
# mkdir /mnt/media/samba/wallpapers

# chown smb_user:smb_write /mnt/media/samba/*
# chmod 750 /mnt/media/samba/*

Когда все готово, то можно добавить самбу в автозагрузку и запустить ее.

# echo 'smbd_enable="YES"' >> /etc/rc.conf
# echo 'nmbd_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/samba start

Проверяем работоспособность

# sockstat | grep -E "smbd|nmbd"

В итоге должны получить что-то подобное:

root     smbd       967   20 tcp4   *:445                 *:*
root     smbd       967   21 tcp4   *:139                 *:*
root     nmbd       962   9  udp4   *:137                 *:*
root     nmbd       962   10 udp4   *:138                 *:*

Как видно все работает. Можно пользоваться :)

Алексей (не проверено)

Добрый день. А можете пояснить, для чего в указанном примере нужен параметр "force group = smb_read" ?

Спасибо.

Некит (не проверено)

Данная директива необходима, чтобы владелец (групповой) записанных файлов и папок был smb_read

Да, это я понял.Получается, на все расшаренные папки сначала ставим владельца @smb_write, а потом то, что создается через самбу - имеет владельца @smb_read, так?

Я вот и пытаюсь понять - зачем? Что это дает? Почему не делается Force group - @smb_write ?

Спасибо.

 

PS. Ваша Капча - просто космос. =) 

 

nekit

Да, это я понял.Получается, на все расшаренные папки сначала ставим владельца @smb_write, а потом то, что создается через самбу - имеет владельца @smb_read, так?

Не совсем так. Раньше идея была в том, чтобы файлы шар на сервере принадлежали отдельному пользователю (думалось, что так безопаснее). То есть все файлы и директории имели владельца smb_user:smb_read. Этот пользователь и группа создавались руками и никак не использовались для авторизации на сервере.. Сейчас я от этого ушел, и везде ставлю root:wheel.

Сами же пользователи - создаются на сервере и включаются в группу smb_read, чтобы они имели право доступа к шаре (задано в директивах - valid users и read list). Если же нужно разрешить пользователю запись, то на сервере этот пользователь включался в группу smb_write (директива - write list).

Я вот и пытаюсь понять - зачем? Что это дает? Почему не делается Force group - @smb_write ?

Такая запись директивы не корректна. Здесь нужно указывать конкретного пользователя, который будет владельцем файлов.

В настоящее время настройки шар у меня выглядят так (может понятнее будет):

[Video] comment = Video path = /mnt/media/samba/video browseable = yes public = no writable = yes force create mode = 0644 force directory mode = 0755 create mask = 0644 directory mask = 0755 force user = root force group = wheel valid users = @smb_video_read, @smb_video_write write list = @smb_video_write read list = @smb_video_read [Music] comment = Music path = /mnt/media/samba/music browseable = yes public = no writable = yes force create mode = 0644 force directory mode = 0755 create mask = 0644 directory mask = 0755 force user = root force group = wheel valid users = @smb_music_read, @smb_music_write write list = @smb_music_write read list = @smb_music_read

В данном случае, чтобы юзер имел доступ к этим шарам, его нужно добавить в группу smb_video_read или smb_music_read, либо в обе для доступа к обоим шарам. Для записи пользователь добавляется в соответствующие группы.

# id vasya uid=1003(vasya) gid=1003(vasya) groups=1003(vasya),10003(smb_music_read),10005(smb_video_read),10010(smb_video_write)

PS. Ваша Капча - просто космос. =)

Неужели вопросы сложные ))).

Алексей (не проверено)

Да, спасибо за уточнение про права - теперь понял.

Про Капчу: да нет, я не про сложность, а просто приятно видеть нормальные человеческие вопросы. =)

Гость (не проверено)

Can't get enough of good vintage wine. Whether it's red or white, wine always makes the moment better.


Anyone else here llove wine?





Here is my web page: Alda

Гость (не проверено)

Can't get enougbh of good wine. From a local vineyard or imported,


it’s the perfect way to relax. Anyone else here love wine?





#WhiteWine





Take a look at my site - แชมเปญ

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.

Последние комментарии

Яндекс.Метрика