Samba - установка и настройка: различия между версиями

Материал из AlexNook
Перейти к навигацииПерейти к поиску
Строка 73: Строка 73:
{{file|/etc/samba/smb.conf|
{{file|/etc/samba/smb.conf|
<syntaxhighlight lang="apache" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="apache" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">
# Samba config file created using SWAT
#======================= Global Settings =====================================
# from 192.168.0.104 (192.168.0.104)
[global]
# Date: 2008/09/05 17:00:49
 
# workgroup = NT-Domain-Name or Workgroup-Name
  workgroup = FRC
 
# server string is the equivalent of the NT Description field
  server string = MediaBox Samba Server
 
# Server role. Defines in which mode Samba will operate.
  server role = standalone server


#Глобальные настройки
# Restrict connections to machines which are on your local network.
[global]
  hosts allow = 192.168.0. 10.8.0.
        netbios name = Router_a
 
#рабочая группа домашней виндовой сети
# If you have multiple network interfaces then you must list them here.
        workgroup = FRC
  interfaces = 192.168.0.0/24
#Название которое отображается в заголовке окна при заходе на сервер (%v - версия самбы)
 
        server string = Router_a
# this tells Samba to use a separate log file for each machine
#Говорит о типе доступа на сервер. SHARE - это простая "шара", USER - для доступа по реквизитам логин/пароль
  log file = /var/log/samba/log.%m
#      security = SHARE
 
        security = User
# Put a capping on the size of the log files (in Kb).
#Всех гостей интерпритируем как не верных юзеров
  max log size = 10000
        map to guest = Bad User
 
#Степень подробности логов (от 1 до 10)
# Level of logging
        log level = 3
  log level = 3
#Путь куда логи сохраняем - %m это имя хоста зашедшего на сервер
 
        log file = /var/log/samba/log.%m
 
#Максимальный размер лога в килобайтах
# Determine the security mode. Others are: ads and domain
        max log size = 10000
  security = User
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 
#Как я понял винда очень не любит когда кто-то выступает в роли мастера и завладевает конектом кроме неё самой
# what to do with user login requests that don.t match a valid UNIX user in some way.
        preferred master = No
# Never Means user login requests with an invalid password are rejected.
        local master = No
  map to guest = Never
#Не использовать прокси
 
        dns proxy = No
# This sets the NetBIOS name by which a Samba server is known.
#Интерфейсы, которые слушает демон
  netbios name = MediaBox
        interfaces = 192.168.0.0/24
 
#Разрешённые к коннекту подсети (отсутствие последней цифры означает что она может быть любой)
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names via DNS nslookups
        hosts allow = 192.168.0., 192.168.1.
  dns proxy = no
 
# These scripts are used on a domain controller or stand-alone
# machine to add or delete corresponding unix accounts
;  add user script = /usr/sbin/useradd %u
;  add group script = /usr/sbin/groupadd %g
;  add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
;  delete user script = /usr/sbin/userdel %u
;  delete user from group script = /usr/sbin/deluser %u %g
;  delete group script = /usr/sbin/groupdel %g
 
#============================ Share Definitions ==============================


#read / write share
[private]
[secret]
        comment = Private files
         path = /path/to/secret/readwrite/share
         path = /mnt/private
         read only = No
         read only = No
         valid users = username
         valid users = samba
         create mask = 0740
         create mask = 0640
         directory mask = 0750
         directory mask = 0750
         guest ok = no
         guest ok = no
 
#only read share
[secret]
[public]
        comment = Temp files
         path = /path/to/public/readable/share
         path = /mnt/temp
         read only = Yes
         read only = No
         valid users = username
         valid users = samba
        create mask = 0600
        directory mask = 0700
         guest ok = no
         guest ok = no
</syntaxhighlight>
</syntaxhighlight>
Строка 127: Строка 148:


{{root|chmod 750 /path/to/share/samba}}
{{root|chmod 750 /path/to/share/samba}}


===Добавляем польователя шары===
===Добавляем польователя шары===

Версия 14:32, 25 августа 2019

Логотип Samba

Samba - это программа работающая по протоколу smb или cifs, способная обеспечивать взаимодействие систем на базе Linux с системами гед стоит ОС от Microsoft.

Рассмотрим установку Samba и настройку серверной её части для работы в сети Microsoft. То есть мы имеем сервер с установленным на него ОС Gentoo куда и хотим поставить Samba, которая позволит всем компьютерам локальной сети видеть на сервере с ОС Gentoo "расшаренные" папки в стиле того как это делает ОС Windows.

Установка

Сперва вносим USE флаги в конфиг:

File: /etc/portage/package.use/samba
net-fs/samba acl aio netapi pam readline syslog winbind
Note: Я так же использовал флаг server, но он у меня был установлен глобально. Флаг нужен для активации работы самбы в режиме сервера

При этом используются следующие USE флаги суммарно:

Use Flags: acl aio netapi pam readline winbind syslog (?)

  • acl - Enables Access Control Lists. The ACL support in Samba uses a patched ext2/ext3, or SGI's XFS in order to function properly as it extends more detailed access to files or directories; much more so than typical *nix GID/UID schemas.
  • aio - Enable asynchronous IO support
  • netapi - Enable building of netapi bits
  • pam - Include support for pluggable authentication modules (PAM). This provides the ability to authenticate users on the Samba Server, which is required if users have to login to your server. The kerberos USE flag is recommended along with this option.
  • readline - Link Samba against libreadline. This is highly recommended and should probably not be disabled.
  • server - Enables the server part
  • syslog - для логирования
  • winbind - Winbind allows for a unified logon within a Samba environment. It uses a Unix implementation of Windows RPC calls, PAM and the name service switch (supported by the c library) to enable Windows NT domain users to appear and work as Unix users on a Unix system.

Для установки в Gentoo воодим:

emerge samba

Настройка сервера

Для использования NetBIOS'а Windows'ом возможно имеет смысл поправить строку в файле

File: /etc/nsswitch.conf
hosts: files dns wins

добавив туда слово wins

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

cp /etc/samba/smb.conf.example /etc/samba/smb.conf

или сразу создадим кофиг командой

nano -w /etc/samba/smb.conf

В файле /etc/samba/smb.conf.example всё очень подробно прокоментированно, так что есть смысл дочитать его до конца. Если всё же что-то будет не ясно или не до конца понятно то милости просим в страницы мана:

man smb.conf

После того, как файл настроен необходимо его сохранить в вашем любимом редакторе и запустить сервер самбы:

/etc/init.d/samba start


Кстати заметте, что при перезапуске сервера через консоль, он автоматически в дополнение к демону smbd перезапускает в качестве зависимости и демон nmbd

Далее добавляем сервер в автозагрузку:

rc-update add samba default

Рассматривать весь файл конфигурации я не буду, а раскажу, как можно настроить сервер на работу в обычной домашней локальной сети для удобной организации файловой "свалки" с возможность полного доступа к ней всех членов домашней сети, включая выполнение файлов (к примеру удобно воспроизводить видео не скачивая как требует того протокол FTP)

Настройка на полный доступ для домашней сети

Приведу пример конфига уже с моими коментариями прямо в нём:

File: /etc/samba/smb.conf
#======================= Global Settings =====================================
[global]

# workgroup = NT-Domain-Name or Workgroup-Name
   workgroup = FRC

# server string is the equivalent of the NT Description field
   server string = MediaBox Samba Server

# Server role. Defines in which mode Samba will operate.
   server role = standalone server

# Restrict connections to machines which are on your local network.
   hosts allow = 192.168.0. 10.8.0.

# If you have multiple network interfaces then you must list them here.
   interfaces = 192.168.0.0/24

# this tells Samba to use a separate log file for each machine
   log file = /var/log/samba/log.%m

# Put a capping on the size of the log files (in Kb).
   max log size = 10000

# Level of logging
  log level = 3


# Determine the security mode. Others are: ads and domain
  security = User

# what to do with user login requests that don.t match a valid UNIX user in some way.
# Never Means user login requests with an invalid password are rejected.
  map to guest = Never

# This sets the NetBIOS name by which a Samba server is known.
  netbios name = MediaBox

# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names via DNS nslookups
   dns proxy = no

# These scripts are used on a domain controller or stand-alone
# machine to add or delete corresponding unix accounts
;  add user script = /usr/sbin/useradd %u
;  add group script = /usr/sbin/groupadd %g
;  add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
;  delete user script = /usr/sbin/userdel %u
;  delete user from group script = /usr/sbin/deluser %u %g
;  delete group script = /usr/sbin/groupdel %g

#============================ Share Definitions ==============================

[private]
        comment = Private files
        path = /mnt/private
        read only = No
        valid users = samba
        create mask = 0640
        directory mask = 0750
        guest ok = no

[secret]
        comment = Temp files
        path = /mnt/temp
        read only = No
        valid users = samba
        create mask = 0600
        directory mask = 0700
        guest ok = no

И самое главное не забыть дать нужные права к папкам с шарами (учитывая группы и пользователей, а так же тот факт, что не все могут и должны читать и писать). Напрмер, вот такие права можно дать:

chmod 750 /path/to/share/samba

Добавляем польователя шары

Самба использует юзеров реально существующих в системе (файл /etc/passwd ), но при этом они должны быть занесены в собственную БД юезров самбы.

Поэтому создаём пользователя в ОС, но без права залогинится и использовать шел:

useradd -g primgrp -s /sbin/nologin -G secgrp samba

Тут создаётся пользователь с именем samba с первчиной (основной) группой primgrp и допольнительной группой secgrp

Далее даём ему любой сложности рандомный пароль, запоминать который не нужно. Чем сложнее тем лучше =)

passwd samba

Теперь добавляем в БД самбы нового юзера и попутно задаём ему тот пароль, который будет он использовать при подключении сетевого диска.

Note: Этот пароль может совершенно быть другим и рекомендуется его использовать совершенно другим!
pdbedit -a -u samba

После чего рестартим самбу.

Чтобы всё работало как требуется, главное проследить права, которые мы имеем у пользователя и его групп на файлы и папки той директории, которую мы шарим через самбу.

Ссылки

  1. HOWTO Samba в Gentoo
  2. pdbedit]