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

Материал из AlexNook
Перейти к навигацииПерейти к поиску
 
(не показана 21 промежуточная версия этого же участника)
Строка 4: Строка 4:


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


{{root|<nowiki>USE="acl automount kerberos pam swat syslog"  emerge samba</nowiki>}}


При этом используются следующие USE флаги:
Сперва вносим '''USE''' флаги в конфиг:
 
{{file|/etc/portage/package.use/samba|
<syntaxhighlight lang="apache" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">
net-fs/samba acl pam system-mitkrb5 winbind syslog -regedit
</syntaxhighlight>
}}
 
 
При этом используются следующие '''USE''' флаги суммарно:


{{USEFlag|extended=yes|
{{USEFlag|extended=yes|
{{EnableFlag|acl}}  
{{EnableFlag|acl}}  
{{EnableFlag|automount}}
{{EnableFlag|system-mitkrb5}}
{{EnableFlag|kerberos}}
{{EnableFlag|pam}}  
{{EnableFlag|pam}}  
{{EnableFlag|swat}}
{{EnableFlag|winbind}}
{{EnableFlag|syslog}}}}
{{EnableFlag|syslog}}}}


* '''acl''' - Include support for Kerberos. 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
* '''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.
* '''automount''' - Enables automount support
* '''system-mitkrb5''' Use app-crypt/mit-krb5 instead of app-crypt/heimdal.
* '''kerberos''' - Adds kerberos support for authentication to AD
* '''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.
* '''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
* '''swat''' - Includes the files necessary to use the Samba Web Administration Tool (SWAT)
* '''syslog''' - для логирования
* '''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 воодим:
{{root|emerge samba}}
{{note|В ядре нужно активировать опцию '''CONFIG_KEY_DH_OPERATIONS'''. Если она не будет активирована, то установщик в конце об этом напомнит. Сделать это можно вот ткт: Security Options --> Diffie-Helman operations on retained keys}}
==Настройка сервера==
Для использования NetBIOS'а Windows'ом возможно имеет смысл поправить строку в файле 
{{file|/etc/nsswitch.conf|<pre>hosts: files dns wins</pre>}}
добавив туда слово '''wins'''
Для начала скопируем полностью пример конфигурационного файла с коментариями в папку, где должен находится рабочий конфиг.
{{root|cp /etc/samba/smb.conf.example /etc/samba/smb.conf}}
или сразу создадим кофиг командой
{{root|nano -w /etc/samba/smb.conf}}
В файле {{path|/etc/samba/smb.conf.example}} всё очень подробно прокоментированно, так что есть смысл дочитать его до конца. Если всё же что-то будет не ясно или не до конца понятно то милости просим в страницы мана:
{{root|man smb.conf}}
После того, как файл настроен необходимо его сохранить в вашем любимом редакторе и запустить сервер самбы:
{{root|/etc/init.d/samba start}}


При этом автоматом поставится пакет '''sys-apps/xinetd'''. Если нет, то его необходимо установить ('''emerge xinetd''').
''Кстати заметте, что при перезапуске сервера через консоль, он автоматически в дополнение к демону '''smbd''' перезапускает в качестве зависимости и демон '''nmbd'''''


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


{{root|rc-update add xinetd default}}
{{root|rc-update add samba default}}


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


{{root|nano /etc/xinetd.d/swat}}
===Настройка на полный доступ для домашней сети===
Приведу пример конфига уже с моими коментариями прямо в нём:


Обратите внимание на опцию '''disable = yes''' которую надо исправить в соответствии с моим конфигом:
{{file|/etc/samba/smb.conf|
<syntaxhighlight lang="apache" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">


service swat
#======================= Global Settings =====================================
{
[global]
        port            = 901
        socket_type    = stream
        protocol        = tcp
        wait            = no
        only_from      = localhost
        user            = root
        server          = /usr/sbin/swat
        log_on_failure += USERID
        disable        = no
}


# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
  workgroup = FRC


Так же я исправил опцию '''only_from''' для указания интерфейса который будет слушаться. При указании '''0.0.0.0''' - будут слущаться все интерфейсы. По умолчанию стоит '''localhost'''. Так же можно изменить и порт - '''port'''.
# server string is the equivalent of the NT Description field
  server string = Donik Samba Server


После этого выполним следующую команду, которая позволит установить пароль для пользователя root для самбы:
# Server role. Defines in which mode Samba will operate.
  server role = standalone server


smbpasswd -a root
# Restrict connections to machines which are on your local network.
  hosts allow = 192.168.0. 10.8.0.
  hosts deny = 0.0.0.0/0


Далее логинимся по адресу http://localhost:901 и, введя пароль и логин root'а настраиваем самбу через веб!
#---------------------------------------------------------------
#      !!!READ INFO FOR "bind interfaces only" OPTION!!!      |
#---------------------------------------------------------------
# if you have
#
# bind interfaces only = yes
#      - it would not listen to non-broadcast interfaces (which openvpn tun0 is). This is written in man smb.conf:
#
#              Note that you should not use this parameter for machines that are serving PPP or other intermittent
#              or non-broadcast network interfaces as it will not cope with non-permanent interfaces.


{{Note|Для использования NetBIOS'а Windows'ом возможно иммет смысл поправить строку в файле  {{file|/etc/nsswitch.conf|<pre>hosts: files dns wins</pre>}}, добавив туда слово '''wins''' }}


==Настройка сервера==
# If you have multiple network interfaces then you must list them here.
В первый раз ИМХО есть смысл настроить сервер врчуную через конфиг, а потом уже управлять им и подстраивать его можно будет через веб интерфейс Swat.
#  interfaces = 192.168.0.0/24
  interfaces = enp3s0 tun0
# To bind all Samba services to the Interfaces list above
  bind interfaces only = no


Для начала скопируем полностью пример конфигурационного файла с коментариями в папку, где должен находится рабочий конфиг.
# this tells Samba to use a separate log file for each machine
  log file = /var/log/samba/log.%m


cp /etc/samba/smb.conf.example /etc/samba/smb.conf
# Put a capping on the size of the log files (in Kb).
  max log size = 10000


В данном файле всё очень подробно прокоментированно, так что есть смысл дочитать его до конца. Если всё же что-то будет не ясно или не до конца понятно то милости просим в страницы мана:
# Level of logging 0-10. 0 is none, 3 is considerable. 1 is the default
  log level = 2


man smb.conf


После того, как файл настроен необходимо его сохранить в вашем любимом редакторе и запустить сервер самбы:
# Determine the security mode. Others are: ads and domain
  security = User


/etc/init.d/samba start
# 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 = Donik


''Кстати заметте, что при перезапуске сервера через консоль, он автоматически в дополнение к демону '''smbd''' перезапускает в качестве зависимости и демон '''nmbd''', что я и советую делать при рестарте через веб админку.''
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names via DNS nslookups
  dns proxy = no


Далее добавляем сервер в автозагрузку:
#Get rid of error
# "nmbd: Error - should be sent to WINS server"
os level = 255
wins support = Yes


  rc-update add samba default
# 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


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


===Настройка на полный доступ для домашней сети===
#============================ Share Definitions ==============================
Приведу пример конфига уже с моими коментариями прямо в нём:
<pre>
# Samba config file created using SWAT
# from 192.168.0.104 (192.168.0.104)
# Date: 2008/09/05 17:00:49
;Глобальные настройки
[global]
;рабочая группа домашней виндовой сети
        workgroup = FRC
;Название которое отображается в заголовке окна при заходе на сервер (%v - версия самбы)
        server string = Router_a - Samba v. %v
;Интерфейсы, которые слушает демон
        interfaces = 192.168.0.0/24, 192.168.1.0/24
;Говорит о типе доступа на сервер - у нас это будет простая "шара"
        security = SHARE
;Степень подробности логов (от 1 до 10)
        log level = 3
;Путь куда логи сохраняем - %m это имя хоста зашедшего на сервер
        log file = /var/log/samba/log.%m
; Максимальный размер лога в килобайтах
        max log size = 10000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
;Как я понял винда очень не любит когда кто-то выступает в роли мастера и завладевает конектом кроме неё самой
        preferred master = No
        local master = No
; Не использовать прокси
        dns proxy = No
;Разрешённые к коннекту подсети (отсутствие последней цифры означает что она может быть любой)
        hosts allow = 192.168.0., 192.168.1.


;Настройки для публичных конектов к папке public
[warez]
[public]
        comment = Private files
;Путь к шаре
         path = /mnt/samba
         path = /mnt/samba
;Разрешаем читать писать и исполнять файлы
        read only = No
         read only = No  
        valid users = samba
;Вход только для гостей (user nobody)
        create mask = 0640
        guest only = Yes
        directory mask = 0750
        guest ok = Yes
         guest ok = no
</pre>
 
#[temp]
#      comment = Temp files
#      path = /mnt/samba/ochakovo/temp
#      read only = No
#      valid users = samba
#      create mask = 0600
#      directory mask = 0700
#      guest ok = no
 
#[torrent]
#      comment = Torrents downloading dir
#      path = /mnt/samba/ochakovo/torrents
#      read only = No
#      valid users = samba
#      create mask = 0660
#      directory mask = 0770
#      force group = users
#      guest ok = no
 
#[pub]
#      comment = Public FTP
#      path = /home/ftp/pub
#      read only = No
#      valid users = samba
#      create mask = 0644
#      directory mask = 0755
#      guest ok = no
 
 
 
</syntaxhighlight>
}}
 
И самое главное не забыть дать нужные права к папкам с шарами (учитывая группы и пользователей, а так же тот факт, что не все могут и должны читать и писать). Напрмер, вот такие права можно дать:
 
{{root|chmod 750 /path/to/share/samba}}
 
===Добавляем польователя шары===
Самба использует юзеров реально существующих в системе (файл {{path|/etc/passwd}} ), но при этом они должны быть занесены в собственную БД юезров самбы.
 
Поэтому создаём пользователя в ОС, но без права залогинится и использовать шел:
 
{{root|useradd -g primgrp -s /sbin/nologin -G secgrp samba}}
Тут создаётся пользователь с именем '''samba''' с первчиной (основной) группой '''primgrp''' и допольнительной группой '''secgrp'''
 
Например:
{{root|useradd -g warez -s /sbin/nologin -d /mnt/samba  samba}}
 
Далее даём ему любой сложности рандомный пароль, запоминать который не нужно. Чем сложнее тем лучше =)
 
{{root|passwd samba}}
 
Теперь добавляем в БД самбы нового юзера и попутно задаём ему тот пароль, который будет он использовать при подключении сетевого диска.
{{note|Этот пароль может совершенно быть другим и рекомендуется его использовать совершенно другим!}}
 
{{root|pdbedit -a -u samba}}


И самое главное не забыть дать права полного доступа к папке с шарой самбы
После чего рестартим самбу.


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


==Ссылки==
==Ссылки==
# [http://gentoo-wiki.com/HOWTO_Setup_Samba#Server HOWTO Samba] в Gentoo
# [http://en.gentoo-wiki.com/wiki/Samba HOWTO Samba] в Gentoo
# [https://www.samba.org/samba/docs/man/manpages/pdbedit.8.html pdbedit]]


[[Category:Linux]]
[[Category:Linux]]
[[Category:Index]]
[[Category:Index]]

Текущая версия на 10:25, 9 ноября 2023

Логотип Samba

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

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

Установка

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

File: /etc/portage/package.use/samba
net-fs/samba acl pam system-mitkrb5 winbind syslog -regedit


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

Use Flags: acl system-mitkrb5 pam 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.
  • system-mitkrb5 Use app-crypt/mit-krb5 instead of app-crypt/heimdal.
  • 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.
  • 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
Note: В ядре нужно активировать опцию CONFIG_KEY_DH_OPERATIONS. Если она не будет активирована, то установщик в конце об этом напомнит. Сделать это можно вот ткт: Security Options --> Diffie-Helman operations on retained keys

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

Для использования 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, eg: MIDEARTH
   workgroup = FRC

# server string is the equivalent of the NT Description field
   server string = Donik 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.
   hosts deny = 0.0.0.0/0

#---------------------------------------------------------------
#       !!!READ INFO FOR "bind interfaces only" OPTION!!!       |
#---------------------------------------------------------------
# if you have
#
# bind interfaces only = yes
#       - it would not listen to non-broadcast interfaces (which openvpn tun0 is). This is written in man smb.conf:
#
#               Note that you should not use this parameter for machines that are serving PPP or other intermittent
#               or non-broadcast network interfaces as it will not cope with non-permanent interfaces.


# If you have multiple network interfaces then you must list them here.
#   interfaces = 192.168.0.0/24
   interfaces = enp3s0 tun0
# To bind all Samba services to the Interfaces list above
   bind interfaces only = no

# 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 0-10. 0 is none, 3 is considerable. 1 is the default
  log level = 2


# 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 = Donik

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

#Get rid of error
# "nmbd: Error - should be sent to WINS server"
os level = 255
wins support = Yes

# 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 ==============================

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

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

#[torrent]
#       comment = Torrents downloading dir
#       path = /mnt/samba/ochakovo/torrents
#       read only = No
#       valid users = samba
#       create mask = 0660
#       directory mask = 0770
#       force group = users
#       guest ok = no

#[pub]
#       comment = Public FTP
#       path = /home/ftp/pub
#       read only = No
#       valid users = samba
#       create mask = 0644
#       directory mask = 0755
#       guest ok = no

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

chmod 750 /path/to/share/samba

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

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

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

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

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

Например:

useradd -g warez -s /sbin/nologin -d /mnt/samba samba

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

passwd samba

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

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

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

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

Ссылки

  1. HOWTO Samba в Gentoo
  2. pdbedit]