Что такое samba в linux
Перейти к содержимому

Что такое samba в linux

  • автор:

RHCSA and RHCE Chapter 16 — Samba

Samba is an open source implementation of the Server Message Block (SMB) protocol. It allows the networking of Microsoft Windows, Linux, UNIX, and other operating systems together, enabling access to Windows-based file and printer shares. Samba’s use of SMB allows it to appear as a Windows server to Windows clients.

Samba Features

From the same guide:

  • Serve directory trees and printers to Linux, UNIX, and Windows clients
  • Assist in network browsing (with or without NetBIOS)
  • Authenticate Windows domain logins
  • Provide Windows Internet Name Service (WINS) name server resolution
  • Act as a Windows NT-style Primary Domain Controller (PDC)
  • Act as a Backup Domain Controller (BDC) for a Samba-based PDC
  • Act as an Active Directory domain member server
  • Join a Windows NT/2000/2003/2008 PDC
  • Act as a BDC for a Windows PDC (and vice versa)
  • Act as an Active Directory domain controller

Samba Daemons

From the above guide:

  • smbd — The smbd server daemon provides file sharing and printing services to Windows clients. In addition, it is responsible for user authentication, resource locking, and data sharing through the SMB protocol. The default ports on which the server listens for SMB traffic are TCP ports 139 and 445. The smbd daemon is controlled by the smb service.
  • nmbd — The nmbd server daemon understands and replies to NetBIOS name service requests such as those produced by SMB/Common Internet File System (CIFS) in Windows-based systems. These systems include Windows 95/98/ME, Windows NT, Windows 2000, Windows XP, and LanManager clients. It also participates in the browsing protocols that make up the Windows Network Neighborhood view. The default port that the server listens to for NMB traffic is UDP port 137. The nmbd daemon is controlled by the nmb service.
  • winbindd — The winbind service resolves user and group information on a server running Windows NT, 2000, 2003 or Windows Server 2008. This makes Windows user / group information understandable by UNIX platforms. This is achieved by using Microsoft RPC calls, Pluggable Authentication Modules (PAM), and the Name Service Switch (NSS). This allows Windows NT domain users to appear and operate as UNIX users on a UNIX machine. Though bundled with the Samba distribution, the winbind service is controlled separately from the smb service. The winbindd daemon is controlled by the winbind service and does not require the smb service to be started in order to operate. winbindd is also used when Samba is an Active Directory member, and may also be used on a Samba domain controller (to implement nested groups and/or interdomain trust).

Configuring a Samba Server

From the deployment Guide:

The default configuration file (/etc/samba/smb.conf) allows users to view their home directories as a Samba share. It also shares all printers configured for the system as Samba shared printers. In other words, you can attach a printer to the system and print to it from the Windows machines on your network.

Samba uses /etc/samba/smb.conf as its configuration file. If you change this configuration file, the changes do not take effect until you restart the Samba daemon with the following command, as root:

To specify the Windows workgroup and a brief description of the Samba server, edit the following lines in your /etc/samba/smb.conf file:

Replace WORKGROUPNAME with the name of the Windows workgroup to which this machine should belong. The BRIEF COMMENT ABOUT SERVER is optional and is used as the Windows comment about the Samba system.

To create a Samba share directory on your Linux system, add the following section to your /etc/samba/smb.conf file (after modifying it to reflect your needs and your system):

The above example allows the users tfox and carole to read and write to the directory /home/share, on the Samba server, from a Samba client.

Samba Server Types

From the same guide:

Samba configuration is straightforward. All modifications to Samba are done in the /etc/samba/smb.conf configuration file. Although the default smb.conf file is well documented, it does not address complex topics such as LDAP, Active Directory, and the numerous domain controller implementations.

Samba Stand-alone Server

From the above guide:

A stand-alone server can be a workgroup server or a member of a workgroup environment. A stand-alone server is not a domain controller and does not participate in a domain in any way. The following examples include several anonymous share-level security configurations and one user-level security configuration

Anonymous Read-Only The following /etc/samba/smb.conf file shows a sample configuration needed to implement anonymous read-only file sharing. The security = share parameter makes a share anonymous. Note, security levels for a single Samba server cannot be mixed. The security directive is a global Samba parameter located in the [global] configuration section of the /etc/samba/smb.conf file.

Anonymous Read/Write The following /etc/samba/smb.conf file shows a sample configuration needed to implement anonymous read/write file sharing. To enable anonymous read/write file sharing, set the read only directive to no. The force user and force group directives are also added to enforce the ownership of any newly placed files specified in the share.

Anonymous Print Server The following /etc/samba/smb.conf file shows a sample configuration needed to implement an anonymous print server. Setting browseable to no as shown does not list the printer in Windows Network Neighborhood. Although hidden from browsing, configuring the printer explicitly is possible. By connecting to DOCS_SRV using NetBIOS, the client can have access to the printer if the client is also part of the DOCS workgroup. It is also assumed that the client has the correct local printer driver installed, as the use client driver directive is set to Yes. In this case, the Samba server has no responsibility for sharing printer drivers to the client.

Samba as a Domain Member Server

From the Deployment Guide:

A domain member, while similar to a stand-alone server, is logged into a domain controller (either Windows or Samba) and is subject to the domain’s security rules. An example of a domain member server would be a departmental server running Samba that has a machine account on the Primary Domain Controller (PDC). All of the department’s clients still authenticate with the PDC, and desktop profiles and all network policy files are included. The difference is that the departmental server has the ability to control printer and network shares.

Active Directory Domain Member Server The following /etc/samba/smb.conf file shows a sample configuration needed to implement an Active Directory domain member server. In this example, Samba authenticates users for services being run locally but is also a client of the Active Directory. Ensure that your kerberos realm parameter is shown in all caps (for example realm = EXAMPLE.COM). Since Windows 2000/2003/2008 requires Kerberos for Active Directory authentication, the realm directive is required. If Active Directory and Kerberos are running on different servers, the password server directive may be required to help the distinction.

  • Configuration of the /etc/samba/smb.conf file on the member server
  • Configuration of Kerberos, including the /etc/krb5.conf file, on the member server
  • Creation of the machine account on the Active Directory domain server
  • Association of the member server to the Active Directory domain

The kinit command is a Kerberos initialization script that references the Active Directory administrator account and Kerberos realm. Since Active Directory requires Kerberos tickets, kinit obtains and caches a Kerberos ticket-granting ticket for client/server authentication.

To join an Active Directory server (windows1.example.com), type the following command as root on the member server:

Since the machine windows1 was automatically found in the corresponding Kerberos realm (the kinit command succeeded), the net command connects to the Active Directory server using its required administrator account and password. This creates the appropriate machine account on the Active Directory and grants permissions to the Samba domain member server to join the domain.

Windows NT4-based Domain Member Server The following /etc/samba/smb.conf file shows a sample configuration needed to implement a Windows NT4-based domain member server. Becoming a member server of an NT4-based domain is similar to connecting to an Active Directory. The main difference is NT4-based domains do not use Kerberos in their authentication method, making the /etc/samba/smb.conf file simpler. In this instance, the Samba member server functions as a pass through to the NT4-based domain server.

Having Samba as a domain member server can be useful in many situations. There are times where the Samba server can have other uses besides file and printer sharing. It may be beneficial to make Samba a domain member server in instances where Linux-only applications are required for use in the domain environment. Administrators appreciate keeping track of all machines in the domain, even if not Windows-based. In the event the Windows-based server hardware is deprecated, it is quite easy to modify the /etc/samba/smb.conf file to convert the server to a Samba-based PDC. If Windows NT-based servers are upgraded to Windows 2000/2003/2008, the /etc/samba/smb.conf file is easily modifiable to incorporate the infrastructure change to Active Directory if needed.

After configuring the /etc/samba/smb.conf file, join the domain before starting Samba by typing the following command as root:

Note that the -S option, which specifies the domain server hostname, does not need to be stated in the net rpc join command. Samba uses the hostname specified by the workgroup directive in the /etc/samba/smb.conf file instead of it being stated explicitly.

