Centos 7 samba настройка

Обновлено: 06.07.2024

Samba - это бесплатная и открытая реализация протокола сетевого обмена файлами SMB / CIFS, который позволяет конечным пользователям получать доступ к файлам, принтерам и другим общим ресурсам.

Мы создадим следующие общие ресурсы и пользователей Samba.

  • sadmin - Администратор с правами чтения и записи для всех общих ресурсов.
  • josh - обычный пользователь со своей собственной файловой папкой.
  • users - эта папка будет доступна всем пользователям с правами на чтение / запись.
  • josh - этот ресурс будет доступен с правами на чтение / запись только пользователям josh и sadmin.

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

Прежде чем начать, убедитесь, что вы вошли в систему CentOS 7 как пользователь с привилегиями sudo .

Установка Samba на CentOS

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

После завершения установки запустите службы Samba и включите их автоматический запуск при загрузке системы:

smbd - служба обеспечивает совместный доступ к файлам и полиграфические услуги и прослушивает порты TCP 139 и 445. nmbd Служба предоставляет NetBIOS поверх IP служб имен для клиентов и прослушивает порт UDP 137.

Настройка брандмауэра

Теперь, когда Samba установлена ​​и работает на вашем компьютере с CentOS, вам нужно настроить брандмауэр и открыть необходимые порты. Для этого выполните следующие команды:

Создание пользователей Samba и структуры каталогов

Для удобства обслуживания и гибкости вместо использования стандартных домашних каталогов ( /home/user ) все каталоги и данные Samba будут расположены в /samba каталоге.

Начните с создания /samba каталога:

Создайте новую группу с именем sambashare . Позже мы добавим всех пользователей Samba в эту группу.

Установите владельца группы /samba каталогов на : sambashare

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

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

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

Чтобы создать нового пользователя с именем josh , используйте следующую команду:

В useradd опции имеют следующие значения:

  • -M - не создавать домашний каталог пользователя. Мы вручную создадим этот каталог.
  • -d /samba/josh - установить домашний каталог пользователя в /samba/josh .
  • -s /usr/sbin/nologin - отключить доступ к оболочке для этого пользователя.
  • -G sambashare - добавить пользователя в sambashare группу.

Создайте домашний каталог пользователя и установите владельца каталога для пользователя josh и группы sambashare :

Следующая команда добавит бит setgid в /samba/josh каталог, чтобы вновь созданные файлы в этом каталоге наследовали группу родительского каталога. Таким образом, независимо от того, какой пользователь создает новый файл, он будет иметь владельца группы sambashare . Например, если вы не установите права доступа к каталогу, 2770 а sadmin пользователь создаст новый файл, josh он не сможет читать и записывать этот файл.

Добавьте josh учетную запись пользователя в базу данных Samba, установив пароль пользователя:

Вам будет предложено ввести и подтвердить пароль пользователя.

После того, как пароль установлен, включите учетную запись Samba, введя:

Для создания другого пользователя повторите тот же процесс, что и при создании пользователя josh .

Далее давайте создадим пользователя и группу sadmin . Все члены этой группы будут иметь административные разрешения. Позже, если вы хотите предоставить права администратора другому пользователю, просто добавьте этого пользователя в sadmin группу .

Создайте административного пользователя, набрав:

Команда выше будет также создать группу sadmin и добавить пользователя как sadmin и sambashare группы.

Установите пароль и включите пользователя:

Далее создайте Users каталог общего доступа:

Установите владельца каталога для пользователя sadmin и группы sambashare :

Этот каталог будет доступен всем аутентифицированным пользователям. Следующая команда настраивает доступ на запись / чтение для членов sambashare группы в /samba/users каталоге:

Конфигурация акций Samba

Откройте файл конфигурации Samba и добавьте разделы:

Опции имеют следующие значения:

  • [users] и [josh] - имена общих ресурсов, которые вы будете использовать при входе в систему.
  • path - Путь к доле.
  • browseable - должна ли акция быть указана в списке доступных акций. Установив для no других пользователей, не сможет увидеть общий ресурс.
  • read only - могут ли пользователи, указанные в valid users списке, писать в этот общий ресурс.
  • force create mode - Устанавливает разрешения для вновь созданных файлов в этой общей папке.
  • force directory mode - Устанавливает разрешения для вновь созданных каталогов в этой общей папке.
  • valid users - Список пользователей и групп, которым разрешен доступ к общему ресурсу. Группы имеют префикс с @ символом.

После этого перезапустите сервисы Samba:

В следующих разделах мы покажем вам, как подключиться к общему ресурсу Samba из клиентов Linux, macOS и Windows.

Подключение к Samba Share из Linux

Пользователи Linux могут получить доступ к общему ресурсу samba из командной строки с помощью файлового менеджера или смонтировать общий ресурс Samba.

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

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

Для установки smbclient на Ubuntu и Debian запустите:

Для установки smbclient на CentOS и Fedora выполните:

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

Например, чтобы подключиться к общему ресурсу с именем josh на сервере Samba с IP-адресом 192.168.121.118 от имени пользователя, которого josh вы запустите:

Вам будет предложено ввести пароль пользователя.

После того, как вы введете пароль, вы войдете в интерфейс командной строки Samba.

Монтирование общего ресурса Samba

Чтобы смонтировать общий ресурс Samba в Linux, сначала необходимо установить cifs-utils пакет.

На Ubuntu и Debian запустите:

На CentOS и Fedora работают:

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

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

Например, чтобы смонтировать общий ресурс с именем josh на сервере Samba с IP-адресом 192.168.121.118 от имени пользователя josh до /mnt/ монтирования, которую вы запустите:

Вам будет предложено ввести пароль пользователя.

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

Файлы, файловый менеджер по умолчанию в Gnome имеет встроенную опцию для доступа к общим ресурсам Samba.

  1. Откройте «Файлы» и нажмите «Другие места» на боковой панели.
  2. В поле «Подключение к серверу» введите адрес общей папки Samba в следующем формате smb://samba_hostname_or_server_ip/sharename .
  3. Нажмите «Подключиться» и появится следующий экран:




Подключение к Samba Share из macOS

В macOS вы можете получить доступ к общим ресурсам Samba либо из командной строки, либо с помощью стандартного менеджера файлов MacOS Finder. Следующие шаги показывают, как получить доступ к общему ресурсу с помощью Finder.

    Откройте «Finder», выберите «Go» и нажмите «Connect To».




Подключение к общему ресурсу Samba из Windows

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

  1. Откройте проводник и в левой панели щелкните правой кнопкой мыши на «Этот компьютер».
  2. Выберите «Выбрать пользовательское сетевое расположение» и нажмите «Далее».
  3. В поле «Интернет или сетевой адрес» введите адрес общего ресурса Samba в следующем формате \\samba_hostname_or_server_ip\sharename .





Вывод

Из этого руководства вы узнали, как установить сервер Samba в CentOS 7 и создать различные типы общих пользователей и пользователей. Мы также показали, как подключиться к серверу Samba с устройств Linux, macOS и Windows.

Разберёмся, как сконфигурировать samba на CentOS 7 с анонимными и защищёнными samba-серверами. Samba является пакетом программ с открытым исходным кодом, который позволяет уверенно обращаться к файлам и принтерам на ОС, работающих по протоколу SMB/CIFS. Samba находится в свободном доступе, в отличие от других программ SMB/CIFS, и совместим, допускает возможность взаимодействия сетей, включающих сервера под управлением Linux/Unix, так и клиентов, работающими на Windows.

1 Предварительные замечания

Внимание: В Windows домен рабочей станции должен совпадать с доменом в CentOS.

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

В нашем случае домен рабочей станции имеет значение HOME.

samba

Убедитесь, что рабочая группа будет иметь одинаковое имя как под Linux, так и под Windows.

Для того, чтобы сделать доступным компьютер под Windows, необходимо добавить IP-адрес вашего сервера в hosts.

В нашем случае введем следующее:

Затем просто сохраним данное изменение.

2 Анонимный доступ средствами samba

Сначала установим samba с возможностью анонимного доступа. Для установки samba выполните следующую команду:

Таким образом вы установите samba актуальной версии.

Для того, чтобы сконфигурировать samba потребуется отредактировать файл /etc/samba/smb.conf, перед редактированием следует сделать резервное копирование оригинального файла /etc/samba/smb.conf.bak

Открываем для редактирования файл:

Почти всё готово, перезапускаемся:

На данном этапе сетевой экран CentOS 7.0 заблокирует доступ службы samba, чтобы решить эту проблему, выполним следующее:

Настроить сетевой экран по всем правилам поможет специальная статья.

Win+R

Теперь вы можете обмениваться файлами Centos 7.0 с windows, для этого в командной строке Win+R необходимо выполнить \\centos:

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

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

Далее нам потребуется разрешение selinux для конфигурации samba:

Теперь анонимный пользователь может создавать и просматривать cодержимое.

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

3. Защищённый samba-сервер

Создадим группу smbgrp и пользователя dve для доступа к samba-серверу с необходимой аутентификацией:

Создадим папку secured в /samba и предоставим соответствующие права доступа:

Теперь нам снова понадобится разрешение Selinux:

Снова редактируем файл конфигурации /etc/samba/smb.conf:

Далее потребуется перезапуск

Теперь проверяем настройки хитрой командой testparm

Вы снова столкнётесь с проблемой прав доступа. Для получения прав доступа пользователя dve выполним:

Samba — программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу Server Message Block (SMB) и Common Internet File System (CIFS). Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL.

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

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

По умолчанию для Windows, CentOS 7 рабочая группа называется WORKGROUP.

1.2. Проверка наличия Samba.

Samba включена практически во все дистрибутивы Linux.

Скорей всего у вас он тоже есть, проверьте это:


Если нет, то установим её.

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

2.1. Удалим SELinux.

Удалим SELinux:

Перезагрузим CentOS 7:

2.2. Обновим систему.

Обновим систему до актуального состояния:

2.3. Установим полезные программы.

Net-tools и текстовый редактор Midnight Commander:

2.4. Получение IP-адреса по DHCP.

Если по какой-то причине в сети нету DHCP сервера, вам стоит его поднять.

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

Показать IP-адрес при установленных net-tools:

Запоминаем наш IP-адрес, который был выдан по DHCP. Он нам пригодится для обращения к нашему Samba серверу с других компьютеров.

2.5. Получение IP-адреса вручную.

В командной строке список сетевых адаптеров можно получить командой:


2.6. Временное отключение межсетевого экрана.

По умолчанию CentOS 7 использует брандмауэр firewalld, временно отключим его:

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

2.7. Отключение протокола IPv6.

Если протокол IPv6 не используется, логично его отключить, для этого нужно добавить два параметра в файл /etc/sysctl.conf , выполните следующие команды или используйте редактор mcedit.

Открываем настройку ядра:

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

Добавляем по строке на адаптер:

Перезагрузите службу сети:

3. Установка Samba.

Устанавливаем Samba:

Запускаем службу smb.service и smb.service добавляем в автозагрузку.

Делаем резервное копируем конфига.

Делаем примерно такой конфигурационный файл:

В зависимости от этого настройки будут немного разные:

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

Проверим его работу:

Ответ:


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

Создадим и добавим «бездомного» и «бесконсольного» служебного пользователя по имени share-user .

Импортируем этого пользователя в Samba и задаем пароль:

Настраиваем права на папку, чтобы он имел права на работу с ней и в ней:

Ответ:


Ответ:


4. Доступ по пользователю и паролю.

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

Для доступа по паролю пишем такой конфигурационный файл:

Следует обратить внимание на параметры:

И пробуем зайти на шару по адресу:

5. Доступ по IP-адресу.

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

Чтоб организовать доступ в зависимости от IP-адреса, делаем такие настройки в smb.conf:

В данном случае полный доступ будет у адреса 192.168.0.10 .

Чтобы добавить всю подсеть, то указать нужно следующее:

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

Доступ будет разрешен всей подсети 192.168.0.0/24 , кроме адреса 192.168.0.15 .

Делаем перезапуск самбы и проверяем.

И пробуем зайти на каталог по адресу:

Если у вас установлена Samba 4, то эта конфигурация не заработает и вы получите ошибку:

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

Остальные параметры оставляете те же. После этого доступ по IP будет работать и на 4-й версии Samba.

6. Доступ всем подряд без ограничений.

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

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

[folder_for_share] — имя общей папки, которое увидят пользователи, подключившись к серверу.
comment — комментарий для удобства.
path — путь на сервере, где будут храниться данные.
public — для общего доступа. Установите в yes , если хотите, чтобы все могли работать с ресурсом.
writable — разрешает запись на сетевой ресурс.
read only — только для чтения. Установите no , если у пользователей должна быть возможность создавать папки и файлы.
guest ok — разрешает доступ к папке гостевой учетной записи.
create mask , directory mask — при создании новой папки или файла назначаются полные права.

Убедитесь, что директория из параметра path существует, если нет, создайте ее.

Не забываем еще раз сделать права для всех на папку:

И пробуем зайти на каталог по адресу:

Должно пустить без лишних вопросов.

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

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

7.1. Для firewalld.

По умолчанию CentOS 7 использует брандмауэр firewalld, состояние службы можно узнать командой:

Активируем его командой:

Для получения списка правил и сервисов используйте:

Обратите внимание на список сервисов, если вы отключили протокол IPv6, логично также поступить и с DHCPv6-client:

Создаем правило для Samba и перезагружаем:

7.2. Для iptables.

Для этого в правилах откроем TCP-порты: 139 порт и 445 порт, а также UDP-порты: 137 порт и 138 порт, но только для тех подсетей, которым доверяете.

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

Перезагружаем iptables:

Для проверки существующих правил используем:

7.3. Для iptables доступ только из локальной сети.

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

Добавляем в файервол iptables исключение в параметрах INPUT :

Вот такие строки:

В следующем примере показана простая политика, позволяющая локальному серверу принимать трафик только от клиентов частной сети 192.168.0.0/24 .

Первая команда добавляет правило в цепочку INPUT путем его добавления в текущий список правил. Это правило говорит о том, что для любого трафика, приходящего из сети-источника ( -s ) 192.168.0.0/24 , будет выполняться действие ACCEPT , разрешающее получение пакетов.

Вторая команда разрешает получение пакетов, приходящих при уже установленном соединении – за это отвечает вызов matcher state (оператор проверки соответствия состояния -m state ). Этот matcher state следит за тем, какие подключения покидают хост. Ответные исходящие пакеты считаются установленными или связанными (established или related), поэтому остальные правила пропускают эти пакеты.

Последняя команда определяют политику по умолчанию цепочки INPUT , сбрасывающую пакеты. Если пакет не пришел из сети 192.168.0.0/24 или не является пакетом установленного хостом соединения, то он сбрасывается.

8. Система логирования.

По умолчанию log-файлы находятся в папке /var/log/samba . При необходимости получить подробные логи, в раздел [global] необходимо добавить параметр log level = 2 или log level = 3 . По умолчанию используется значение 1 , значение 0 отключает ведение логов.

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

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

Мы создадим следующие общие ресурсы и пользователей Samba.

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

Подготовка

Прежде чем начать, убедитесь, что вы вошли в систему CentOS 7 как пользователь с привилегиями sudo .

Установка Samba на CentOS

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

После завершения установки запустите службы Samba и включите их автоматический запуск при загрузке системы:

Служба smbd предоставляет службы обмена файлами и печати и прослушивает TCP-порты 139 и 445. Служба nmbd предоставляет клиентам службы именования NetBIOS через IP и прослушивает порт 137 UDP.

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

Теперь, когда Samba установлена и запущена на вашем компьютере с CentOS, вам нужно настроить брандмауэр и открыть необходимые порты. Для этого выполните следующие команды:

Создание пользователей Samba и структуры каталогов

Для упрощения сопровождения и гибкости вместо использования стандартных домашних каталогов ( /home/user ) все каталоги и данные Samba будут расположены в каталоге /samba .

Начнем с создания каталога /samba :

Создайте новую группу с именем sambashare . Позже мы добавим в эту группу всех пользователей Samba.

Установите владельцем группы каталогов /samba значение sambashare :

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

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

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

Чтобы создать нового пользователя с именем josh , используйте следующую команду:

Параметры useradd имеют следующие значения:

Создайте домашний каталог пользователя и установите владельца каталога на пользователя josh и группу sambashare :

Следующая команда добавит бит setgid в каталог /samba/josh чтобы вновь созданные файлы в этом каталоге унаследовали группу родительского каталога. Таким образом, независимо от того, какой пользователь создает новый файл, у файла будет владелец группы sambashare . Например, если вы не установите права доступа к каталогу на 2770 и пользователь sadmin создаст новый файл, пользователь josh не сможет читать / писать в этот файл.

Добавьте josh запись пользователя josh в базу данных Samba, установив пароль пользователя:

Вам будет предложено ввести и подтвердить пароль пользователя.

После установки пароля включите учетную запись Samba, набрав:

Чтобы создать другого пользователя, повторите тот же процесс, что и при создании пользователя josh .

Далее давайте создадим пользователя и группу sadmin . Все члены этой группы будут иметь права администратора. Позже, если вы захотите предоставить административные права другому пользователю, просто добавьте этого пользователя в группу sadmin .

Создайте пользователя с правами администратора, набрав:

Приведенная выше команда также создаст группу sadmin и добавит пользователя в группы sadmin и sambashare .

Установите пароль и включите пользователя:

Затем создайте общий каталог Users :

Установите владельца каталога на пользователя sadmin и группу sambashare :

Этот каталог будет доступен всем авторизованным пользователям. Следующая команда настраивает доступ для записи / чтения для членов группы sambashare в sambashare /samba/users :

Настройка общих ресурсов Samba

Откройте файл конфигурации Samba и добавьте разделы:

Параметры имеют следующие значения:

Дополнительные сведения о доступных параметрах см. На странице документации файла конфигурации Samba .

После этого перезапустите службы Samba с помощью:

В следующих разделах мы покажем вам, как подключиться к общему ресурсу Samba из клиентов Linux, macOS и Windows.

Подключение к общему ресурсу Samba из Linux

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

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

Чтобы установить smbclient в Ubuntu и Debian, запустите:

Чтобы установить smbclient в CentOS и Fedora, запустите:

Синтаксис для доступа к общему ресурсу Samba следующий:

Например, чтобы подключиться к josh ресурсу с именем josh на сервере Samba с IP-адресом 192.168.121.118 от имени пользователя josh вы должны запустить:

Вам будет предложено ввести пароль пользователя.

После ввода пароля вы войдете в интерфейс командной строки Samba.

Монтирование общего ресурса Samba

Чтобы смонтировать общий ресурс Samba в Linux, сначала необходимо установить пакет cifs-utils .

В Ubuntu и Debian запустите:

В CentOS и Fedora запустите:

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

Подключите общий ресурс с помощью следующей команды:

Например, чтобы смонтировать общий ресурс с именем josh на сервере Samba с IP-адресом 192.168.121.118 от имени пользователя josh в точку монтирования /mnt/smbmount вы должны запустить:

Вам будет предложено ввести пароль пользователя.

Использование графического интерфейса

Files, файловый менеджер по умолчанию в Gnome имеет встроенную возможность доступа к общим ресурсам Samba.

Подключение к общему ресурсу Samba из macOS

В macOS вы можете получить доступ к общим ресурсам Samba либо из командной строки, либо с помощью стандартного файлового менеджера macOS Finder. Следующие шаги показывают, как получить доступ к общему ресурсу с помощью Finder.

Подключение к общему ресурсу Samba из Windows

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

  1. Откройте проводник и на левой панели щелкните правой кнопкой мыши «Этот компьютер».
  2. Выберите «Выбрать другое сетевое расположение» и нажмите «Далее».
  3. В поле «Интернет или сетевой адрес» введите адрес \samba_hostname_or_server_ipsharename Samba в следующем формате \samba_hostname_or_server_ipsharename .
  4. Нажмите «Далее», и вам будет предложено ввести учетные данные для входа, как показано ниже:
  5. В следующем окне вы можете ввести собственное имя для сетевого расположения. По умолчанию будет выбран сервер Samba.
  6. Нажмите «Далее», чтобы перейти к последнему экрану мастера настройки подключения.
  7. Нажмите «Готово», и будут показаны файлы на сервере Samba.

Выводы

В этом руководстве вы узнали, как установить сервер Samba на CentOS 7 и создать различные типы общих и пользователей. Мы также показали вам, как подключиться к серверу Samba с устройств Linux, macOS и Windows.

Установка и настройка Samba на CentOS 7


В статье приведен пример установки файлового сервера Samba в рабочей группе (не в домене) на CentOS 7. Доступ к ресурсам как публичный, так и по логину/паролю. Последнее обновление: 06.09.2017.

Подготовка

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

WORKGROUP должно совпадать с названием рабочей группы компьютеров у вас дома;

netbios name = centos - имя вашего сервера в сети. У меня это имя прописано в dns на роутере mikrotik, вы же при желании можете прописать centos в файл hosts на рабочих станциях в вашей сети. Главное, чтобы ваш сервер был доступен по имени centos (в этом примере). Если вы еще не заблокировали icmp, выполните команду `ping centos` с рабочей станции. Если разрешение имени не работает, у вас будет вариант использовать такую запись <ip-вашего-сервера> вместо centos.

guest account = samba_guest - определяем имя пользователя (должен быть добавлен в систему), от имени которого будет осуществляться доступ к общим папкам. Этого пользователя мы создадим чуть позже.

map to guest = bad user - означает, что если был указан логин/пароль и такого логина не существует, то будет произведена попытка войти под учеткой гостя.

ntlm auth = ntlmv2-only (то же, что и ntlm auth = no) - не разрешать NTLMv1, использовать NTLMv2. С версии Samba 4.5 это дефолт.

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

Да, и еще, я сразу удалил в этом файле дефолтные группы [homes], [printers], [netlogon], [Profiles] и [public]. Особенно я не хотел бы расшаривать домашние директории пользователей системы.

Несмотря на то, что файл настройки samba один, сами шары могут быть раскиданы по дискам и директориям, при просмотре сетевые пользователи не смогут понять, что шара upload указывает в /var/www/htdocs/upload, а шара docs - на /samba/common_docs. Т.е. ваша фантазия в этом плане вам на руку. Вы можете настроить все так, что файлы, которые вы загрузили по локальной сети, будут доступны посетителям вашего сайта. Ну или что угодно еще можете придумать. Главное, обращайте внимание на права доступа к файлам и директориям, которые вы создаете!

Проверяем, все ли правильно отредактировали:

Public share

Ранее в конфиге smb.conf мы указали имя пользователя ( guest account = samba_guest ), от имени которого будет производиться доступ к общедоступным шарам. Т.е. если мы в описании соответствующей группы укажем guest ok = yes , то независимо от ваших текущих привилегий доступ к файлам в соотв. шаре будет произведен от имени samba_guest . Давайте подготовим такого пользователя и директорию с соотв. правами.

опция -M указывает не создавать домашнюю директорию;
группа smbgrp будет объединять создаваемых в системе пользователей для Samba.

Здесь небольшая ремарка: часто в интернете в мануалах права на публичные шары предлагается давать 755 (т.е. запись только для пользователя, для группы и остальных - чтение и выполнение). И все здорово, до тех пор, пока вы не авторизуетесь для входа в другую папку, на которую установлен пароль (см. ниже). При этом вы будете уже не samba_guest:smbgrp, а, скажем, user1:smbgrp и вы сможете войти в свою директорию, но не сможете войти в общедоступную share (или войти сможете, но создать ничего не получиться - прав на запись у вас не будет)! Скажу честно, я не совсем понял, это я не так что-то понимаю или все так и есть. Но в моем случае именно права 775 на паблики выправили ситуацию (и я выше дал этому объяснение. Если я ошибаюсь - прошу прощения, что ввел вас в заблуждение. Но я честно вас предупредил :)

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

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

Шары с паролем

Общая идея такова: если нам надо создать пользователя user1 для шары Samba, нам надо сначала создать пользователя с таким логином в системе Linux, а потом создать такого же пользователя в Samba. По моему разумению, системный пользователь, создаваемый для Samba, не должен иметь возможность входа в систему, а также иметь домашнюю директорию. Собственно, зачем ему это?

Вообще говоря, пока вы не создадите пароль для этого пользователя, зайти им в систему нельзя, но представьте себе, когда через год или три вы забудете, ставили вы пароль или нет, и при просмотре /etc/passwd конкретно так вздрогнете, если оставить шелл по-умолчанию ;) Так что в любом случае проверьте файл /etc/passwd после выполнения команды. Хотя бы один разок.

А это уже внутренний пользователь Samba:

Создаем пользовательскую папку. Для директории user1 права можно ставить уже не 775, а 755:

параметр create mask = 0640 указывает, что создаваемые в этой шаре файлы будут для владельца с правами на запись, для группы - на чтение, всем остальным - фиг;
параметр directory mask = 0750 указывает аналогично, только для директорий.

В принципе, в личной шаре никто не мешает вам использовать маски 0600 и 0700 соотв. Хотите, поиграйтесь :) Но никогда без явно обозначенной цели не делайте маски 0777 ни для чего, даже если после этого все работает.

Проверяйте работу, все должно быть ок. В сетевом окружении должны быть две сетевые папки: share и user1.

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

Дополнительно

Ну и напоследок некоторые полезные команды.

Список пользователей Samba:

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

Смена пароля у существующего пользователя:

Удаление существующего пользователя:

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

Не хотите видеть в сетевой папке всякие временные файлы? В конфиге smb.conf добавьте к группе [User1 Share] что-то вроде:

hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/

Iptables для Samba

Лучший способ узнать, что нужно разрешить в iptables - это посмотреть, какие порты слушает Samba:

Соответственно, в iptables надо добавить следующие правила:

где 192.168.88.0/24 - ваша локальная сеть.

LOG-файл Samba

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

Попробуйте открыть файлы на шаре, удалить папку, создать файл. Потом посмотрите файл /var/log/messages:

Все ясно. Кто-то с ip 192.168.3.3 переименовал файл open_server_5_2_5_basic.exe, причем дважды. Потом создал папку, переименовал ее и удалил.

Играясь со списком " mkdir rmdir read pread write pwrite sendfile rename unlink lock " можно реагировать на разные события, а можно вообще так full_audit:success = all !open (все, кроме открытия).

Можно до бесконечности писать про всякие отдельные фишки. Но в целом зада выполнена.

Здравствуйте. Я сделал домашний сервер на CentOS 7.6. Более полугода не могу решить две проблемы, 1. Периодически пропадает доступ к ресурсам Samba сервера из рабочей станции под Linux из Dolpin: - > Сеть > Добавить сетевую папку > Сетевой диск Windows. Ранее добавленные и сохранённые ресурсы недоступны. Когда доступ есть время присоединения, через Putty около секунды, когда доступа нет, оно увеличивается до 40 секунд. Аналогично через Putty запускается Midnight Commander. Доступ к ресурсам Samba из Windows не пропадает. Затем, через несколько дней, без всякого вмешательства, всё восстанавливается. 2. Периодически один, или несколько дисков сервера переводится в режим "Только чтение". Восстанавливается так же без вмешательства. И ещё вопрос, я не понял смысла команды "firewall-cmd --permanent --zone=public --add-service=samba", нужна ли она в рабочей группе и на что влияет, точнее нужны ли дополнительные настройки в случае её использования. При настройке сервера я её не использовал. На рабочей станции две ОС, Fedora 28 Plasma и Windows 10.

Откорректировал в соответствии с Вашими рекомендациями файл smb.conf и у меня совсем пропал доступ к общим папкам сервера, хотя команда testparm сообщает, что всё ОК. Снова восстановил свой конфигурацонный файл и доступ восстановился. Привожу полностью состав файла:
[global]
workgroup = WORKGROUP
server string = File Server
netbios name = nikiv64
interfaces = lo enp2s0 192.168.8.3/24
hosts allow = 127. 192.168.8.
security = user
passdb backend = tdbsam
map to guest = bad user
min protocol = smb2

log file = /var/log/samba/log.%m
max log size = 50

encrypt passwords = yes
security = user
dns proxy = no
dos charset = 866
unix charset = UTF-8

[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes

[home]
comment = My Files
path = /home/user
force user = user
force group = user
guest ok = yes
writable = yes
create mask = 0775
directory mask = 0775
Всё работает, однако проблема №1, которая появилась сегодня утром, осталась. Я нашёл способ подключения к общим ресурсам сервера при помощи утилиты cifs, через конфигурационный файл fstab, однако подключение происходит примерно за 40 секунд, подозреваю, что оно осуществляется, не через Samba, а через SSH.

Читайте также: