Перейти к содержимому

Smb conf где лежит

  • автор:

23.2. Настройка сервера Samba

Файл конфигурации Samba по умолчанию ( /etc/samba/smb.conf ) позволяет пользователям просматривать свои домашние каталоги как ресурсы Samba. Служба Samba также позволяет разделять все настроенные в системе принтеры в виде общих принтеров Samba. Другими словами, вы можете подключить к своему компьютеру принтер и печатать на нём, работая в сети на компьютерах с Windows.

23.2.1. Настройка в графическом режиме

Чтобы настроить Samba в графическом интерфейсе, воспользуйтесь средством Настройка сервера Samba (Samba Server Configuration Tool) . Если вас интересует настройка в командной строке, перейдите к разделу 23.2.2 Настройка в командной строке .

Средство Настройка сервера Samba (Samba Server Configuration Tool) — это графическое приложение для управления общими ресурсами, пользователями и основными настройками сервера Samba. Оно изменяет файлы конфигурации в каталоге /etc/samba/ . При этом сохраняются изменения внесённые за рамками этого приложения.

Чтобы вы могли использовать это приложение, у вас должна работать система X Window, должен быть установлен RPM-пакет system-config-samba и вы должны иметь привилегии root. Чтобы запустить средство Настройка сервера Samba (Samba Server Configuration Tool) с рабочего стола, выберите в Главном меню (Main Menu) (на панели) => Системные параметры (System Settings) => Настройка сервера (Server Settings) => Samba или введите команду system-config-samba в приглашении оболочки (например, в XTerm или терминале GNOME).

Рисунок 23-1. Настройка сервера Samba

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

23.2.1.1. Настройка параметров сервера

Первым шагом настройки сервера Samba является настройка основных параметров сервера и нескольких параметров безопасности. Запустив приложение, выберите в выпадающем меню Настройка (Preferences) => Параметры сервера (Server Settings) . На экране появится вкладка Основные (Basic) , показанная на рисунке 23-2 .

Рисунок 23-2. Настройка основных параметров сервера

На вкладке Основные (Basic) определите, к какой рабочей группе должен относиться компьютер, а также его краткое описание. Этим полям соответствуют параметры workgroup и server string в файле smb.conf .

Рисунок 23-3. Настройка параметров безопасности сервера

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

Режим аутентификации (Authentication Mode) — Этой настройке соответствует параметр security . Выберите один из следующих типов проверки подлинности.

ADS — Сервер Samba работает как участник домена в сфере домена Active Directory (Active Directory Domain, ADS). Для этого на сервере должен быть установлени и настроен Kerberos, а Samba должна стать участником сферы ADS с помощью команды net , включённой в пакет samba-client . За дополнительной информацией обратитесь к странице man net . При выборе этого варианта Samba не становится контроллером ADS. Укажите сферу сервера Kerberos в поле Домен Kerberos (Kerberos Realm) .

Значение поля Домен Kerberos (Kerberos Realm) должно указываться большими буквами, например EXAMPLE.COM .

Использование сервера Samba в качестве участника домена в сфере ADS подразумевает правильную настройку Kerberos, включая файл /etc/krb5.conf .

Домен (Domain) — Сервер Samba проверяет пользователя, полагаясь на первичный и резервный контроллер домена Windows NT. Сервер контроллеру передаёт имя и пароль пользователя, и ждёт от него ответа. Укажите в поле Сервер аутентификации (Authentication Server) NETBIOS-имя первичного или резервного контроллера домена.

Если выбран этот вариант, параметр Шифровать пароли (Encrypted Passwords) должен иметь значение Да (Yes) .

Сервер (Server) — Сервер Samba пытается проверить комбинацию имени пользователя и пароля с помощью другого сервера Samba. Если это не удаётся, сервер пытается проверить её, используя режим проверки подлинности пользователя. Укажите в поле Сервер аутентификации (Authentication Server) NETBIOS-имя другого сервера Samba.

Ресурс (Share) — Пользователи Samba не должны вводить своё имя и пароль при подключении к серверу Samba. Сервер Samba не спрашивает имя и пароль, пока они не попытаются подключиться к определённому общему каталогу этого сервера.

Пользователь (User) — (По умолчанию) Пользователи Samba должны представить правильное имя пользователя и пароль для сервера Samba. Выберите этот вариант, если вы хотите чтобы работал параметр Имя пользователя Windows (Windows Username) . За подробностями обратитесь к разделу 23.2.1.2 Управление пользователями Samba .

Шифровать пароли (Encrypt Passwords) — Этот параметр должен быть включён, если к серверы подключаются клиенты с системой Windows 98, Windows NT 4.0 с пакетом исправления 3 или более новой системой Microsoft Windows. В этом случае пароли между клиентом и сервером передаются не открытым текстом (при этом их можно перехватить), а в зашифрованном виде. Этой настройке соответствует параметр encrypted passwords . За дополнительными сведениями о шифрование паролей Samba обратитесь к разделу 23.2.3 Зашифрованные пароли .

Гостевая учётная запись (Guest Account) — Когда обычные или гостевые пользователи подключаются к серверу Samba, им должен сопоставляться подходящий пользователь сервера. Выберите одного из существующих пользователей системы, который станет гостевой учётной записью Samba. Когда к серверу Samba подключаются гости, они получают те же привилегии, что и данный пользователь. Этой настройке соответствует параметр guest account .

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

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

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

Рисунок 23-4. Управление пользователями Samba

Чтобы добавить пользователя Samba, выберите в выпадающем меню Настройка (Preferences) => Пользователи Samba (Samba Users) и нажмите кнопку Добавить пользователя (Add User) . В окне Добавить пользователя (Create New Samba User) выберите Имя пользователя Unix (Unix Username) из списка существующих в локальной системе пользователей.

Если в системе Windows пользователь имеет другое имя и ему нужно подключаться из своей системы к серверу Samba, укажите имя пользователя Windows в поле Имя пользователя Windows . Чтобы этот вариант работал, параметр Режим аутентификации (Authentication Mode) на вкладке Доступ (Security) окна Параметры сервера (Server Settings) должен иметь значение Пользователь (User) .

Также настройте Пароль Samba (Samba Password) этого пользователя Samba и подтвердите его, набрав его ещё раз. Даже если вы решили использовать для Samba зашифрованные пароли, рекомендуется назначать для всех пользователей Samba пароли, отличающиеся от их паролей в системе.

Чтобы поменять свойства существующего пользователя, выберите его из списка и нажмите кнопку Изменить пользователя (Edit User) . Чтобы удалить существующего пользователя Samba, выберите его и нажмите кнопку Удалить пользователя (Delete User) . При удалении пользователя Samba соответствующая учётная запись пользователя в системе не удаляется.

Внесённые изменения вступают в силу сразу после нажатия кнопки OK .

23.2.1.3. Добавление ресурса

Чтобы создать ресурс Samba, нажмите кнопку Добавить (Add) в основном окне программы настройки Samba.

Рисунок 23-5. Добавление ресурса

На вкладке Основные (Basic) настраиваются следующие параметры:

Каталог (Directory) — Каталог, который станет общим ресурсом Samba. Здесь указывается имя уже существующего каталога.

Имя ресурса (Share name) — Действительное имя ресурса, с которым его будет видно с удалённых компьютеров. По умолчанию, это значение совпадает со значением поля Каталог (Directory) , но его можно изменить.

Описание (Descriptions) — Краткое описание ресурса.

Права (Basic Permissions) — Параметр, определяет будут ли пользователи иметь право только на чтение файлов в общем каталоге или смогут и читать, и писать файлы.

На вкладке Доступ (Access) определите, будет ли доступ к ресурсу разрешён только выбранным или всем пользователям Samba. Если вы хотите разрешить доступ только определённым пользователям, выберите их из списка доступных пользователей Samba.

Ресурс добавляется сразу после нажатия OK .

23.2.2. Настройка в командной строке

Конфигурация Samba находится в файле /etc/samba/smb.conf . Если вы вносите изменения в этот файл, они не вступают в силу до перезапуска демона Samba с помощью команды: service smb restart .

Чтобы указать рабочую группу Windows и краткое описание сервера Samba, измените следующие строки в файле smb.conf :

workgroup = WORKGROUPNAME server string = BRIEF COMMENT ABOUT SERVER

Замените WORKGROUPNAME именем рабочей группы Windows, к которой должен относиться этот компьютер. Параметр BRIEF COMMENT ABOUT SERVER необязателен и используется в качестве комментария Windows для данной системы Samba.

Чтобы создать в системе Linux разделяемый ресурс Samba, добавьте следующий раздел в файл smb.conf (изменив его в соответствии со своими и системными требованиями):

[ sharename ] comment = Insert a comment here (Добавьте здесь примечание) path = /home/share/ valid users = tfox carole public = no writable = yes printable = no create mask = 0765

В показанном выше примере пользователи tfox и carole смогут читать и писать в каталог /home/share сервера Samba, используя клиента Samba.

23.2.3. Зашифрованные пароли

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

В протоколе Microsoft SMB изначально пароли передавались открытым текстом. Однако, Windows NT 4.0, начиная с Service Pack 3, Windows 98, Windows 2000, Windows ME и Windows XP требуют шифрования паролей Samba. Чтобы использовать протокол Samba между системой Linux и одной из этих операционных систем Windows, вы можете либо отредактировать реестр Windows и разрешить использование паролей в открытом виде, либо настроить в своей системе Linux шифрование паролей в Samba. Если вы решите изменить реестр, вы должны проделать это на всех компьютерах с Windows — это рискованно и может привести к другим конфликтам. Для лучшей безопасности рекомендуется использовать зашифрованные пароли.

Чтобы настроить в Samba зашифрованные пароли, выполните следующие действия:

Создайте отдельный файл с паролями Samba. Чтобы создать его на основе существующего файла /etc/passwd , выполните в приглашении оболочки следующую команду:

cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

Если в вашей системе используется NIS, введите следующую команду:

ypcat passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

Сценарий mksmbpasswd.sh устанавливается в каталог /usr/bin в составе пакета samba .

Измените разрешения файла паролей Samba, чтобы разрешение на чтение и запись имел только root:

chmod 600 /etc/samba/smbpasswd

Этот сценарий не копирует пароли пользователей в новый файл, и учётная запись пользователя остаётся неактивной, пока для неё не будет определён пароль. Для большей безопасности рекомендуется назначать для пользователя Samba пароль, отличный от пароля пользователя в системе. Чтобы задать пароль пользователя Samba, выполните следующую команду (заменяйте username именем пользователя):

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

encrypt passwords = no

Если она присутствует, но закомментирована точкой с запятой ( ; ) в начале строке, эта строка игнорируется и шифрование паролей включается. Если эта строка присутствует и не закомментирована, уберите её или закомментируйте.

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

encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd

Убедитесь в том, что служба smb запущена, введя в приглашении оболочки команду service smb restart .

Если вы хотите, чтобы служба smb запускалась автоматически, её можно включить с помощью ntsysv , chkconfig или средства Настройка служб . За подробностями обратитесь к главе 20 Управление доступа к службам .

Для синхронизации паролей пользователей Samba с их паролями в системе можно применить PAM-модуль pam_smbpass , используя команду passwd . Когда пользователь вызывает команду passwd , одновременно изменяется и пароль, с которым он входит в систему Red Hat Enterprise Linux, и пароль, с которым он подключается к ресурсу Samba.

Чтобы включить эту возможность, добавьте в файл /etc/pam.d/system-auth ниже вызова pam_cracklib.so следующую строку:

password required /lib/security/pam_smbpass.so nullok use_authtok try_first_pass

23.2.4. Запуск и остановка сервера

На сервере, предоставляющем доступ к каталогам через Samba, должна работать служба smb .

Определите состояние демона Samba, выполнив следующую команду:

/sbin/service smb status

Запустите демона с помощью следующей команды:

/sbin/service smb start

Остановите демона с помощью следующей команды:

/sbin/service smb stop

Чтобы служба smb запускалась при загрузке, выполните команду:

/sbin/chkconfig —level 345 smb on

Определить службы, запускающиеся при загрузке системы, вы также можете с помощью chkconfig , ntsysv или средства Настройка служб (Services Configuration Tool) . За подробностями обратитесь к главе 20 Управление доступа к службам .

Чтобы просмотреть активные подключения к системе, выполните команду smbstatus .

Назад Начало Вперёд
Samba Вверх Подключение к общему ресурсу Samba

Samba — первые шаги

В общей структуре корпоративных сетей Microsoft Windows и Linux зачастую существуют как разобщенные миры. Попытки обеспечить «прозрачный» доступ сетевых клиентов Windows к ресурсам UNIX зачастую порождают множество проблем. Одним из способов, позволяющих их решить, является использование в UNIX/Linux протокола Server Message Block (SMB — Samba), который иногда также называется протоколом Session Message Block (SMB), протоколом NetBIOS или протоколом LanManager. Этот протокол не является разработкой Microsoft, однако он хорошо адаптирован для использования в сетях на основе Windows. Хотя эта статья и посвящена Linux, тем не менее Samba может работать на большинстве UNIX-подобных операционных систем. И еще одно замечание: в данной статье мы рассмотрим пакет SMB с точки зрения малого предприятия, которому нужен локальный файл- или принт-сервер, либо домашнего пользователя, имеющего несколько компьютеров и желающего, чтобы машины совместно использовали ресурсы. Поэтому даже начинающий администратор UNIX/Linux может принять эту статью как руководство к действию.

Что умеет Samba

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

Протокол SMB используется Microsoft Windows 2000, NT и 95/98 для организации доступа к дискам и принтерам. Используя набор утилит Samba от Andrew Tridgell (Andrew.Tridgell@anu.edu.au), UNIX-машины (включая Linux) могут организовывать доступ к дискам и принтерам для Windows-машин. Утилиты smbfs, написанные Paal-Kr. Engstad (pke@engstad.ingok.hitos.no) и Volker Lendecke (lendecke@namu01.gwdg.de), дают возможность машинам с UNIX монтировать SMB-ресурсы, доступные на машинах с Windows или Samba.

C помощью Samba можно реализовать следующие наиболее распространенные:

  1. Давать доступ к дискам Linux Windows-машинам.
  2. Получать доступ к дискам Windows для машин под Linux.
  3. Давать доступ к принтерам Linux для Windows-машин.
  4. Получать доступ к принтерам Windows из Linux-систем.

Далее в статье будет дано подробное описание того, как это все реализовать.

Инсталляция и тестирование Samba

Инсталляцию, как известно, следует начинать с подробного изучения документации. Правда, большинство системных администраторов пренебрегают этим правилом, руководствуясь другим: «Если уже ничего не помогает, почитайте документацию». В общем, советуем начать инсталляцию Samba с простой команды: $ man samba (рис. 1).

А также c чтения документации, доступной на сайте http://www.samba.org/. Следует отметить, что для использования Samba ваша машина должна находиться в одиночном Ethernet-сегменте локальной сети, при этом используя протокол TCP/IP. Samba не будет работать при использовании других сетевых протоколов. Это, в принципе, легко, поскольку Linux и Windows 95/98/NT поставляются с поддержкой TCP/IP. Однако если вы используете машины с Windows 3.x, то вам необходимо добавить поддержку TCP/IP.

Где взять

Для того чтобы получить исходные тексты последней версии Samba, свяжитесь с сайтом http://www.samba.org/ и выберите ближайший к вам сервер-зеркало: ftp://ftp.samba.org/. Пакет Samba входит в состав дистрибутивов ряда UNIX/Linux-систем, например Rad Hat или Suse Linux. Внимательно изучите документацию вашего Linux, и, вполне возможно, что вам будет достаточно только вставить CD и инсталлировать пакеты Samba. В этом случае вы можете продолжать чтение статьи со следующей главы.

После получения данного пакета извлекаем все то, что находится под «грифом» *.tar.gz, например, в директорию /tmp (причем для этого не обязательно быть root’ом :), то есть:

$ tar -zxvf samba-latest.tar.gz

Если у вас не возникло никаких проблем при извлечении данного пакета, вы обнаружите новую директорию, например samba-latest, и в ней извлеченные файлы. Перейдите в нее, загляните в файлы «README» и «Manifest» — инструкция по инсталляции находится в последнем файле и выглядит примерно так:

$ ./configure $ make $ su # make install

Теперь надо обратить внимание на то, где находятся ваши файлы конфигурации. Большинство дистрибутивов Samba по умолчанию помещает их в директорию /etc, а себя — в директорию /usr/local/samba.

Конфигурирование Samba

Основная информация о конфигурации Samba находится в файле smb.conf. С этим файлом следует обращаться осторожно. Если вы планируете каким-либо образом изменить работающую версию, обязательно сделайте копию.

Для того чтобы первый раз запустить сервер, необходимо иметь рабочую версию файла smb.conf. Перейдите в директорию, в которой должен находиться ваш конфигурационный файл. Скорее всего это будет /etc или /usr/local/samba/lib. Сделайте копию данного файла, например smb.old, — это возможно при наличии прав root. Теперь, когда у вас есть «чистый» файл, можно ввести самую простую конфигурацию, то есть набрать следующие строки:

#Basic Samba configuration file (smb.conf) [global] workgroup = PTO netbios name = GALKA

Ниже мы разберемся, что означают эти строки в файле конфигурации, но сначала временно отвлечемся от него и перейдем к демонам SMB.

Запуск демонов

Имеется два демона SMB: /usr/sbin/smbd и /usr/sbin/nmbd. Вы можете запустить демоны Samba из inetd или как автономный процесс. Samba будет отвечать чуть быстрее в случае, если она запущена как автономный процесс.

Иногда бывает необходимо проверить наличие в файле /etc/services примерно таких строк:

netbios-ns 137/tcp nbns netbios-ns 137/udp nbns netbios-dgm 138/tcp nbdgm netbios-dgm 138/udp nbdgm netbios-ssn 139/tcp nbssn

Убедитесь, что все они не закомментированы. В зависимости от вашего дистрибутива вам, вероятно, даже понадобится добавить их в этот файл. Samba не сможет привязаться к соответствующим портам, до тех пор пока этих строк не будет в файле /etc/services.

Для запуска демонов из inetd поместите следующие строки в конфигурационный файл inetd, /etc/inetd.conf:

# SAMBA NetBIOS services (for PC file and print sharing) netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Затем перезапустите демон inetd, выполнив команду:

kill -HUP 1 `cat /var/run/inetd.pid`

Для запуска демонов из системных стартовых скриптов поместите следующий скрипт в файл /etc/rc.d/init.d/smb (для дистрибутива RedHat) или /etc/rc.d (для дистрибутива Suse Linux) и создайте на него символические ссылки с именами вида /etc/rc.d/rcX.d/S91smb (запускает сервисы SMB в многопользовательском режиме), /etc/rc.d/rcX.d/K91smb (убивает сервисы SMB при выключении), /etc/rc.d/rc6.d/K91smb (убивает сервисы SMB при перезагрузке), где X — номер загрузочного уровня системы, обычно это цифра 2 или 3.

#! /bin/sh . /etc/rc.config # Determine the base and follow a runlevel link name. base=$ link=$ # Force execution if not called by a runlevel directory. test $link = $base && START_SMB=yes test "$START_SMB" = "yes" || exit 0 # The echo return value for success (defined in /etc/rc.config). return=$rc_done case "$1" in start) echo -n "Starting SMB services:" startproc /usr/sbin/nmbd -D || return=$rc_failed startproc /usr/sbin/smbd -D || return=$rc_failed echo -e "$return" ;; startd) echo -n "Starting SMB services:" startproc /usr/sbin/nmbd -D -d 10 || return=$rc_failed startproc /usr/sbin/smbd -D -d 10 || return=$rc_failed echo -e "$return" ;; stop) echo -n "Shutting down SMB services:" killproc -TERM /usr/sbin/nmbd || return=$rc_failed killproc -TERM /usr/sbin/smbd || return=$rc_failed echo -e "$return" ;; restart|reload) $0 stop && $0 start || return=$rc_failed ;; status) echo -n "Checking for service smb: " checkproc /usr/sbin/nmbd && echo -n "OK " || echo -n "No process " checkproc /usr/sbin/smbd && echo "OK " || echo "No process" ;; *) echo "Usage: $0 " exit 1 esac # Inform the caller not only verbosely and set an exit status. test "$return" = "$rc_done" || exit 1 exit 0

Если при старте Samba вы получаете сообщение, в котором говорится, что демон не может подключиться к порту 139, то скорее всего у вас уже есть запущенные процессы Samba, которые не были завершены. Посмотрите список процессов (используя команду ‘ps ax | grep mbd’) для того, чтобы определить, есть ли еще запущенные сервисы Samba. Если же демоны отказываются запускаться по каким-либо другим причинам, то вероятнее всего этот скрипт не подходит к вашему UNIX/Linux и вам придется еще раз покопаться в документации, что-то в нем поправить, а может быть, и переписать.

Простой тест

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

# smbclient -L localhost

Выполняющаяся программа попросит вас ввести пароль. Здесь можете просто нажать Enter. Вот какие строчки должны появиться на мониторе (рис. 2).

Основная настройка smb.conf

Очевидно, что в описанной выше конфигурации Samba может функционировать, но практически не может ничего делать. Ниже будут рассмотрены более полезные и сложные примеры. Но сначала надо разобраться в директивах smb.conf.

Каждый раздел файла начинается с заголовка раздела, такого как [global], [homes], [printers] и т.п.

Секция [global] определяет некоторые переменные, которые Samba будет использовать для определения доступа ко всем ресурсам. Раздел [homes] позволяет удаленным пользователям иметь доступ к своим (и только своим) домашним директориям на локальной Linux-машине. Так что если пользователи Windows попытаются подключиться к этому разделу со своих Windows-машин, то они будут соединены собственными домашними директориями. Заметим, что для этого они должны быть зарегистрированы на Linux-машине.

Используем текстовый интерфейс

Многие системные администраторы при инсталляции Linux ограничиваются только текстовым интерфейсом, не устанавливая графический (X Windows). Это положительно сказывается на безопасности и быстродействии системы, но делает недоступными утилиты вроде SWAT, работе с которой посвящена нижеследующая часть этой статьи.

Простой файл smb.conf, приведенный ниже, позволяет удаленным пользователям иметь доступ к своим домашним директориям на локальной машине и помещать информацию во временную директорию. Пользователи Windows могут увидеть эти ресурсы, подключив сетевые диски, при этом естественно — машина с Linux должна иметь выход в локальную сеть. Заметим, что будут приведены дополнительные записи для этого файла, чтобы дать доступ к большему количеству ресурсов.

; /etc/smb.conf ; ; Убедитесь и перезапустите сервер после внесения изменений в этот ; файл, например: ; /etc/rc.d/smb stop ; /etc/rc.d/smb start [global] ; Раскомментируйте эту строку, если вы хотите дать доступ пользователю "гость" ; guest account = nobody log file = /var/log/samba-log.%m lock directory = /var/lock/samba share modes = yes [homes] comment = Home Directories browseable = no read only = no create mode = 0750

Написав новый файл smb.conf, полезно проверить его правильность. Для этого можно использовать утилиту ‘testparm’ (предварительно заглянув на справочную страницу testparm); если testparm сообщает об отсутствии проблем, то smbd правильно загрузит файл настроек.

Имейте в виду: если ваш сервер Samba имеет больше одного Ethernet-интерфейса, то smbd может подключиться к неправильному. Чтобы заставить ее подключаться к нужному, можно добавить в раздел [global] файла /etc/smb.conf следующую строку:

interfaces = 192.168.1.1/24

Теперь можно запускать Sambа. При этом необходимо учитывать, что чем больше сервисов настроено на вашем сервере, тем более он оказывается уязвим.

Если говорить о безопасности SAMBA, то следует учесть, что она использует порты 137-139. Есть смысл просто заблокировать их из TCP и UDP. В случае если у вас стоит ядро версии 2.0 (это можно легко узнать, набрав в консоли uname -a), то для фильтрации используйте ipfwadm, а если ядро версии 2.1 или 2.2, — то ipchains.

Вот как это делается с помощью ipfwadm:

# Добавляем нижеприведенные записи в /etc/rc.local: ipfwadm -I -P tcp -a deny -S any/0 137:139 -W eth0 ipfwadm -I -P udp -a deny -S any/0 137:139 -W eth0 ipfwadm -O -P tcp -a deny -S any/0 137:139 -W eth0 ipfwadm -O -P udp -a deny -S any/0 137:139 -W eth0

Это запретит (deny) все входящие и исходящие TCP- и UDP-пакеты для портов 137-139 на интерфейсе eth0. Для получения более подробной информации рекомендуем почитать man ipfwadm.

При наличии ядер 2.1-2.2 вы сможете сделать это с помощью ipchains:

# Добавляем нижеприведенные записи в /etc/rc.local: ipchains -A input -p tcp -j DENY --destination-port 137:139 -i eth0 ipchains -A input -p udp -j DENY --destination-port 137:139 -i eth0 ipchains -A output -p tcp -j DENY --destination-port 137:139 -i eth0 ipchains -A output -p udp -j DENY --destination-port 137:139 -i eth0

Как видите, здесь нет ничего нового и сложного. Как ipfwadm, так и ipchains выполняют одинаковые функции, только для разных версий ядер.

Однако если вам не нравится редактировать конфигурационные файлы вручную и на вашем Linux-сервере установлен графический интерфейс, то вы можете упростить настройку smb.conf, воспользовавшись Samba Web Administration Tool (SWAT).

Используем SWAT

Для использования SWAT проверим два конфигурационных файла: services (/etc/services) и inetd.conf (/etc/inetd.conf).

По умолчанию SWAT запускается с 901-го порта, но при желании это можно изменить. Итак, проверяем вышеуказанные конфигурационные файлы:

>/etc/service swat 901/tcp # в данном случае SWAT-service используется через inetd

Если эта строка присутствует в /etc/service, то все нормально. Если строки нет, добавьте ее в конец файла. Данная строка говорит нам о том, что SWAT запускается на 901-м порте.

Теперь в файл inetd.conf (/etc/inetd.conf) добавляем следующую строку:

swat stream tcp nowait.400 root /usr/sbin/swat swat

Затем перезапустим inetd:

# killall -HUP inetd

Далее в браузере набираем:

http://192.168.0.1:901

В случае если все настроено правильно, вы увидите форму, в которой нужно ввести имя пользователя (username) и пароль (password). Здесь введите имя и пароль пользователя «root».

Итак, SWAT запущен. Теперь можно ознакомиться с его работой. Как вы видите, SWAT — это программа с прекрасным интерфейсом, которая создает конфигурационный файл /etc/smb.conf.

Детальная настройка

Файловый сервер под Linux

Как показано выше, организация доступа к дискам Linux для пользователей Windows с помощью файла smb.conf является довольно простым делом. Однако Samba позволит вам в большой степени контролировать этот процесс. Приведем несколько примеров.

Для организации доступа для всех добавьте в smb.conf следующие строчки:

[public] comment = Public Stuff path = /home/public public = yes writable = yes printable = no

Вы получили возможность запустить Samba и просмотреть доступные ресурсы с компьютера под управлением Windows. Однако все может оказаться не так-то просто. Начиная с Windows NT 4 в операционных системах Microsoft, в том числе и в среде Windows 98 (начиная с NT Service Pack 3), происходит передача закодированных паролей по сети. Вы непременно столкнетесь с этой проблемой, если версия пакета Samba, установленная на вашем UNIX/Linux-сервере, ниже 2.0.5а и не поддерживает закодированные пароли.

В случае несоответствия типов паролей между клиентом и сервером при попытках подключиться к ресурсу в окне диалога будет указано примерно следующее: «You are not authorized to access that account from this machine».

Подобную проблему можно решить двумя путями. Во-первых, можно настроить Samba-сервер для использования шифрованных паролей. Во-вторых, заставить Windows работать с нешифрованными паролями SMB. Если это Windows 98, то последовательность ваших действий должна быть такова: используя редактор registry (regedit), создайте ключ registry:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP

Добавьте значение типа DWORD:

Имя значения: EnablePlainTextPassword Данные: 0x01.

Для Windows NT эта же последовательность действий выглядит так:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters

Добавьте значение типа DWORD:

Имя значения: EnablePlainTextPassword Значение: 0x01.

После того как вы сделали эти изменения, перезагрузите машину с Windows и попытайтесь подключить сетевой диск к серверу Samba. Это должно работать, поскольку сервер Samba использует пароли в нешифрованном виде.

Однако следует иметь в виду, что передача по сети незашифрованных паролей всегда наносит ощутимый удар по системе безопасности, поэтому, если есть возможность, лучше настроить Sambа для использования шифрованных паролей. Для этого в раздел [global] файла /etc/smb.conf добавьте следующие строки:

encrypt passwords = yes smb passwd file = /etc/smbpasswd

При использовании вашими клиентами и вашим сервером шифрованных паролей вы не сможете просмотреть списки доступных ресурсов до тех пор, пока начальное соединение не будет сделано с правильными параметрами входа. Для того чтобы сделать первоначальное соединение, в диалоговом окне Windows File Manager или Explorer введите вручную имя ресурса в форме \\hostname\sharename. Подключитесь к серверу посредством правильных для данного сервера имени и пароля.

Если вы подозреваете, что ваш сервис имен NetBIOS неправильно настроен (возможно, потому, что вы получаете сообщение об ошибке «host not found (машина не найдена)» при попытке подключения), попытайтесь использовать IP-адрес сервера: \\host ip address\sharename.

Если вы хотите видеть Samba-директорию в качестве сетевого диска, то вам следует сделать на Windows-машинах следующие настройки.

Сначала удостоверимся, что свойства сети настроены так, как нам надо. Для этого заходим в свойства сети (щелкаем правой клавишей мыши на значке рабочего стола «Сетевое окружение» (Network Neighborhood) и выбираем «Свойства»). Далее заходим на закладку «Компьютер» (Identification). В поле «Имя компьютера» (Computer name) прописываем Galka, в закладке «Рабочая группа» (Workgroup) — PTO, а в закладке «Описание компьютера» (Computer Description) можете прописать что угодно (рис. 3).

Дальше переходите на закладку «Управление доступом» (Access Control) и поставьте флажок в поле «На уровне ресурсов» (Share-level access control).

Теперь переходите в самую первую закладку «Конфигурация» (Configuration) и нажмите на кнопке «Доступ к файлам и принтерам» (File and print sharing). В появившемся окне необходимо поставить флажки в поле «Файлы этого компьютера можно сделать общими» (I want to be able to give others access to my files) и «Принтеры этого компьютера можно сделать общими» (I want to be able to allow others to print to my printer(s)).

И наконец, мы указываем Windows, что Samba является сервером WINS и именно он будет browse master’ом. Для этого переходим в свойства TCP/IP-протокола (рис. 4). В появившемся окне выбираем «Конфигурация WINS» (WINS Configuration). Ставим флажок в поле «Включить распознавание WINS» (Enable WINS Resolution). В появившемся поле «Основной сервер WINS» (WINS Server Search Order) прописываем IP-адрес сервера (Samba) — 192.168.0.1 и нажимаем «Добавить» (Add) или просто [Enter]. Переходим на закладку «Дополнительно» (Advanced) и нажимаем на «Browse Master» в левом окне, а в правом устанавливаем значение «Disabled». Вот и все. Теперь остается только несколько раз нажать кнопку «ОК» и перезагрузить Windows.

В Windows NT экраны свойств сети немного различаются (показаны на рисунках), но главная концепция построения остается той же.

После перезагрузки Windows смело жмите на «Сетевое окружение» (Network Neighborhood) и вы сможете увидеть Samba-сервер, а также свою домашнюю директорию на Linux-сервере. Теперь вы можете просто подключить данные ресурсы как сетевые диски и присвоить им drive letters.

Немного усложним конфигурацию: сделаем директорию /home/public доступной для чтения всеми, но разрешим помещать в нее информацию только людям из группы ADMINS. Для этого изменим запись следующим образом:

[public] comment = Public Stuff path = /home/public public = yes writable = yes printable = no write list = @ADMINS

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

Доступ к дискам Windows из Linux

Вряд ли начинающие пользователи Linux OS смогут быстро разобраться с системой доступа к Linux-файлам из-под Windows, и наоборот. Но не все так сложно. Доступ к Linux-ресурсам из под Windows был кратко описан выше, а доступ к Windows-ресурсам из под Linux мы сейчас рассмотрим.

Программа клиента SMB для UNIX/Linux-машин включена в дистрибутив Samba. Она обеспечивает ftp-подобный интерфейс командной строки. Вы можете использовать эту утилиту для переноса файлов между «сервером» под управлением Windows и клиентом под Linux.

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

/usr/sbin/smbclient -L host

где host — это имя машины, которую вы хотите видеть. Эта команда вернет список имен сервисов — то есть имен дисков или принтеров, к которым может быть получен доступ. До тех пор пока SMB-сервер не будет настроен без управления доступом, он будет запрашивать у вас пароль. Введите в ответ на запрос пароль для пользователя «гость (guest)» или ваш персональный пароль на этой машине.

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

/usr/sbin/smbclient service

где service — имя машины и сервиса. Например, если вы пытаетесь обратиться к директории, которая доступна под именем public на машине, названной galka, то имя сервиса должно звучать как \\galka\public.

Вы получите приглашение smbclient:

Server time is Wen May 22 15:58:44 2001 Timezone is UTC+10.0 Domain=[WORKGROUP] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0] smb: \>

Команды для использования Samba аналогичны командам ftp, но если вы не умеете пользоваться ни тем ни другим, напечатайте h, чтобы получить помощь.

Вы, конечно, можете использовать smbclient для тестирования, однако очень скоро вам это надоест. Для работы вам вероятнее всего понадобится пакет smbfs. Smbfs поставляется с двумя простыми утилитами — smbmount и smbumount. Они работают подобно mount и umount для SMB-ресурсов. Например,

smbmount//computer_name/catalog/Mountpoint -U user_name

В итоге вы получите «подмонтированный» ресурс с возможностью обращения к нему привычными методами проводника.

Принт-сервер под Linux

Для организации доступа к Linux-принтеру с Windows-машин вам необходимо убедиться, что принтер работает под Linux. Если вы можете печатать под Linux, то организация доступа к принтеру будет очень проста.

Добавьте настройку принтера в ваш файл smb.conf:

[global] printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba [print] comment = All Printers security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 [ljet] security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s

Убедитесь, что путь к принтеру (в нашем случае для [ljet]) соответствует буферной директории, указанной в файле /etc/printcap, то есть проверьте наличие строк:

printcap name = /etc/printcap load printers = yes

Эти строки контролируют, должны ли все принтеры, перечисленные в /etc/printcap, быть загружены по умолчанию. В этом случае нет нужды в настройке каждого принтера в отдельности. Раздел [printers] указывает настройки для принтеров, которые вы хотите определить явно. Если используемая вами подсистема печати не работает подобным образом (BSD), то вам необходимо настроить фальшивый файл printcap (либо использовать ‘print command’, см. ниже). Для получения дополнительной информации о системе printcap см. Printing-HOWTO.

Доступ к принтеру Windows с машин, работающих под Linux

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

  1. Вам необходимо иметь в файле /etc/printcap правильные записи, которые должны соответствовать локальной структуре директорий (для буферной директории и т.п.)
  2. У вас должен быть скрипт /usr/bin/smbprint. Он поставляется вместе с исходными текстами Samba, но не со всеми двоичными дистрибутивами Samba.
  3. Если вы хотите преобразовывать ASCII-файлы в PostScript, вы должны иметь программу nenscript или ее эквивалент. Программа nenscript — это конвертор PostScript, который обычно устанавливается в директорию /usr/bin.

Запись в приведенном ниже файле /etc/printcap сделана для принтера HP 5MP на сервере Windows NT. Используются следующие поля файла /etc/printcap:

cm — комментарий; lp — имя устройства, открываемого для вывода; sd — директория спула принтера (на локальной машине); af — файл учета пользования принтером; mx — максимальный размер файла (ноль — без ограничений); if — имя входного фильтра (скрипта).

Фрагмент файла /etc/printcap:

# /etc/printcap # # //galka/oreilly via smbprint # lp:\ :cm=HP 5MP Postscript OReilly on galka:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ :af=/var/spool/lpd/lp/acct:\ :mx#0:\ :if=/usr/bin/smbprint:

Убедитесь, что буферные директории и директория, применяемая для учета пользования, существуют и имеют право на запись. Убедитесь, что строка «if» содержит правильный путь к скрипту smbprint (дан ниже) и что записи указывают на правильное устройство вывода (специальный файл /dev).

Далее идет сам скрипт smbprint . Он обычно находится в директории /usr/bin и написан Andrew Tridgell.

#!/bin/sh –x # # Debugging log file, change to /dev/null if you like. # logfile=/tmp/smb-print.log # logfile=/dev/null # # The last parameter to the filter is the accounting file name. # spool_dir=/var/spool/lpd/lp config_file=$spool_dir/.config # Should read the following variables set in the config file: # server # service # password # user eval `cat $config_file` # # Some debugging help, change the >> to > if you want to same space. # echo "server $server, service $service" >> $logfile ( # NOTE You may wish to add the line `echo translate' if you want automatic # CR/LF translation when printing. echo translate echo "print -" cat ) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile

Большинство дистрибутивов Linux поставляется с программой nenscript для преобразования ASCII-документов в PostScript.

Заключение

Еще совсем недавно возможности Samba ограничивались лишь перечисленными выше. Однако можно с уверенностью говорить о том, что новая версия Samba 2.2 догоняет Windows 2000 по функциональным возможностям и содержит дополнительные усовершенствования. Один из ведущих разработчиков Samba Джереми Эллисон (Jeremy Allison) называет ее «важным обновлением», которое поможет системам Samba легче внедряться в сети Microsoft. ПО обеспечивает экономию не только потому, что не нужно платить за серверную ОС, но и потому, что не приходится оплачивать «клиентские» лицензии за все компьютеры, которые используют сервер.

О новых возможностях Samba 2.2. читайте в нашей статье «Samba 2.2 — что нового» .

  • ПК и комплектующие
    • Настольные ПК и моноблоки
    • Портативные ПК
    • Серверы
    • Материнские платы
    • Корпуса
    • Блоки питания
    • Оперативная память
    • Процессоры
    • Графические адаптеры
    • Жесткие диски и SSD
    • Оптические приводы и носители
    • Звуковые карты
    • ТВ-тюнеры
    • Контроллеры
    • Системы охлаждения ПК
    • Моддинг
    • Аксессуары для ноутбуков
    • Принтеры, сканеры, МФУ
    • Мониторы и проекторы
    • Устройства ввода
    • Внешние накопители
    • Акустические системы, гарнитуры, наушники
    • ИБП
    • Веб-камеры
    • KVM-оборудование
    • Сетевые медиаплееры
    • HTPC и мини-компьютеры
    • ТВ и системы домашнего кинотеатра
    • Технология DLNA
    • Средства управления домашней техникой
    • Планшеты
    • Смартфоны
    • Портативные накопители
    • Электронные ридеры
    • Портативные медиаплееры
    • GPS-навигаторы и трекеры
    • Носимые гаджеты
    • Автомобильные информационно-развлекательные системы
    • Зарядные устройства
    • Аксессуары для мобильных устройств
    • Цифровые фотоаппараты и оптика
    • Видеокамеры
    • Фотоаксессуары
    • Обработка фотографий
    • Монтаж видео
    • Операционные системы
    • Средства разработки
    • Офисные программы
    • Средства тестирования, мониторинга и диагностики
    • Полезные утилиты
    • Графические редакторы
    • Средства 3D-моделирования
    • Веб-браузеры
    • Поисковые системы
    • Социальные сети
    • «Облачные» сервисы
    • Сервисы для обмена сообщениями и конференц-связи
    • Разработка веб-сайтов
    • Мобильный интернет
    • Полезные инструменты
    • Средства защиты от вредоносного ПО
    • Средства управления доступом
    • Защита данных
    • Проводные сети
    • Беспроводные сети
    • Сетевая инфраструктура
    • Сотовая связь
    • IP-телефония
    • NAS-накопители
    • Средства управления сетями
    • Средства удаленного доступа
    • Системная интеграция
    • Проекты в области образования
    • Электронный документооборот
    • «Облачные» сервисы для бизнеса
    • Технологии виртуализации
    1999 1 2 3 4 5 6 7 8 9 10 11 12
    2000 1 2 3 4 5 6 7 8 9 10 11 12
    2001 1 2 3 4 5 6 7 8 9 10 11 12
    2002 1 2 3 4 5 6 7 8 9 10 11 12
    2003 1 2 3 4 5 6 7 8 9 10 11 12
    2004 1 2 3 4 5 6 7 8 9 10 11 12
    2005 1 2 3 4 5 6 7 8 9 10 11 12
    2006 1 2 3 4 5 6 7 8 9 10 11 12
    2007 1 2 3 4 5 6 7 8 9 10 11 12
    2008 1 2 3 4 5 6 7 8 9 10 11 12
    2009 1 2 3 4 5 6 7 8 9 10 11 12
    2010 1 2 3 4 5 6 7 8 9 10 11 12
    2011 1 2 3 4 5 6 7 8 9 10 11 12
    2012 1 2 3 4 5 6 7 8 9 10 11 12
    2013 1 2 3 4 5 6 7 8 9 10 11 12

    Конфигурирование сервера Samba

    Samba 3 в примерах. От простого к сложному. Пример 1. Простой Samba-сервер. Доступ всем на все.

    5. Конфигурирование сервера Samba

    Теперь займемся сервером Samba. Конфигурационный файл для сервера Samba-3 находится в папке /etc/samba и называется smb.conf . После установки в нем написано много чего интересного, но мы не будем его править, а создадим свой. Сохраняем файл /etc/samba/smb.conf на память (и на всякий случай, там много чего есть интересного почитать, и вообще заведите себе привычку перед любым изменением любого конфигурационного файла делать его резервную копию):

    # mv /etc/samba/smb.conf /etc/samba/smb.conf.default

    Примечание: разработчики Samba настоятельно рекомендуют иметь файл smb.conf как можно более меньшего размера, а также не иметь внутри файла комментариев. Также они рекомендуют как можно более тщательно комментировать все изменения, какие вы делаете. Данные противоречивые рекомендации исполняются следующим образом: мы сделаем файл smb.conf.comment , в котором опишем все, что мы делаем, а потом из него получим рабочий файл smb.conf :

    # touch /etc/samba/smb.conf.comment

    Теперь заполним файл smb.conf.comment примерно таким содержимым:

    #Глобальные параметры [global] #название рабочей группы, в windows по умолчанию WORKGROUP, если вы имеете домен, укажите имя вашего домена, тогда #в сетевом окружении windows ваш файл-сервер будет в общей массе компьютеров workgroup = WORKGROUP #NetBIOS-имя компьютера в вашей сети, имя, под которым файл-сервер будет отображаться в сетевом окружении netbios name = ALTSERVER #режим безопасности security = SHARE #то, как будет описываться в сетевом окружении server string = files and music #описание наших общих папок #секция music [music] #комментарий, то, как будет подписан наш общий ресурс в сетевом окружении comment=Наша музыка #путь к общей папке path=/mnt/allfiles/sharefolder/music #данные параметры необязательны, но для чего они потребовались тут, скажу ниже create mask = 0777 directory mask = 0777 #принуждаем быть владельцем общего ресурса пользователя sambauser force user=sambauser #принуждаем быть владельцем общего ресурса группу users force group=users #указываем, что можно не только читать, но и записывать read only=No #открываем гостевой доступ, по сути всем guest ok=Yes [обмен файлами] comment=файлообмен path="/mnt/allfiles/sharefolder/обмен файлами" create mask = 0777 directory mask = 0777 force user=sambauser force group=users read only=No guest ok=Yes

    Получим рабочий файл smb.conf , а заодно проверим, нигде ли мы не ошиблись при помощи команды testparm :

    # testparm -s smb.conf.comment>smb.conf
    Load smb config files from smb.conf.comment Processing section "[music]" Processing section "[обмен файлами]" Loaded services file OK. WARNING: You have some share names that are longer than 12 characters. These may not be accessible to some older clients. (Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.) Server role: ROLE_STANDALONE

    Теперь у вас появился файл smb.conf , причем в нем нет ни одной строки с комментариями. Добейтесь, чтобы не было никаких ошибок, опечаток и т.п. Утилита testparm проверяет в основном опечатки, правильность заданных параметров она почти не контролирует. Например, если вы опечатались, сообщение об ошибке может выглядеть так:

    # testparm -s smb.conf.comment>smb.conf
    Load smb config files from smb.conf.comment Unknown parameter encountered: "metbios name" Ignoring unknown parameter "metbios name" Processing section "[music]" ERROR: Badly formed boolean in configuration file: "Yes/t". lp_bool(Yes/t): value is not boolean! Processing section "[обмен файлами]" Loaded services file OK. WARNING: You have some share names that are longer than 12 characters. These may not be accessible to some older clients. (Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.) Server role: ROLE_STANDALONE

    В данном случае опечатка metbios name вместо netbios name, а также ошибочное значение параметра в секции [music]

    Примечание: параметр workgroup=WORKGROUP применяется по умолчанию, поэтому если у вас такая рабочая группа, то его можно не писать, а если какая то другая, то смело пишите, например, workgroup=MYNETWORK

    Если вы игнорируете рекомендации разработчиков и нещадно редактируете непосредственно файл smb.conf , то для проверки запускать testparm без параметров.

    Итоговый файл smb.conf получился таким:

    [global] netbios name = ALTSERVER server string = files and music security = SHARE [music] comment = Наша музыка path = /mnt/allfiles/sharefolder/music force user = sambauser force group = users read only = No create mask = 0777 directory mask = 0777 guest ok = Yes [обмен файлами] comment = файлообмен path = "/mnt/allfiles/sharefolder/обмен файлами" force user = sambauser force group = users read only = No create mask = 0777 directory mask = 0777 guest ok = Yes

    Метки: ALT Linux, samba, testparm

    К сожалению, комментарии закрыты.

    Установка и настройка Samba на Ubuntu 20.04

    В статье рассказываем, как установить Samba на ОС Ubuntu 20.04, подключить к ресурсам и настроить сетевую корзину.

    Введение

    В этом мануале разберем последовательную установку и настройку программного обеспечения Samba на Ubuntu 20.04. Шаги данной инструкции выполним на облачной инфраструктуре Selectel.

    Что такое Samba

    Samba — стандартный набор программ для взаимодействия с Windows для Linux и Unix. Это свободное программное обеспечение, лицензированное по GNU General Public License. С 1992 года Samba предоставляет безопасные, стабильные и быстрые услуги по работе с файлами и печатью для всех клиентов, использующих протокол SMB/CIFS, таких как все версии DOS и Windows, OS/2, Linux и многие другие.
    Samba — важный компонент для беспрепятственной интеграции Linux/Unix-серверов и настольных компьютеров в среду Active Directory. Она может функционировать как в качестве контроллера домена, так и в качестве обычного члена домена.

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

    Подготовка виртуального сервера

    Для этой инструкции используется виртуальная среда Selectel. Панель управления расположена по адресу: https://my.selectel.ru/.

    В разделе Облачная платформа во вкладке Серверы создадим новый сервер.

    Используем минимальную конфигурацию:

    • 1 CPU,
    • 1 ГБ оперативной памяти,
    • 5 ГБ памяти на универсальном диске.

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

    В данном случае это Ubuntu 20.04 LTS 64-bit из списка готовых конфигураций.

    Оставим себе root-пароль и создадим сервер. После этого в панели управления появится IP-адрес сервера.

    Подключимся к серверу по ssh и начнем настройку.

    Создание пользователя

    Создадим простого пользователя для дальнейшего тестирования подключения к настроенным директориям.

    sudo useradd -p password selectel 

    Опция -p разрешит задать пароль пользователя сразу, password — созданный пароль, selectel — создаваемый пользователь.

    Перед дальнейшей настройкой обновим репозитории. Сделать это можно командой:

    sudo apt update -y 

    Настройка даты и времени

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

    Для настройки даты и времени используется утилита chrony. Ее демона можно добавить в автозагрузку сервера и время всегда будет актуальным. Отправим в терминал команду установки пакета:

    sudo apt install chrony -y 
    Reading package lists. Done Building dependency tree Reading state information. Done The following packages will be REMOVED: systemd-timesyncd The following NEW packages will be installed: chrony 0 upgraded, 1 newly installed, 1 to remove and 5 not upgraded. Need to get 220 kB of archives. After this operation, 287 kB of additional disk space will be used. Get:1 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 chrony amd64 3.5-6ubuntu6.2 [220 kB] Fetched 220 kB in 0s (6903 kB/s) dpkg: systemd-timesyncd: dependency problems, but removing anyway as you requested: systemd depends on systemd-timesyncd | time-daemon; however: Package systemd-timesyncd is to be removed. Package time-daemon is not installed. Package systemd-timesyncd which provides time-daemon is to be removed. Package ntp which provides time-daemon is not installed. systemd depends on systemd-timesyncd | time-daemon; however: Package systemd-timesyncd is to be removed. Package time-daemon is not installed. Package systemd-timesyncd which provides time-daemon is to be removed. Package ntp which provides time-daemon is not installed. (Reading database . 57118 files and directories currently installed.) Removing systemd-timesyncd (245.4-4ubuntu3.13) . Selecting previously unselected package chrony. (Reading database . 57105 files and directories currently installed.) Preparing to unpack . /chrony_3.5-6ubuntu6.2_amd64.deb . Unpacking chrony (3.5-6ubuntu6.2) . Setting up chrony (3.5-6ubuntu6.2) . Creating '_chrony' system user/group for the chronyd daemon… Creating config file /etc/chrony/chrony.conf with new version Creating config file /etc/chrony/chrony.keys with new version Created symlink /etc/systemd/system/chronyd.service → /lib/systemd/system/chrony.service. Created symlink /etc/systemd/system/multi-user.target.wants/chrony.service → /lib/systemd/system/chrony.service. Processing triggers for man-db (2.9.1-1) . Processing triggers for dbus (1.12.16-2ubuntu2.1) . Processing triggers for systemd (245.4-4ubuntu3.13) . 

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

    sudo systemctl enable chrony 
    Synchronizing state of chrony.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable chrony 
    sudo systemctl start chrony 

    Установим часовой пояс. Для данной инструкции используется Europe/Moscow. Команда:

    sudo timedatectl set-timezone Europe/Moscow 

    Проверим дату и время командой:

    date 
    Mon Dec 6 07:13:49 UTC 2021 

    Установка Samba

    Перейдем непосредственно к установке Samba на Ubuntu. Отправим в терминал команду:

    sudo apt install samba -y 
    Reading package lists. Done Building dependency tree Reading state information. Done The following additional packages will be installed: libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libldb2 libtalloc2 libtevent0 libwbclient0 python3-crypto python3-dnspython python3-ldb python3-samba python3-talloc python3-tdb samba-common samba-common-bin samba-libs tdb-tools Suggested packages: cups-common bind9 bind9utils ctdb ldb-tools smbldap-tools winbind heimdal-clients python3-markdown Recommended packages: python3-gpg attr python3-markdown samba-dsdb-modules samba-vfs-modules The following NEW packages will be installed: libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libldb2 libtalloc2 libtevent0 libwbclient0 python3-crypto python3-dnspython python3-ldb python3-samba python3-talloc python3-tdb samba samba-common samba-common-bin samba-libs tdb-tools 0 upgraded, 19 newly installed, 0 to remove and 5 not upgraded. Need to get 11.1 MB of archives. After this operation, 71.6 MB of additional disk space will be used. Get:1 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libtalloc2 amd64 2.3.1-0ubuntu0.20.04.1 [29.5 kB] Get:2 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libtevent0 amd64 0.10.2-0ubuntu0.20.04.1 [35.6 kB] Get:3 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libwbclient0 amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [208 kB] Get:4 http://mirror.selectel.ru/ubuntu focal/main amd64 python3-dnspython all 1.16.0-1build1 [89.1 kB] Get:5 http://mirror.selectel.ru/ubuntu focal/main amd64 python3-crypto amd64 2.6.1-13ubuntu2 [237 kB] Get:6 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libldb2 amd64 2:2.2.3-0ubuntu0.20.04.2 [140 kB] Get:7 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 python3-ldb amd64 2:2.2.3-0ubuntu0.20.04.2 [38.3 kB] Get:8 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 python3-tdb amd64 1.4.3-0ubuntu0.20.04.1 [13.4 kB] Get:9 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libavahi-common-data amd64 0.7-4ubuntu7.1 [21.4 kB] Get:10 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libavahi-common3 amd64 0.7-4ubuntu7.1 [21.7 kB] Get:11 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libavahi-client3 amd64 0.7-4ubuntu7.1 [25.5 kB] Get:12 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libcups2 amd64 2.3.1-9ubuntu1.1 [233 kB] Get:13 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 python3-talloc amd64 2.3.1-0ubuntu0.20.04.1 [12.2 kB] Get:14 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 samba-libs amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [5753 kB] Get:15 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 python3-samba amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [2575 kB] Get:16 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 samba-common all 2:4.13.14+dfsg-0ubuntu0.20.04.2 [68.3 kB] Get:17 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 samba-common-bin amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [556 kB] Get:18 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 tdb-tools amd64 1.4.3-0ubuntu0.20.04.1 [24.9 kB] Get:19 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 samba amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [1065 kB] Fetched 11.1 MB in 0s (43.4 MB/s) Preconfiguring packages . Selecting previously unselected package libtalloc2:amd64. (Reading database . 57147 files and directories currently installed.) Preparing to unpack . /00-libtalloc2_2.3.1-0ubuntu0.20.04.1_amd64.deb . Unpacking libtalloc2:amd64 (2.3.1-0ubuntu0.20.04.1) . Selecting previously unselected package libtevent0:amd64. Preparing to unpack . /01-libtevent0_0.10.2-0ubuntu0.20.04.1_amd64.deb . Unpacking libtevent0:amd64 (0.10.2-0ubuntu0.20.04.1) . Selecting previously unselected package libwbclient0:amd64. Preparing to unpack . /02-libwbclient0_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb . Unpacking libwbclient0:amd64 (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Selecting previously unselected package python3-dnspython. Preparing to unpack . /03-python3-dnspython_1.16.0-1build1_all.deb . Unpacking python3-dnspython (1.16.0-1build1) . Selecting previously unselected package python3-crypto. Preparing to unpack . /04-python3-crypto_2.6.1-13ubuntu2_amd64.deb . Unpacking python3-crypto (2.6.1-13ubuntu2) . Selecting previously unselected package libldb2:amd64. Preparing to unpack . /05-libldb2_2%3a2.2.3-0ubuntu0.20.04.2_amd64.deb . Unpacking libldb2:amd64 (2:2.2.3-0ubuntu0.20.04.2) . Selecting previously unselected package python3-ldb. Preparing to unpack . /06-python3-ldb_2%3a2.2.3-0ubuntu0.20.04.2_amd64.deb . Unpacking python3-ldb (2:2.2.3-0ubuntu0.20.04.2) . Selecting previously unselected package python3-tdb. Preparing to unpack . /07-python3-tdb_1.4.3-0ubuntu0.20.04.1_amd64.deb . Unpacking python3-tdb (1.4.3-0ubuntu0.20.04.1) . Selecting previously unselected package libavahi-common-data:amd64. Preparing to unpack . /08-libavahi-common-data_0.7-4ubuntu7.1_amd64.deb . Unpacking libavahi-common-data:amd64 (0.7-4ubuntu7.1) . Selecting previously unselected package libavahi-common3:amd64. Preparing to unpack . /09-libavahi-common3_0.7-4ubuntu7.1_amd64.deb . Unpacking libavahi-common3:amd64 (0.7-4ubuntu7.1) . Selecting previously unselected package libavahi-client3:amd64. Preparing to unpack . /10-libavahi-client3_0.7-4ubuntu7.1_amd64.deb . Unpacking libavahi-client3:amd64 (0.7-4ubuntu7.1) . Selecting previously unselected package libcups2:amd64. Preparing to unpack . /11-libcups2_2.3.1-9ubuntu1.1_amd64.deb . Unpacking libcups2:amd64 (2.3.1-9ubuntu1.1) . Selecting previously unselected package python3-talloc:amd64. Preparing to unpack . /12-python3-talloc_2.3.1-0ubuntu0.20.04.1_amd64.deb . Unpacking python3-talloc:amd64 (2.3.1-0ubuntu0.20.04.1) . Selecting previously unselected package samba-libs:amd64. Preparing to unpack . /13-samba-libs_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb . Unpacking samba-libs:amd64 (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Selecting previously unselected package python3-samba. Preparing to unpack . /14-python3-samba_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb . Unpacking python3-samba (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Selecting previously unselected package samba-common. Preparing to unpack . /15-samba-common_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_all.deb . Unpacking samba-common (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Selecting previously unselected package samba-common-bin. Preparing to unpack . /16-samba-common-bin_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb . Unpacking samba-common-bin (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Selecting previously unselected package tdb-tools. Preparing to unpack . /17-tdb-tools_1.4.3-0ubuntu0.20.04.1_amd64.deb . Unpacking tdb-tools (1.4.3-0ubuntu0.20.04.1) . Selecting previously unselected package samba. Preparing to unpack . /18-samba_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb . Unpacking samba (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Setting up samba-common (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Creating config file /etc/samba/smb.conf with new version Setting up libtalloc2:amd64 (2.3.1-0ubuntu0.20.04.1) . Setting up python3-tdb (1.4.3-0ubuntu0.20.04.1) . Setting up libtevent0:amd64 (0.10.2-0ubuntu0.20.04.1) . Setting up libavahi-common-data:amd64 (0.7-4ubuntu7.1) . Setting up tdb-tools (1.4.3-0ubuntu0.20.04.1) . update-alternatives: using /usr/bin/tdbbackup.tdbtools to provide /usr/bin/tdbbackup (tdbbackup) in auto mode Setting up python3-dnspython (1.16.0-1build1) . Setting up python3-crypto (2.6.1-13ubuntu2) . Setting up libldb2:amd64 (2:2.2.3-0ubuntu0.20.04.2) . Setting up python3-talloc:amd64 (2.3.1-0ubuntu0.20.04.1) . Setting up libavahi-common3:amd64 (0.7-4ubuntu7.1) . Setting up libwbclient0:amd64 (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Setting up python3-ldb (2:2.2.3-0ubuntu0.20.04.2) . Setting up libavahi-client3:amd64 (0.7-4ubuntu7.1) . Setting up libcups2:amd64 (2.3.1-9ubuntu1.1) . Setting up samba-libs:amd64 (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Setting up python3-samba (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Setting up samba-common-bin (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Checking smb.conf with testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE Done Setting up samba (2:4.13.14+dfsg-0ubuntu0.20.04.2) . Adding group `sambashare' (GID 121) . Done. Samba is not being run as an AD Domain Controller: Masking samba-ad-dc.service Please ignore the following error about deb-systemd-helper not finding those services. (samba-ad-dc.service masked) Created symlink /etc/systemd/system/multi-user.target.wants/nmbd.service → /lib/systemd/system/nmbd.service. Failed to preset unit: Unit file /etc/systemd/system/samba-ad-dc.service is masked. /usr/bin/deb-systemd-helper: error: systemctl preset failed on samba-ad-dc.service: No such file or directory Created symlink /etc/systemd/system/multi-user.target.wants/smbd.service → /lib/systemd/system/smbd.service. samba-ad-dc.service is a disabled or a static unit, not starting it. Processing triggers for ufw (0.36-6ubuntu1) . Rules updated for profile 'Squid' Skipped reloading firewall Processing triggers for systemd (245.4-4ubuntu3.13) . Processing triggers for man-db (2.9.1-1) . Processing triggers for libc-bin (2.31-0ubuntu9.2) . 

    Демон или сервис Samba называется smbd. Под таким именем и будем к нему обращаться.

    Добавим сервис smbd в автозапуск:

    sudo systemctl enable smbd 
    sudo systemctl start smbd 

    Проверим текущий статус:

    sudo systemctl status smbd 

    Далее перечислим оставшиеся команды управления сервисом smbd. Они могут потребоваться в дальнейшем в процессе эксплуатации Samba.

    sudo systemctl stop smbd 
    sudo systemctl restart smbd 

    Убрать из автозапуска:

    sudo systemctl disable smbd 
    sudo systemctl reload smbd 

    Результат проверки статуса:

    ● smbd.service - Samba SMB Daemon Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-12-06 09:50:18 UTC; 26s ago Docs: man:smbd(8) man:samba(7) man:smb.conf(5) Main PID: 83137 (smbd) Status: "smbd: ready to serve connections. " Tasks: 4 (limit: 1105) Memory: 7.2M CGroup: /system.slice/smbd.service ├─83137 /usr/sbin/smbd --foreground --no-process-group ├─83139 /usr/sbin/smbd --foreground --no-process-group ├─83140 /usr/sbin/smbd --foreground --no-process-group └─83141 /usr/sbin/smbd --foreground --no-process-group Dec 06 09:50:18 apachi systemd[1]: Starting Samba SMB Daemon. Dec 06 09:50:18 apachi systemd[1]: Started Samba SMB Daemon. Dec 06 09:50:28 apachi systemd[1]: Reloading Samba SMB Daemon. Dec 06 09:50:28 apachi systemd[1]: Reloaded Samba SMB Daemon. 

    Если в настраиваемой системе включен брандмауэр ufw, необходимо добавить разрешающее правило для Samba:

    sudo ufw allow Samba 
    sudo ufw allow 445 
    sudo ufw allow 137 
    sudo ufw allow 138 
    sudo ufw allow 139 

    В каждом правиле указан порт из диапазона, в котором работает Samba.

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

    В этой инструкции используется удаленный сервер, расположенный в интернете. Открывать прямой доступ по IP-адресу к ресурсам в таком случае нельзя. Поэтому перед дальнейшей настройкой будет организован VPN-туннель. Настраивать VPN для удаленного доступа в локальной сети не потребуется. Настройку мы произвели, следуя этой инструкции.

    После получения доступа к удаленному серверу с использованием VPN-туннеля, сервер имеет адрес 10.8.0.1

    Дальнейшие действия будут производиться с использованием этого адреса.

    Настройка Samba

    Конфигурационный файл Samba расположен по следующему пути:

    /etc/samba/smb.conf

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

    sudo cp /etc/samba/smb.conf /etc/samba/res_smb.conf 

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

    grep -v '^ *#\|^ *$' /etc/samba/smb.conf | sudo tee /etc/samba/smb.conf 

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

    [global] workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) log file = /var/log/samba/log.%m max log size = 1000 logging = file panic action = /usr/share/samba/panic-action %d server role = standalone server obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user usershare allow guests = yes [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no 

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

    testparm 
    Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] log file = /var/log/samba/log.%m logging = file map to guest = Bad User max log size = 1000 obey pam restrictions = Yes pam password change = Yes panic action = /usr/share/samba/panic-action %d passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . passwd program = /usr/bin/passwd %u server role = standalone server server string = %h server (Samba, Ubuntu) unix password sync = Yes usershare allow guests = Yes idmap config * : backend = tdb [printers] browseable = No comment = All Printers create mask = 0700 path = /var/spool/samba printable = Yes [print$] comment = Printer Drivers path = /var/lib/samba/printers 

    Настройка анонимного доступа к директории

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

    Важно: данный способ используется очень редко. Это крайне небезопасно оставлять ресурс в таком состоянии. Обычно это делается для маленькой soho-сети в самых крайних случаях.

    Создадим директорию, к которой будет предоставлен доступ:

    sudo mkdir /var/anonimus_share 

    И добавим директории полные права для всех:

    sudo chmod 775 /var/anonimus_share 

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

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

    sudo nano /etc/samba/smb.conf 

    Добавим в файл следующий директивы:

    [anonimus_share] comment = Directory anonimus path = /var/anonimus_share public = yes writable = yes read only = no guest ok = yes create mask = 0775 directory mask = 0775 force create mode = 0775 force directory mode = 0775 

    Рассмотрим более подробно:

    [anonimus_share] 一 имя ресурса, отображаемое клиенту при подключении;

    comment = Directory anonimus 一 комментарий;

    path = /var/anonimus_share 一 директория, к которой предоставляем доступ;

    public = yes 一 доступ на чтение всем авторизованным пользователям, также гостевым;

    writable = yes 一 право записи в сетевой ресурс;

    read only = no 一 право на чтение, при значении директивы no 一 все пользователи получают право на создание директорий и файлов;

    guest ok = yes 一 доступ гостевой учетной записи;

    Эти директивы задают права доступа, назначаемые при создании новой директории или файла.

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

     workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) log file = /var/log/samba/log.%m max log size = 1000 logging = file panic action = /usr/share/samba/panic-action %d server role = standalone server obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user usershare allow guests = yes [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no [anonimus_share] comment = Directory anonimus path = /var/anonimus_share public = yes writable = yes read only = no guest ok = yes create mask = 0775 directory mask = 0775 force create mode = 0775 force directory mode = 0775 

    После внесения изменений перезапускаем демона Samba:

    sudo systemctl restart smbd 

    Произведем проверку подключения к ресурсу с операционной системы Windows.

    Доступ к созданной директории есть.

    Настройка доступа по учетным данным пользователя

    Следующим этапом станет настройка доступа к директории по комбинации логин/пароль.

    Для начала создадим директорию, которая станет тестовой, и назначим ей полный права:

    sudo mkdir /var/acc_pass | sudo chmod 777 /var/acc_pass 

    Внесем изменения в файл конфигурации:

    sudo nano /etc/samba/smb.conf 

    Добавим следующий блок директив:

    [acc_pass] comment = acc_pass path = /var/acc_pass public = no writable = yes read only = no guest ok = no create mask = 0775 directory mask = 0775 force create mode = 0775 force directory mode = 0775 

    Большая часть указанных здесь настроек разобраны в предыдущем блоке.

    Остановимся только на новых:

    path = /var/acc_pass 一 путь до директории;

    public = no 一 запрет на публичный доступ к папке;

    guest ok = no 一 запрет гостевого подключения.

    Добавим пользователя Samba:

    sudo smbpasswd -a selectel 

    Проверим подключение к директории:

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

    После успешной авторизации происходит получение доступа к директории:

    Настройка доступа для пользователей и групп

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

    Создадим директорию и назначим ей полные права:

    sudo mkdir /var/acc_gr_and_user | sudo chmod 777 /var/acc_gr_and_user 

    Откроем файл конфигурации и добавим в него следующий блок директив:

    [acc_gr_and_user] comment = acc_gr_and_user path = /var/acc_gr_and_user public = no writable = no read only = yes guest ok = no valid users = vlan48, selectel, @groupe1 write list = selectel create mask = 0775 directory mask = 0775 force create mode = 0775 force directory mode = 0775 inherit owner = yes 

    [acc_gr_and_user] 一 имя ресурса, отображаемое клиенту при подключении;

    comment = acc_gr_and_user 一 комментарий;

    path = /var/acc_gr_and_user 一 директория, к которой предоставляем доступ;

    public = no 一 запрет на публичный доступ к папке;

    writable = no и read only = yes 一 разрешение на запись мы добавим для пользователей, перечисленных в директиве write list, а для остальных оставим с запрет на запись, разрешив только чтение;

    guest ok = no 一 доступ гостевой учетной записи;

    valid users = vlan48, selectel, @groupe1 一 пользователи и группы, которые имеют доступ к директории, где vlan48, selectel 一пользователи, а @groupe1 一группа пользователей.

    write list = selectel 一 пользователи, которым разрешена запись в директории;

    Эти 4 директивы задают права доступа назначаемые при создании новой директории или файла.

    inherit owner = yes 一 директива включает наследование владельца во время создания директорий и файлов.

    Сохраняем файл, перезапускаем демона Samba:

    sudo systemctl restart smbd 

    Подключение к ресурсу

    Для подключения к созданному ресурсу из операционной системы Windows используется проводник. Быстро открыть его можно, применив комбинацию клавиш Ctrl+E. Вводим необходимый путь в адресную строку проводника.

    Путь в системах Windows пишется через обратный слеш, путь к сетевому ресурсу 一 через двойной обратный слеш. Можно также подключать ресурс как диск, если это не противоречит вашим правилам безопасности. В таком случае при включении рабочей станции не требуется каждый раз устанавливать соединение с ресурсом.

    Для выполнения этой процедуры в проводнике выберем вкладку Простой доступ, подключить как диск.

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

    Теперь ресурс станет отображаться как диск при включении компьютера.

    Linux

    Подключение из операционных систем Linux-семейства производится с использованием набора утилит cifs. Установим cifs-утилиты на Ubuntu.

    sudo apt install cifs-utils -y 
    Reading package lists. Done Building dependency tree Reading state information. Done Suggested packages: keyutils smbclient winbind The following NEW packages will be installed: cifs-utils 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Need to get 82.5 kB of archives. After this operation, 306 kB of additional disk space will be used. Get:1 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 cifs-utils amd64 2:6.9-1ubuntu0.1 [82.5 kB] Fetched 82.5 kB in 0s (2439 kB/s) Selecting previously unselected package cifs-utils. (Reading database . 45851 files and directories currently installed.) Preparing to unpack . /cifs-utils_2%3a6.9-1ubuntu0.1_amd64.deb . Unpacking cifs-utils (2:6.9-1ubuntu0.1) . Setting up cifs-utils (2:6.9-1ubuntu0.1) . update-alternatives: using /usr/lib/x86_64-linux-gnu/cifs-utils/idmapwb.so to provide /etc/cifs-utils/idmap-plugin (idmap-plugin) in auto mode Processing triggers for man-db (2.9.1-1) . 

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

    mount.cifs

    Как пример рассмотрим подключение к директории anonimus_share, расположенной на ресурсе 10.8.0.1 в директорию mnt:

    mount.cifs //10.8.0.1/anonimus_share /mnt 

    Автоматическое монтирование директории происходит с использованием файла fstab. Для начала создадим дополнительный файл с учетными данными пользователя для авторизации. Оправданно будет создать этот файл в директории root.

    sudo nano /root/.smbselus 

    Внесем в файл следующие директивы:

    username=selectel password=uspass 

    Сохраняем и переходим к конфигурационному файлу fstab.

    sudo nano /etc/fstab 

    Добавляем в него следующий блок инструкций:

    //10.8.0.1/acc_gr_and_user /mnt cifs user,rw,credentials=/root/.smbselus 0 0 

    Конкретизируем каждый пункт:

    //10.8.0.1/acc_gr_and_user 一 директория, которую необходимо смонтировать;

    /mnt 一 директория, в которую необходимо смонтировать;

    cifs user 一 разрешает монтировать любому пользователю;

    rw 一 предоставляет права на чтение и запись;

    credentials=/root/.smbselus 一 файл с учетными данными пользователя;

    0 используется утилитой dump 0 一 выключен;

    0 используется утилитой fsck 0 一 выключен.

    В некоторых случаях требуется добавить директиву domain в файл .smbselus.

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

    Настройка сетевой корзины

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

    Первым этапом создадим директорию для корзины и назначим ей права:

    sudo mkdir /var/recycle | sudo chmod 777 /var/recycle 

    Внесем блок директив в конфигурационный файл:

    sudo nano /etc/samba/smb.conf 
    [Recycle] comment = rec_dir path = /var/recycle public = yes browseable = yes writable = yes vfs objects = recycle recycle:repository = .recycle/%U recycle:keeptree = Yes recycle:touch = Yes recycle:versions = Yes recycle:maxsize = 0 recycle:exclude = *.tmp, ~$* recycle:exclude_dir = /tmp 

    [Recycle] 一 имя ресурса, отображаемое клиенту при подключении;

    comment = rec_dir 一 комментарий;

    path = /var/recycle 一 директория, в которой размещена сетевая корзина.

    public = yes 一 доступ на чтение всем авторизованным пользователям, также гостевым;

    browseable = yes 一 параметр устанавливает, будет ли общий ресурс отображаться в списке доступных общих ресурсов в сетевом окружении и в списке просмотра;

    writable = yes 一 право записи в сетевой ресурс;

    vfs objects = recycle 一 использование подсистемы recycle;

    recycle:repository = .recycle/%U 一 место хранения удаленных объектов. В этой директиве настроено попадание удаленных файлов в каталог с именем пользователя, который создается автоматически в директории .recycle;

    recycle:keeptree = Yes 一 удаление с сохранением дерева каталогов;

    recycle:touch = Yes 一 изменение даты при перемещении файла в сетевую корзину;

    recycle:versions = Yes 一 добавление номера версии при удалении файлов с одинаковыми именами;

    recycle:maxsize = 0 一 параметр отвечает за максимальный размер файла, который может быть перемещен в корзину. При текущем значении возможно переместить файл любого размера;

    recycle:exclude = *.tmp, ~$* 一 исключение файлов заданного типа;

    recycle:exclude_dir = /tmp 一 исключение директории заданного типа.

    Заключение

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

    Зарегистрируйтесь в панели управления

    И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.

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

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