Samba as a Domain Controller

From the the deployment guide:

A domain controller in Windows NT is functionally similar to a Network Information Service (NIS) server in a Linux environment. Domain controllers and NIS servers both host user/group information databases as well as related services. Domain controllers are mainly used for security, including the authentication of users accessing domain resources. The service that maintains the user/group database integrity is called the Security Account Manager (SAM). The SAM database is stored differently between Windows and Linux Samba-based systems, therefore SAM replication cannot be achieved and platforms cannot be mixed in a PDC/BDC environment.

In a Samba environment, there can be only one PDC and zero or more BDCs.

Primary Domain Controller (PDC) using tdbsam The simplest and most common implementation of a Samba PDC uses the new default tdbsam password database back end. Replacing the aging smbpasswd back end. The passdb backend directive controls which back end is to be used for the PDC.

The following /etc/samba/smb.conf file shows a sample configuration needed to implement a tdbsam password database back end.

  1. Use a configuration of the smb.conf file as shown in the example above.
  2. Add the root user to the Samba password database.

Samba Security Modes

From the same guide:

There are only two types of security modes for Samba, share-level and user-level, which are collectively known as security levels. Share-level security can only be implemented in one way, while user-level security can be implemented in one of four different ways. The different ways of implementing a security level are called security modes.

Samba User-Level Security

From the Deployment guide:

User-level security is the default setting for Samba. Even if the security = user directive is not listed in the /etc/samba/smb.conf file, it is used by Samba. If the server accepts the client’s username/password, the client can then mount multiple shares without specifying a password for each instance. Samba can also accept session-based username/password requests. The client maintains multiple authentication contexts by using a unique UID for each logon.

In the /etc/samba/smb.conf file, the security = user directive that sets user-level security is:

Domain Security Mode (User-Level Security) In domain security mode, the Samba server has a machine account (domain security trust account) and causes all authentication requests to be passed through to the domain controllers. The Samba server is made into a domain member server by using the following directives in the /etc/samba/smb.conf file:

Active Directory Security Mode (User-Level Security) If you have an Active Directory environment, it is possible to join the domain as a native Active Directory member. Even if a security policy restricts the use of NT-compatible authentication protocols, the Samba server can join an ADS using Kerberos. Samba in Active Directory member mode can accept Kerberos tickets.

In the /etc/samba/smb.conf file, the following directives make Samba an Active Directory member server:

Server Security Mode (User-Level Security) Server security mode was previously used when Samba was not capable of acting as a domain member server.

It is highly recommended to not use this mode since there are numerous security drawbacks.

In the /etc/samba/smb.conf, the following directives enable Samba to operate in server security mode:

Samba Share-Level Security

From the above guide:

With share-level security, the server accepts only a password without an explicit username from the client. The server expects a password for each share, independent of the username. There have been recent reports that Microsoft Windows clients have compatibility issues with share-level security servers. Samba developers strongly discourage use of share-level security.

In the /etc/samba/smb.conf file, the security = share directive that sets share-level security is:

Samba Account Information Databases

From the same guide:

  • Plain Text — Plain text back ends are nothing more than the /etc/passwd type back ends. With a plain text back end, all usernames and passwords are sent unencrypted between the client and the Samba server. This method is very insecure and is not recommended for use by any means. It is possible that different Windows clients connecting to the Samba server with plain text passwords cannot support such an authentication method.
  • smbpasswd — A popular back end used in previous Samba packages, the smbpasswd back end utilizes a plain ASCII text layout that includes the MS Windows LanMan and NT account, and encrypted password information. The smbpasswd back end lacks the storage of the Windows NT/2000/2003 SAM extended controls. The smbpasswd back end is not recommended because it does not scale well or hold any Windows information, such as RIDs for NT-based groups. The tdbsam back end solves these issues for use in a smaller database (250 users), but is still not an enterprise-class solution.
  • ldapsam_compat — The ldapsam_compat back end allows continued OpenLDAP support for use with upgraded versions of Samba. This option is normally used when migrating to Samba 3.0.
  • tdbsam — The new default tdbsam password back end provides an ideal database back end for local servers, servers that do not need built-in database replication, and servers that do not require the scalability or complexity of LDAP. The tdbsam back end includes all of the smbpasswd database information as well as the previously-excluded SAM information. The inclusion of the extended SAM data allows Samba to implement the same account and system access controls as seen with Windows NT/2000/2003/2008-based systems.

    The tdbsam back end is recommended for 250 users at most. Larger organizations should require Active Directory or LDAP integration due to scalability and possible network infrastructure concerns.

  • ldapsam — The ldapsam back end provides an optimal distributed account installation method for Samba. LDAP is optimal because of its ability to replicate its database to any number of servers such as the Red Hat Directory Server or an OpenLDAP Server. LDAP databases are light-weight and scalable, and as such are preferred by large enterprises.

    If you are upgrading from a previous version of Samba to 3.0, note that the OpenLDAP schema file (/usr/share/doc/samba- /LDAP/samba.schema ) and the Red Hat Directory Server schema file (/usr/share/doc/samba- /LDAP/samba-schema-FDS.ldif ) have changed. These files contain the attribute syntax definitions and objectclass definitions that the ldapsam back end needs in order to function properly.

    As such, if you are using the ldapsam back end for your Samba server, you will need to configure slapd to include one of these schema file.

Stand-alone Samba Server Example

So let’s go ahead and setup our RH6 machine to be a stand-alone samba server. First let’s install the necessary package:

Samba (Русский)

Samba — это реализация сетевого протокола SMB. Она облегчает организацию общего доступа к файлам и принтерам между системами Linux и Windows и является альтернативой NFS.

Создание общих ресурсов описано в разделе #Сервер; подключение к общим ресурсам описано в разделе #Клиент.

Сервер

Установка

Samba настраивается с помощью файла /etc/samba/smb.conf , который подробно документирован на странице руководства smb.conf(5) .

В связи с тем, что пакет samba поставляется без данного файла, вам нужно создать его перед запуском smb.service .

Вы можете воспользоваться документированным примером, как в smb.conf.default из git-репозитория Samba для создания /etc/samba/smb.conf .

  • Значение log file в стандартном файле настроек указывает в место, доступное только для чтения, что будет вызывать ошибки. Можно воспользоваться одним из следующих решений:
    • Задайте расположение, доступное для записи: log file = /var/log/samba/%m.log
    • Используйте бекенд для нефайлового журналирования: замените logging = syslog на syslog only = yes или используйте logging = systemd
    Включение и запуск служб

    Для работы общего доступа к файлам запустите и включите службу smb.service . Смотрите smbd(8) для более подробной информации.

    Если вы хотите, чтобы сервер был доступен по имени хоста NetBIOS, пропишите желаемое имя в опции netbios name в smb.conf и запустите и включите службу nmb.service . Смотрите nmbd(8) для более подробной информации.

    Настройка межсетевого экрана

    Если вы используете межсетевой экран, не забудьте открыть необходимые порты (как правило, 137-139 + 445). Для получения информации о полном списке портов, смотрите использование портов Samba.

    Правило UFW

    Профиль Ufw для SMB/CIFS доступен в стандартной установке UFW в ufw-fileserver .

    Разрешите Samba, выполнив команду ufw allow CIFS от имени root.

    Если вы удалили профиль, создайте или отредактируйте файл /etc/ufw/applications.d/samba , добавив следующее:

    Затем загрузите этот профиль в UFW, запустив команду ufw app update Samba как root.

    После этого можно разрешить доступ к Samba, запустив ufw allow Samba от имени root.

    Служба firewalld

    Для настройки firewalld, чтобы разрешить Samba в зоне home, выполните:

    Эти три службы таковы:

    • samba : для общего доступа к файлам.
    • samba-client : для просмотра общих ресурсов других устройств по сети.
    • samba-dc : для контроллера домена Active Directory.

    Параметр —permanent сделает изменения постоянными.

    Использование

    Управление пользователями

    В следующем разделе описывается создание локальной (tdbsam) базы данных пользователей Samba. Для аутентификации пользователей и других целей Samba также может быть привязана к домену Active Directory, может сама служить контроллером домена Active Directory или использоваться с сервером LDAP.

    Добавление пользователя

    Для работы Samba требуется какой-нибудь Linux-пользователь — вы можете использовать существующего пользователя или создать нового.

    Хотя имена пользователей Samba общие с системными пользователями, Samba использует для них отдельные пароли. Чтобы добавить нового пользователя Samba, воспользуйтесь следующей, заменив пользователь_samba на имя нужного пользователя:

    Будет предложено задать пароль для этого пользователя.

    В зависимости от роли сервера может понадобиться изменить разрешения и атрибуты файлов для аккаунта Samba.

    Если вы хотите разрешить новому пользователю только доступ к Samba-ресурсам и запретить полноценный вход в систему, можно ограничить возможности входа:

    • отключить командную оболочку — usermod —shell /usr/bin/nologin —lock пользователь_samba
    • отключить вход по SSH — измените опцию AllowUsers в файле /etc/ssh/sshd_config
    Просмотр списка пользователей

    Список добавленных в Samba пользователей можно посмотреть с помощью команды pdbedit(8) :

    Смена пароля пользователя

    Чтобы сменить пароль пользователя, используйте smbpasswd :

    Создание общего ресурса для анонимных пользователей

    1. Создайте пользователя Linux, который будет использоваться для анонимных пользователей Samba:

    2. Добавьте в /etc/samba/smb.conf :

    Теперь все анонимные пользователи будут использовать Linux-пользователя guest для доступа к каталогам, указанным в guest.path (в данном примере /tmp/ ).

    Убедитесь, что общие ресурсы корректно настроены в соответствии с секцией Share Definitions из smb.conf.default.

    Включение следования по символическим ссылкам

    После изменений перезапустите службу smb.service .

    Расширенная конфигурация

    Создание ресурсов общего доступа от имени обычного пользователя

    Usershares — это возможность, позволяющая обычным пользователям добавлять, изменять и удалять собственные ресурсы общего доступа.

    1. Создайте каталог, в котором будут храниться описания пользовательских общих ресурсов:
    2. Создайте группу для пользователей, которые смогут создавать общие ресурсы:
    3. Измените владельца каталога на root , а группу на sambashare :
    4. Измените разрешения каталога usershares , чтобы только пользователи из группы sambashare могли создавать файлы. Эта команда также устанавливает sticky bit, благодаря которому пользователи не смогут удалять чужие общие ресурсы:

    Задайте эти переменные в конфигурационном файле smb.conf :

    Добавьте вашего пользователя в группу sambashare. Замените ваше_имя_пользователя на имя вашего linux-пользователя:

    Перезапустите службы smb.service и nmb.service .

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

    Если вы хотите предоставить общий доступ к файлам, находящимся в вашем домашнем каталоге, не забудьте задать доступ как минимум на чтение другим пользователям ( chmod a+rX ).

    Теперь у вас должна появиться возможность настраивать общий доступ samba, используя графический интерфейс. Например, в Thunar или Dolphin вы можете нажать правую кнопку мыши на любом каталоге и предоставить для него общий доступ в сети.

    Для настройки общего доступа через командную строку используйте одну из следующих команд:

    Установка и форсирование прав доступа

    Разрешения могут быть применены и к серверу, и к отдельным ресурсам:

    См. smb.conf(5) для более подробной информации о настройке прав доступа.

    Ограничение версии протокола для повышения безопасности

    В файле /etc/samba/smb.conf добавьте опции server min protocol и server max protocol для ограничения используемых версий протокола:

    См. server max protocol в smb.conf(5) для обзора поддерживаемых протоколов.

    Для совместимости со старыми клиентами и/или серверами вам может понадобиться указать client min protocol = CORE или server min protocol = CORE , но имейте в виду, что это делает вас уязвимым в связи с эксплойтами в SMB1, в том числе к ransomware атакам.

    Клиентам, использующим mount.cifs , может понадобиться указать правильный vers=* , например:

    Использование шифрования SMB

    Нативное шифрование транспорта SMB доступно с версии SMB 3.0. Среди клиентов, поддерживающих такое шифрование, имеются Windows 8 и новее, Windows Server 2012 новее, smbclient в Samba 4.1 и новее.

    Для использования шифрования по умолчанию установите параметр server smb encrypt глобально или для отдельных ресурсов. Возможные значения — off , enabled (значение по умолчанию), desired или required :

    Смотрите smb.conf(5) для более подробной информации, особенно разделы Effects for SMB1 и Effects for SMB2.

    Отключение общего доступа к принтерам

    По умолчанию Samba предоставляет общий доступ к принтерам, настроенным через CUPS.

    Если вам это не нужно, используйте следующие опции для отключения:

    Запрет определённых расширений файлов в общем ресурсе Samba

    Samba предоставляет опцию для блокирования файлов по определённым паттернам, вроде расширений файлов. Её можно использовать для предотвращения распространения вирусов или для того, чтобы пользователи не тратили место на определённые файлы. Более подробную информацию можно найти в smb.conf(5) .

    Увеличение пропускной способности

    Большинству пользователей подойдут настройки по умолчанию. Однако корректное использование ‘socket options’ может улучшить производительность, но ошибки в настройке также могут и ухудшить её. Проверяйте эффекты, прежде чем вносить какие-либо серьезные изменения.

    Читайте smb.conf(5) прежде чем применять описанные здесь опции.

    Эти опции прописываются в файле /etc/samba/smb.conf в секции [global] .

    SMB3 multi-channel может улучшить производительности, однако иногда может испортить данные из-за race conditions. В будущих версиях ситуация может улучшиться:

    Ограничение времени бездействия полезно для предотвращения исчерпания ресурсов сервера из-за большого количества неактивных подключений:

    Использование sendfile улучшает эффективность использования процессора и повышает скорость Samba:

    Установка min receivefile size разрешает zero-copy запись непосредственно из буфера сокета в кэш файловой системы (если доступен). Это может улучшить производительность, но требует тестирования:

    Асинхронное чтение/запись файлов может повысить производительность:

    Увеличение размера буферов приёма/отправки и флаги оптимизации сокетов могут быть полезны для улучшения производительности. Рекомендуется протестировать каждый флаг отдельно, так как они могут вызывать проблемы в некоторых сетях:

    Включение доступа для старых клиентов или устройств

    Последние версии Samba больше не предлагают старые методы аутентификации и протоколы, которые всё ещё используются некоторыми старыми клиентами (IP-камерами и т.д.). Такие устройства обычно требуют от сервера разрешения аутентификации NTLMv1 и протокола NT1, известного как CIFS. Чтобы эти устройства работали с последней версией Samba, добавьте эти два параметра в секцию [global] :

    Для анонимного/гостевого доступа достаточно лишь первого параметра. Если старое устройство использует имя и пароль для доступа, то нужен и второй параметр тоже.

    Включение поиска Spotlight

    Spotlight позволяет поддерживающим его клиентам (например, MacOS Finder) быстро искать общие файлы.

    Установите и запустите OpenSearch. Установите fs2es-indexer AUR , настройте каталоги, которые вы хотите индексировать, в /etc/fs2es-indexer/config.yml , и запустите/включите fs2es-indexer.service для периодического индексирования.

    Измените smb.conf как описано в Samba wiki и перезапустите smb.service для применения изменений.

    Клиент

    Установите пакет smbclient , который предоставляет ftp-подобный интерфейс командной строки. Часто используемые команды описаны в smbclient(1) .

    В качестве легковесной альтернативы (без возможности посмотреть список общих ресурсов и т.д.) можно использовать cifs-utils , который предоставляет команду /usr/bin/mount.cifs .

    Некоторые среды рабочего стола также имеют графический интерфейс для доступа к общим ресурсам и управления ими (смотрите #Настройка файлового менеджера).

    • smbclient требует наличия файла /etc/samba/smb.conf (смотрите раздел #Установка); можно просто создать пустой файл командой touch .
    • После установки cifs-utils или smbclient загрузите модуль ядра cifs или перезагрузитесь, чтобы не возникало ошибок монтирования.

    Просмотр публичных ресурсов для общего доступа

    Чтобы вывести список общедоступных ресурсов на сервере:

    Также можно использовать команду $ smbtree -N , которая покажет древовидную диаграмму всех общих ресурсов. Она использует широковещательные (broadcast) запросы и потому не рекомендуется для использования в сетях с большим числом компьютеров, но может быть полезна для проверки правильности имён общих ресурсов. Опция -N ( -no-pass ) отключает запрос пароля.

    Имена хостов NetBIOS/WINS

    Клиенты Samba обрабатывают имена хостов NetBIOS автоматически по умолчанию (поведение регулируется опцией name resolve order в smb.conf ). Другие программы (в том числе mount.cifs ) используют Name Service Switch, который не использует NetBIOS по умолчанию.

    Пакет smbclient предоставляет драйвер libnss для разрешения имён NetBIOS. Для его использования установите его вместе с пакетом samba (который предоставляет демон winbindd), запустите и включите службу winbind.service и добавьте wins в строку hosts в файле nsswitch.conf(5) :

    Теперь в процессе разрешения имён (например, при использовании mount.cifs или просто ping имя-netbios ) демон winbindd будет отправлять запросы с использованием протокола NetBIOS Name Service (NBNS, также известен как WINS).

    По умолчанию он отправляет широковещательный (broadcast) запрос в локальную сеть. Если у вас есть WINS-сервер, вы можете добавить wins server = ip-сервера-wins в smb.conf и перезапустить winbind.service , тогда winbindd и другие клиенты Samba станут отправлять unicast-запросы на указанный IP.

    Если вы хотите, чтобы разрешение имени локального компьютера (которое указывается в опции netbios name в smb.conf ) тоже работало, запустите и включите службу nmb.service , которая будет обрабатывать входящие запросы.

    Вы можете протестировать разрешение WINS с помощью nmblookup . По умолчанию он отправляет широковещательные запросы в вашу локальную сеть независимо от значения опции wins server .

    Имейте в виду, что WINS использует трафик, приходящий из порта 137.

    Отключение поддержки NetBIOS/WINS

    Если разрешение имён хостов NetBIOS/WINS не используется, может быть предпочтительно отключение этого протокола:

    Ручное монтирование

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

    Примонтируйте ресурс, в качестве type указав mount.cifs . Не все опции из перечисленных ниже необходимы или желательны:

    Опции uid и gid соответствуют локальному (клиентскому) пользователю/группе, которые получат доступ на чтение и запись по указанному пути.

    • Если используемые uid и gid не соответствуют пользователю на сервере, могут помочь опции forceuid и forcegid . Но имейте в виду, что тогда права доступа, отображаемые на клиенте, могут не соответствовать реальным правам доступа на сервере. Подробности смотрите в разделе File And Directory Ownership And Permissions в mount.cifs(8) § FILE AND DIRECTORY OWNERSHIP AND PERMISSIONS .
    • Для подключения общего ресурса Windows без аутентификации укажите «username=*» .
    • СЕРВЕР — Имя сервера.
    • имя_ресурса — Название каталога с общим доступом.
    • точка_монтирования — Локальный каталог, в который будет примонтирован ресурс.
    • [-o опции] — Смотрите страницу руководства mount.cifs(8) для получения информации.
    • Не используйте слэш / в конце пути. //СЕРВЕР/имя_ресурса/ не будет работать.
    • Если примонтированный вами ресурс работает нестабильно или зависает (freeze), попробуйте включить другую версию протокола SMB, используя опцию vers= . Например, vers=2.0 для Windows Vista.
    • Если при завершении работы системы на примонтированных ресурсах происходят таймауты, смотрите wpa_supplicant#Problem with mounted network shares (cifs) and shutdown.
    Хранение пароля от общих ресурсов

    Хранение паролей в доступном для чтения файле не рекомендуется. Более безопасным методом является использование файла, например, внутри /etc/samba/credentials :

    В команде mount замените опции username=myuser,password=mypass на credentials=/etc/samba/credentials/share .

    Для безопасности этот файл должен быть доступен только для root:

    Автоматическое монтирование

    С использованием NetworkManager и GIO/gvfs

    NetworkManager может быть настроен на запуск скриптов при изменении состояния сети. Приведённый ниже скрипт использует команду gio, чтобы автоматически монтировать общие ресурсы Samba аналогично тому, как делает ваш файловый менеджер, как описано ниже. Скрипт также безопасно размонтирует их перед отключением сети путём отслеживания событий pre-down и vpn-pre-down . Сделайте скрипт исполняемым после создания.

    Создайте символическую ссылку в каталоге /etc/NetworkManager/dispatcher.d/pre-down , чтобы скрипт получал события pre-down :

    С помощью записи в fstab

    Простой пример cifs записи в fstab с аутентификацией:

    • Пробелы в именах ресурсов должны быть заменены на \040 (восьмеричный ASCII-код для пробелов). Например, //СЕРВЕР/имя ресурса должно быть заменено на //СЕРВЕР/имя\040ресурса в /etc/fstab .
    • Чтобы разрешить монтирование простым пользователям без прав root, когда точка монтирования находится в доступном пользователю каталоге (например, домашнем), добавьте опцию users (обязательно с s на конце).
    С помощью юнита systemd

    Создайте новый файл .mount в каталоге /etc/systemd/system , например mnt-myshare.mount . Смотрите systemd.mount(5) для более подробной информации.

    What= путь к общему ресурсу

    Where= путь, куда он будет примонтирован

    Options= опции монтирования

    • К сетевым точкам монтирования автоматически добавляются After -зависимости remote-fs-pre.target , network.target и network-online.target , а также Before -зависимость remote-fs.target , если не указана опция nofail ; иначе используется Wants . noauto в Options для отключения автоматического монтирования (если его не будет монтировать какой-нибудь другой юнит).
    • Если в качестве адреса сервера вы хотите использовать имя хоста вместо IP-адреса, добавьте nss-lookup.target в After . Это может предотвратить ошибки монтироваия при загрузке.
    • На случай, если удалённая система станет недоступна, добавьте ForceUnmount=true в секцию [Mount] , чтобы разрешить принудительное размонтирование.
    • Если общий ресурс имеет группы с доступом только для чтения, добавьте uid=пользователь или gid=группа в Options= , чтобы указать пользователя/группу, которые имеют право на запись.

    Для использования mnt-myshare.mount запустите этот юнит и включите его для автоматического монтирования при загрузке системы.

    Автомонтирование

    Для автоматического монтирования ресурса (при обращении к нему, как autofs) можно использовать следующий блок automount:

    Остановите и отключите юнит mnt-myshare.mount , а вместо него запустите и включите юнит mnt-myshare.automount .

    smbnetfs

    Для начала удостоверьтесь, что вам доступны все ресурсы, которые вам нужны для монтирования:

    Если это не работает, найдите и измените следующую строку в /etc/samba/smb.conf подобным образом:

    Затем перезапустите smb.service и nmb.service .

    Если всё работает как нужно, установите пакет smbnetfs .

    Затем добавьте следующую строку в файл /etc/fuse.conf :

    Скопируйте каталог /etc/smbnetfs/.smb в вашу домашнюю директорию:

    Затем создайте ссылку на файл smb.conf :

    Если для доступа к каким-либо общим ресурсам нужен пароль, измените файл

    /.smb/smbnetfs.auth , прописав в нём пароли для определённых хостов примерно так:

    Также можно добавить записи для определённых хостов, которые будут монтироваться smbnetfs, если это необходимо. Более подробную информацию можно найти в

    Если вы используете Dolphin или GNOME Files, можно добавить следующую опцию

    /.smb/smbnetfs.conf , чтобы избежать предупреждений о переполненном диске, так как smbnetfs по умолчанию сообщает, что свободно 0 байт:

    Когда вы закончите настройку, необходимо выполнить

    В противном случае smbnetfs пожалуется: ‘insecure config file permissions’.

    Наконец, чтобы примонтировать сетевое окружение Samba в каталог по вашему выбору, выполните

    Демон

    Пакет в Arch Linux также поддерживает дополнительный «общесистемный» режим для smbnetfs. Чтобы его включить, вам необходимо выполнить указанные изменения в каталоге /etc/smbnetfs/.smb .

    Затем вы можете запустить и/или включить в автозагрузку демон smbnetfs обычным способом. Общесистемной точкой монтирования является /mnt/smbnet/ .

    autofs

    Смотрите статью Autofs для получения информации об автомонтировщике ядра (kernel-based) Linux.

    Настройка файлового менеджера

    GNOME Files, Nemo, Caja, Thunar и PCManFM

    Чтобы получить доступ к ресурсам samba через GNOME Files, Nemo, Caja, Thunar или PCManFM, установите пакет gvfs-smb , доступный в официальных репозиториях.

    Нажмите Ctrl+l и введите smb://имя_сервера/ресурс в панель адреса, чтобы получить доступ к ресурсу.

    Примонтированный ресурс, вероятно, будет представлен в файловой системе по пути /run/user/ваш_UID/gvfs или

    Приложения KDE (например, Dolphin) имеют встроенную возможность просмотра ресурсов Samba, в этом случае нет необходимости в дополнительных пакетах. Используйте адрес smb://имя_сервера/имя_ресурса для подключения и просмотра файлов. Для доступа к файлам из приложений, не являющихся частью KDE, можно установить kio-fuse .

    Графический интерфейс настроек предоставляется пакетом kdenetwork-filesharing .

    Другие графические окружения

    Есть несколько полезных программ, но им могут требоваться пакеты, созданные для них. Это может быть сделано с помощью Arch package build system. Хорошая новость заключается в том, что они не нуждаются в особом окружении, устанавливаемом для их поддержки, так что они «тянут» за собой меньше пакетов.

    • pyneighborhoodAUR доступен AUR.
    • Плагины LinNeighborhood, RUmba, xffm-samba для Xffm недоступен в официальных репозиториях или в AUR. Поскольку они не поддерживаются официально (или поддерживаются, но неофициально), они могут быть устаревшими и не работать в полной мере

    Советы и рекомендации

    Обнаружение общих сетевых ресурсов

    Если о других системах в локальной сети ничего не известно, а инструменты вроде smbnetfs не подходят, можно попробовать поискать ресурсы Samba вручную.

    Используйте nmap для сканирования локальной сети и поиска систем с открытым TCP-портом 445, который используется протоколом SMB. Имейте в виду, что вам может понадобиться использовать опцию -Pn или задать другой тип пинг-сканирования, так как Windows-системы обычно защищены межсетевым экраном.

    Первый результат — другая система; второй — клиент, с которого было выполнено сканирование.

    Теперь можно подключиться к этим IP-адресам напрямую, но если вы хотите использовать имена хостов NetBIOS, можно использовать nmblookup(1) , чтобы узнать имена NetBIOS. Имейте в виду, что это не будет работать, если NetBIOS отключен на стороне сервера.

    Независимо от вывода, смотрите на <20>, который обозначает хост с открытыми сервисами.

    С помощью smbclient(1) чтобы посмотреть список доступных ресурсов на сервере. Вместо IP-адреса можно использовать NetBIOS-имя ( PUTER в данном примере), если оно доступно. Если будет запрошен пароль, можно просто нажать Enter — список общих ресурсов всё равно отобразится:

    Удалённое управление компьютером Windows

    Samba предлагает набор инструментов для взаимодействия с Windows. Они могут пригодиться, если доступ к компьютеру Windows через удалённый рабочий стол невозможен, как показано на некоторых примерах.

    Отправка команды shutdown с комментарием:

    Принудительное выключение можно вызвать, заменив -C с комментарием на один -f. Для перезапуска можно добавить -r, за которым следует -C или -f.

    Остановка и запуск служб:

    Список доступных команд net rpc:

    Решение проблем

    Не удаётся запустить Samba SMB/CIFS сервер

    • Проверьте smb.conf на наличие ошибок с помощью testparm(1) .
    • Проверьте корректность прав доступа в /var/cache/samba/ и перезапустите smb.service :

    Проблемы с разрешениями на SELinux

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

    Аналогично, samba_export_all_ro и samba_export_all_rw дадут доступ к чтению и записи всех файлов.

    Проблемы с разрешениями на AppArmor

    Если используется путь к ресурсу, расположенному вне домашнего каталога или каталога usershares, внесите его в белый список в /etc/apparmor.d/local/usr.sbin.smbd . Например:

    No dialect specified on mount

    Клиент использует неподдерживаемую версию SMB/CIFS, которую сервер не принимает.

    Клиенты Windows продолжают запрашивать пароль, даже если общие ресурсы Samba созданы с правами гостя

    Установите опцию map to guest в секции global в файле /etc/samba/smb.conf :

    С версии Samba 4.10.10 используйте Bad Password вместо Bad User .

    Проблемы подключения к Windows 7 — mount error(12): cannot allocate memory

    Известная ошибка Windows 7 «mount error(12): cannot allocate memory» может быть исправлена установкой пары ключей в реестре системы Windows:

    • HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache (установить значение 1 )
    • HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size (установить значение 3 )

    В качестве альтернативы можно запустить командную строку от имени Администратора и выполнить следующее:

    Выполните одно из следующих действий, чтобы изменения вступили в силу:

    • Перезагрузите Windows
    • Перезапустите службу на сервере через services.msc
    • Выполните в командной строке net stop lanmanserver и net start lanmanserver ; после остановки служба может перезапуститься автоматически

    Проблемы подключения к Windows 10 1709 и новее — «Windows cannot access» 0x80004005

    Эта ошибка затрагивает некоторые машины под управлением Windows 10 версии 1709 и более поздних версий. Она не связана с отключением SMB1 в этой версии, а связана с тем, что Microsoft отключила небезопасный вход для гостей в этой версии для некоторых.

    Чтобы исправить ситуацию, откройте редактор групповой политики ( gpedit.msc ). Перейдите к настройке Конфигурация компьютера\Административные шаблоны\Сеть\Рабочая станция Lanman > Включить небезопасные гостевые входы и включите её. В качестве альтернативы измените следующее значение в реестре:

    Ошибка: Failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL

    Если вы являетесь домашним пользователем, используете samba исключительно для организации общего доступа к файлам с сервера или NAS и не заинтересованы в организации общего доступа к принтерам, вы можете исправить эту ошибку, добавив следующие строки в файл /etc/samba/smb.conf :

    Перезапустите службу smb.service и проверьте журнал:

    и больше ошибка не должна появляться.

    Не удается предоставить общий доступ к папке

    Проблема проявляется в том, что, когда вы пытаетесь предоставить общий доступ к папке через Dolphin (файловый менеджер), и вначале, вроде бы, все работает нормально, после перезапуска Dolphin иконка ресурса исчезла из папки, а в терминале (Konsole) вы видите следующий вывод:

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

    «Просмотр» сети выдает ошибку «Не удалось получить список ресурсов с сервера» (Failed to retrieve share list from server)

    И вы используете межсетевой экран (iptables), поскольку не доверяете вашей локальной (школа, университет, отель) сети. Это может происходить по следующей причине: когда smbclient просматривает локальную сеть, он посылает широковещательный запрос на udp-порт 137. Затем серверы сети отвечают вашему клиенту, но, поскольку исходный адрес ответа отличается от адреса назначения, который видел iptables при отправке запроса, iptables не признает ответ как «установленное соединение» («ESTABLISHED») или «относящийся к запросу» («RELATED»), и, следовательно, пакет отбрасывается. Возможное решение — добавление:

    в вашу конфигурацию iptables.

    Для Uncomplicated Firewall добавьте nf_conntrack_netbios_ns в конце следующей строки в /etc/default/ufw :

    и затем выполните следующие команды от имени root:

    Чтобы сделать изменения постоянными, добавьте следующую строку в конце файла /etc/ufw/sysctl.conf :

    protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE

    Вероятно, клиент не имеет доступа к общим ресурсам. Удостоверьтесь, что IP-адрес клиента прописан в строке hosts allow = файла /etc/samba/smb.conf .

    Также проблема может быть в том, что клиент использует недопустимую версию протокола. Для проверки попробуйте подключиться с помощью smbclient , вручную указав максимальную версию протокола:

    Если команда выполнится успешно, создайте файл конфигрурации:

    Подключение к серверу завершилось неудачей: (Error NT_STATUS_UNSUCCESSFUL)

    Вероятно, вы указываете smbclient неправильное имя сервера. Чтобы узнать его, запустите на сервере команду hostnamectl и найдите строку «Transient hostname».

    Подключение к серверу завершилось неудачей: (Error NT_STATUS_CONNECTION_REFUSED)

    Убедитесь, что сервер запущен.

    Protocol negotiation failed: NT_STATUS_CONNECTION_RESET

    Вероятно, на сервере запрещён SMB1. Добавьте опцию client max protocol = SMB2 в /etc/samba/smb.conf . Или просто добавьте -m SMB2 к команде smbclient .

    Правильный пароль не подходит (ошибка 1326)

    В Samba 4.5 аутентификация NTLMv1 по умолчанию отключена. Рекомендуется установить последние доступные обновления на клиентах и запретить доступ для неподдерживаемых клиентов.

    Если вам всё ещё нужна поддержка очень старых клиентов без поддержки NTLMv2 (например, Windows XP), можно включить NTLMv1, однако это не рекомендуется по соображениям безопасности:

    Если клиенты NTLMv2 не могут пройти аутентификацию при включенном NTLMv1, создайте на клиенте следующий файл:

    Это изменение также влияет на общие ресурсы samba, смонтированные с помощью mount.cifs. Если после обновления до Samba 4.5 монтирование не удаётся, добавьте опцию sec=ntlmssp к команде монтирования, например:

    Смотрите mount.cifs(8) : ntlmssp — Использовать хэширование паролей NTLMv2, заключённое в Raw NTLMSSP сообщении. По умолчанию в основных версиях ядра до версии 3.8 было sec=ntlm. В версии 3.8 значение по умолчанию было изменено на sec=ntlmssp.

    Сопоставление зарезервированных символов Windows

    Начиная с ядра 3.18, модуль cifs по умолчанию использует опцию «mapposix». При монтировании ресурса с использованием расширений unix и конфигурации Samba по умолчанию, файлы и каталоги, содержащие один из семи зарезервированных символов Windows : \ * < > ? , отображаются, но доступ к ним невозможен.

    • Использовать недокументированную опцию монтирования nomapposix для cifs
    • Настроить Samba для переадресации символов стиля mapposix («SFM», Services for Mac) на правильные родные символы с помощью fruit
    • Написать своё сопоставление запрещённых символов с помощью catia

    Последний подход (использование catia или fruit) имеет недостаток, заключающийся в фильтрации файлов с непечатаемыми символами.

    Папка, к которой открыт доступ через графический интерфейс, недоступна для гостей

    Этот раздел предполагает, что:

    1. Общие папки настроены, как описано в разделе #Создание ресурсов общего доступа от имени обычного пользователя
    2. Общая папка создана через графический интерфейс и не пользователем root
    3. Включен гостевой доступ для папки
    4. Служба Samba перезапускалась с момента последнего изменения файла /etc/samba/smb.conf

    В качестве примера далее используются следующие значения:

    • Общая папка находится внутри домашнего каталога пользователя ( /home/yourUser/Shared )
    • Имя общей папки — MySharedFiles
    • Гостевой доступ открыт только для чтения.
    • Пользователи Windows будут иметь доступ к содержимому общей папки без аутентификации
    Проверьте правильность конфигурации samba

    Выполните следующую команду из терминала, чтобы проверить правильность настроек:

    Проверьте правильность создания общей папки

    Выполните следующие команды из терминала:

    Если всё хорошо, должен быть файл с именем mysharedfiles

    Посмотрите его содержимое:

    Содержимое файла должно быть примерно таким:

    Проверьте доступ к папке от имени гостя

    Выполните следующую команду из терминала. Если будет запрошен пароль, просто нажмите Enter:

    Если всё хорошо, в столбце Sharename должен присутствовать MySharedFiles.

    Выполните следующую команду, чтобы получить доступ к общей папке в качестве гостя (анонимный вход)

    Если всё хорошо, должно появиться приглашение samba-клиента:

    Проверьте, что гость может посмотреть содержимое папки:

    Если появится ошибка NTFS_STATUS_ACCESS_DENIED , то проблема скорее всего связана с правами доступа к каталогам Unix. Убедитесь, что пользователь samba имеет доступ к нужной папке и всем родительским папкам. Это можно проверить, войдя в учётную запись нужного пользователя (например, с помощью sudo) и попытавшись перейти в нужный каталог.

    Mount error: Host is down

    Такая ошибка может появиться при монтировании общих ресурсов Synology NAS. Для решения проблемы используйте опцию vers=1.0 .

    Software caused connection abort

    Файловые менеджеры, использующие gvfs-smb , могут выдавать ошибку Software caused connection abort при записи файла на общий ресурс/сервер. Это может быть связано с тем, что на сервере используется SMB/CIFS версии 1, которую многие маршрутизаторы используют для организации общего доступа к USB-накопителям (например, маршрутизаторы Belkin). Для записи на эти общие ресурсы укажите версию CIFS с помощью опции vers=1.0 . Например:

    Это также может произойти после обновления Samba до версии 4.11, в которой SMB1 отключен по умолчанию. Его можно включить с помощью следующей опции:

    Ошибка аутентификации

    Убедитесь в отсутствии пробелов перед именем пользователя в настройках Samba:

    Windows 1709 и новее не видит сервер samba при просмотре сети

    В Windows 10 версии 1511 поддержка SMBv1 и, соответственно, обнаружение устройств NetBIOS были отключены по умолчанию. Более новые версии Windows, начиная с версии 1709 («Fall Creators Update»), больше не позволяют установить клиент SMBv1. Это приводит к тому, что хосты с Samba не отображаются в просмотре сети в Проводнике. Хотя проблем с подключением нет и Samba будет работать нормально, пользователи могут захотеть, чтобы их хосты Samba всё-таки отображались. wsdd AUR реализует демон Web Service Discovery. Благодаря ему (Samba) хосты, такие как NAS, могут быть обнаружены клиентами Web Service Discovery, такими как Windows. Настройки по умолчанию должны работать для большинства установок, и всё, что вам нужно сделать, это запустить и включить службу wsdd.service .

    Настройки по умолчанию (представлять себя, используя имя хоста машины и рабочую группу «WORKGROUP») должна подходить в большинстве случаев. Если нужно, вы можете изменить настройки, передав wsdd дополнительные аргументы, добавив их в /etc/conf.d/wsdd (подробности есть в руководстве wsdd).

    wsdd2 AUR делает то же самое, но написан на C, а не на Python. По умолчанию он берёт параметры netbios name и workgroup из файла smb.conf .

    Файлы из IOS больше не могут копироваться в общий ресурс Samba в Arch Linux, начиная с IOS 14.5

    Начиная с IOS 14.5 при попытке передачи данных с устройства под управлением IOS с помощью приложения «Файлы» на общий ресурс samba в Arch Linux возникает ошибка:

    Introduction to Samba

    Computer networks are often comprised of diverse systems. While operating a network made up entirely of Ubuntu desktop and server computers would definitely be fun, some network environments require both Ubuntu and Microsoft Windows systems working together in harmony.

    This is where Samba comes in! Samba provides various tools for configuring your Ubuntu Server to share network resources with Windows clients. In this overview, we’ll look at some of the key principles, how to install and configure the tools available, and some common Samba use cases.

    Samba functionality

    There are several services common to Windows environments that your Ubuntu system needs to integrate with in order to set up a successful network. These services share data and configuration details of the computers and users on the network between them, and can each be classified under one of three main categories of functionality.

    File and printer sharing services

    These services use the Server Message Block (SMB) protocol to facilitate the sharing of files, folders, volumes, and the sharing of printers throughout the network.

    File server
    Samba can be configured as a file server to share files with Windows clients — our guide will walk you through that process.

    Print server
    Samba can also be configured as a print server to share printer access with Windows clients, as detailed in this guide.

    Directory services

    These services share vital information about the computers and users of the network. They use technologies like the Lightweight Directory Access Protocol (LDAP) and Microsoft Active Directory.

    Microsoft Active Directory
    An Active Directory domain is a collection of users, groups, or hardware components within a Microsoft Active Directory network. This guide will show you how to set up your server as a member of an Active Directory domain.

    NT4 Domain Controller (deprecated)
    This guide will show you how to configure your Samba server to appear as a Windows NT4-style domain controller.

    OpenLDAP backend (deprecated)
    This guide will show you how to integrate Samba with LDAP in Windows NT4 mode.

    Authentication and access

    These services establish the identity of a computer or network user, and determine the level of access that should be granted to the computer or user. The services use such principles and technologies as file permissions, group policies, and the Kerberos authentication service.

    Share access controls
    This article provides more details on controlling access to shared directories.

    AppArmor profile for Samba
    This guide will briefly cover how to set up a profile for Samba using the Ubuntu security module, AppArmor.

    Всё о программе Samba

    Всё о программе Samba

    4 Августа 2022

    Чтобы решить проблемы, вызванные разобщенностью Microsoft Windows и Linux в корпоративных сетях и добиться «прозрачности» и доступности для администраторов и пользователей одной корпоративной сети к другой, применяется протоколы SMB/CIFS и программа Samba со стороны UNIX/Linux.

    Что умеет Samba?

    Samba представляет собой программный пакет с открытым исходным кодом, дающий сетевым администраторам возможность гибко и свободно настраивать, конфигурировать и выбирать системы и оборудование, то есть устанавливать на компьютерах UNIX/Linux имитации устройств с Windows. Это упрощает выполнение задач по обмену файлами (как файл-серверам) или задавать параметры печати в качестве принт-серверов.

    Принцип программы Samba

    Принцип программы Samba

    Samba обеспечивает свободный доступ к:

    • дискам Linux к Windows-компьютерам;
    • дискам Windows к оборудованию с ПО Linux;
    • принтерам Linux к Windows-компьютерам;
    • принтерам Windows к Linux-системам.

    Протоколы SMB/CIFS: что это такое, в чем различия

    Говоря о программе Samba немаловажно упомянуть о протоколах SMB и CIFS:

    • SMB (Server Message Block) – это один из наиболее старых протоколов (был разработан в 1983 году). SMB изначально существовал как клиент-серверный протокол для получения доступа к файлам, каталогам и сетевым ресурсам, а также для обмена информацией по межсистемным процессам. На сегодняшний день основное назначение SMB (версия 3.1.1.) – это установка соединения с устройствами со старыми версиями ОС Microsoft для подключения к серверам и обмена файлами.
    • CIFS (Common Internet File System) представляет собой часть протокола SMB и применяется для удаленного подключения нескольких платформ – Windows, Linux или macOS. Отличительная характеристика CIFS – это его универсальность, позволяющая идентифицировать и читать файлы системы NTFS, применяемой в Windows, и HFS из macOS, чтобы совместно использовать эти файлы и принтеры между машинами с Windows и UNIX.

    В отличие от SMB, CIFS имеет более широкий функционал – этот протокол способен поддерживать символические и жесткие ссылки, а также файлы больших размеров.

    Но сейчас CIFS почти не используется, так как в последних версиях Windows (начиная с версии 8) используются протоколы SMB 2 или SMB 3, которые по сути являются обновленной версией CIFS.

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

    Первым этапом нужно создать в панели управления все необходимые для этой сети серверы. Затем следует объединение всех машин через панель управления (раздел «Сети») в единую локальную сеть с присвоением каждому серверу локального IP-адреса. После того, как сеть будет создана, нужно провести настройки сетевых адаптеров для каждого сервера.

    Настройка сетевого адаптера ОС Centos для Linux проводится так. Подключаемся к виртуальному серверу с правами суперпользователя и выполняем команду:

    В результате должен отобразиться перечень подключенных интерфейсов:

    eth0: flags=4163 mtu 1500
    inet 5.200.47.73 netmask 255.255.255.0 broadcast 5.200.47.255
    inet6 fe80::250:56ff:fe01:29a9 prefixlen 64 scopeid 0x20
    ether 00:50:56:01:29:a9 txqueuelen 1000 (Ethernet)
    RX packets 760 bytes 57362 (56.0 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    eth1: flags=4163 mtu 1500
    inet6 fe80::8f6:6de2:ec53:e800 prefixlen 64 scopeid 0x20
    ether 00:50:56:01:03:59 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 22 bytes 3580 (3.4 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    lo: flags=73 mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10
    loop txqueuelen 1 (Local Loopback)
    RX packets 64 bytes 5184 (5.0 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 64 bytes 5184 (5.0 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    В настройках сети находим поле MAC, для которого в списке интерфейсов вывелся параметр ether; теперь надо зафиксировать название интерфейса, в этом примере – eth1.

    Прежде чем настраивать адаптер в ОС, понадобится уточнить в параметрах сети, была ли выполнена активация для опции DHCP в панели управления рабочей сетью.

    Затем перейти в каталог с конфигурационными файлами сетевых интерфейсов:

    Скопировать конфигурационный файл существующего интерфейса, указав имя нового интерфейса:

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

    HWADDR= NAME=
    DEVICE=
    ONBOOT=yes
    USERCTL=no
    BOOTPROTO=dhcp
    check_link_down() <
    return 1;
    >

    Сохраняем изменения.
    После всех действий перезапустите сетевые службы сервера, чтобы изменения вступили в силу:

    service network restart

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

    Для сетевых интерфейсов Windows настройка будет проводиться по следующей схеме:

    • подключаемся к виртуальному серверу по RDP и открываем Network and Sharing Center. Для этого на рабочем столе Windows выбираем и открываем настройки сетевых подключений. В появившемся окне выбираем требуемый интерфейс, не имеющий доступа к сети. Для проверки состояния этого интерфейса откроем его детализацию (кнопка Details). Затем сравниваем значение поля Physical Address со информацией поля MAC в панели управления;
    • если при создании сети в панели была активирована опция DHСP, то сетевой адаптер настроится автоматически. Уточнить состояние этой опции можно через свойства сети в панели управления;
    • если опция DHCP при создании сети активирована не была, настраивать сеть понадобится вручную. Для этого свойства адаптера открываются через клавишу Properties (выбирается соединение IPv4 и нажимается Properties), затем в появившемся окне в поле IP-address вводится выданный адрес, а в поле Subnet mask – маска подсети. Все значения можно найти в панели в настройках сервера (раздел Сети) или в меню Сеть. После этого все изменения обязательно сохраняются.

    Для проверки настроек сетевого адаптера выполняем команду:

    Чтобы проверить Windows Server 2016, пинг проводится на другой локальный сервер.

    Настройка общей папки в Linux и Windows

    Linux

    Установка и настройка Samba-сервер для Linux состоит из следующих этапов:

    1.Обновления информации о репозиториях и для существующих пакетов в системе:

    apt-get update && apt-get upgrade

    2.Установки пакета Samba:

    apt-get install -y samba samba-client

    3.Создания резервной копии файла конфигурации:

    cp /etc/samba/smb.conf /etc/samba/smb.conf_sample

    4.Создания директории для файлов, так чтобы все пользователи имели к ней доступ:

    mkdir -p /samba/public

    5.Создания каталога для всех пользователей:

    6.Изменения прав доступа к каталогу:

    cd /samba
    chmod -R 0755 public

    Важно! Для смены владельца и/или группы пользуемся командой chown

    7.Создания директории для ограниченного круга лиц

    8.Создания групп пользователей с применением системных инструментов:

    9.Добавления пользователей Samba:

    10.Внесения созданных пользователей в группу:

    chgrp smbgrp /samba/private

    11.Изменения группы, к которой относится приватная директория:

    chgrp smbgrp /samba/private

    12.Создания с помощью инструментов Samba пароля для добавленного пользователя:

    smbpasswd -a user1

    13.Редактирования конфигурационного файла samba с помощью текстового редактора:

    текстовый редактор /etc/samba/smb.conf

    Все строки из файла удаляются, а вместо них вставляются следующие:

    [global]
    workgroup = WORKGROUP
    security = user
    map to guest = bad user
    wins support = no
    dns proxy = no
    [public]
    path = /samba/public
    guest ok = yes
    force user = nobody
    browsable = yes
    writable = yes
    [private]
    path = /samba/private
    valid users = @smbgrp
    guest ok = no
    browsable = yes
    writable = yes

    Сохранения введенных строк с использованием комбинации клавиш Ctrl + X, затем с нажатием Y и Enter.

    Названия строк при этом обозначают:

    • наименование одной из трех секций конфигурационного файла: global – данная секция отвечает за общие настройки Samba-сервера; public и private – секции, описывающие настройки директорий общего доступа;
    • пять параметров в секции global: workgroup – наименование рабочей группы, security – уровень безопасности сервера с авторизацией по паре логин/пароль при значении user, map to guest — способ обработки запросов с отклонением неправильного пароля даже для существующего пользователя (значение bad user), wins support – включение/выключение поддержки WINS, dns proxy – обеспечение проксирования запросов к DNS;
    • настройки директорий в секциях: path – полный путь до директории на жестком диске, guest ok – возможность доступа к каталогу без пароля (гостевой), force user – пользователь, ведущий работу с каталогом (для безопасности сервера используется значение nobody) , browsable — демонстрация конкретного каталога на сервере; writable – право пользователя при значении “yes” переименовывать, добавлять, удалять, редактировать файлы и перемещать их в каталоги; valid users – список пользователей с предоставленным доступом к каталогу.

    14.Проверку настроек проводим командой:

    15.Выполняем перезапуск сервера:

    service smbd restart
    service nmbd restart

    Для настройки межсетевого экрана нужно открыть в правилах TCP-порты 139 и 445, а также UDP-порты 137 и 138 (для подсетей с высоким уровнем доверия). Если нужно указать собственный диапазон адресов, значение после ключа “-s” заменяется:

    iptables -A INPUT -p tcp -m tcp —dport 445 -s 10.0.0.0/24 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp —dport 139 -s 10.0.0.0/24 -j ACCEPT
    iptables -A INPUT -p udp -m udp —dport 137 -s 10.0.0.0/24 -j ACCEPT
    iptables -A INPUT -p udp -m udp —dport 138 -s 10.0.0.0/24 -j ACCEPT

    16.После перезагрузки сервера сохранить правила и применять их поможет пакет iptables-persistent. Для его установки вводится команда:

    apt-get install iptables-persistent

    Далее понадобится подтверждение запоминаний существующих правил iptables и их проверка:

    Настройка общей папки в ОС Windows

    Настройки общего доступа к папкам public и private в ОС Windows выполняются аналогично с Linux. Чтобы обеспечить беспарольный доступ к каталогу, настроим ограничения защиты в панели управления:

    Панель управления → Сеть → Центр управления сетями и общим доступом → Расширенные настройки общего доступа

    В обновленном окне надо открыть раздел “Все сети” и выбрать секцию “Общий доступ с парольной защитой”, после чего отключить этот параметр и сохранить изменения. Доступ к самому каталогу открывается так: кликом по папке правой кнопки мыши разворачивается контекстное меню, в котором выполняются действия:

    Свойства → Доступ → Расширенная настройка → Открыть общий доступ к этой папке

    В поле “Имя общего ресурса” указывается название, отображаемое для пользователей. После этого кликается кнопка “Разрешения”, выбирается “Все” и устанавливается “Полный доступ”, и все это подтверждается.Затем в свойствах папки public выбирается “Общий доступ”, добавляются все пользователи, делегируются права на чтение и запись, и кликаются кнопки “Поделиться” и “Готово”.

    Порядок настройки папки общего доступа для ограниченного числа пользователей будет таким:

    • выбираем “Свойства” папки, открываем вкладку “Доступ” и разворачиваем “Расширенные настройки”;
    • в открывшемся окне выбираем опцию “Открыть общий доступ к этой папке” и нажимаем “Разрешения”;
    • выбираем “Все” в поле “Группы или пользователи” и жмем “Удалить” — это закрывает анонимный доступ к папке;
    • во вновь появившемся окне выполняем следующие действия: “Добавить” → “Дополнительно” → “Поиск” → выбор пользователя, которому нужно предоставить доступ к каталогу. Точно по такой же схеме можно добавить пользователей в составе группы;
    • устанавливаем права доступа (или полного доступа к директории) для выбранных лиц: нажимая “OK” переходим к окну свойств папки, выбираем “Общий доступ”, ищем в поле выбора пользователей и групп и добавляем нужного человека (“Дополнительно” → “Поиск” → установка пользователя двойным кликом);
    • проверяем правильность выбора пользователя, кликаем “OK”, задаем все требуемые уровни разрешений, прожимаем “Поделиться” и “Готово”.

    Чтобы подключиться к общим папкам из среды Linux, понадобится установить отдельный пакет ПО — smbclient. Для этого вводим команду:

    sudo apt-get install smbclient

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

    Эту команду не обязательно вводить каждый раз — для этого монтируем общую директорию как сетевой диск через установку пакета cifs-utils:

    sudo apt-get install cifs-utils

    и применяем шаблон:

    mount -t cifs -o username= ,password= // /

    Важно! При подключении к общепользовательским папкам для Windows-сервера в не защищенных паролями директориях устанавливается имя пользователя “Everyone”, для Linux-сервера — “nobody”.

    Подключение к общим папкам из среды Windows проводится по иной схеме. Для этого в проводнике или окне запуска программ (Windows + R), применяется шаблон:

    Указанный только один IP-адрес сервера выдает список общих папок.

    Если при подключении к Windows-серверу всплывает окно с требованием ввода учетной записи, в строку имени пользователя заносится Everyone, а пароль остается пустым.

    Подключение к Linux-серверу из ОС Windows выполняется через шаблон или через адрес сервера.

    Как создать общий сетевой ресурс в Samba

    Создание общего сетевого ресурса в Samba включает этапы:

    –формирования директории, которую надо установить общедоступной:

    –создания бэкапа для подстраховки:

    sudo cp /etc/samba/smb.conf

    –редактирования файла «/etc/samba/smb.conf»:

    sudo nano /etc/samba/smb.conf

    –добавления в файл следующих сведений:

    [ ]
    path = /home/ /
    valid users =
    read only = no

    –после заполнения файла своими данными сохраняем введенные сведения и перезапускаем Samba:

    sudo service smbd restart

    –затем проверяем директорию smb.conf наличие неточностей:

    –доступ к общему сетевому ресурсу предоставляется так:

    sudo apt-get install smbclient
    # Просмотр всех общих ресурсов:
    smbclient -L // / -U
    # Подключение:
    smbclient // / -U

    Примечание 1: Для подключения к вашему общему сетевому ресурсу задействуйте имя вашего пользователя () и пароль, который располагается в «smb:////»

    Стоит запомнить, что «» значение переводится в «[]», иначе говоря, в название общепользовательского ресурса, вписанного вами в «/etc/samba/smb.conf».

    Примечание 2: Группа пользователей samba по умолчанию носит название «WORKGROUP».

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *