Поиск по сайту:
То, что кажется странным, редко остается необъясненным (Г. Лихтенберг).

Как установить и настроить Samba в CentOS 7

28.02.2019
Как установить и настроить Samba в CentOS 7

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

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

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

Пользователи:

  • sadmin – Администратор с правами чтения и записи для всех общих ресурсов.
  • andreyex – обычный пользователь со своей личной папкой.

Совместное использование:

  • users – этот ресурс будет доступен всем пользователям с правами на чтение/запись.
  • andreyex – этот ресурс будет доступен с правами на чтение/запись только пользователям andreyex и sadmin.

 

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

 

Предпосылки

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

 

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

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

sudo yum install samba samba-client

 

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

sudo systemctl start smb.service
sudo systemctl start nmb.service
sudo systemctl enable smb.service
sudo systemctl enable nmb.service

 

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

 

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

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

firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --zone=public --add-service=samba

 

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

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

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

sudo mkdir /samba

 

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

sudo groupadd sambashare

 

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

sudo chgrp sambashare /samba

 

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

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

 

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

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

sudo useradd -M -d /samba/andreyex -s /usr/sbin/nologin -G sambashare andreyex

 

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

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

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

sudo mkdir /samba/andreyexsudo chown andreyex:sambashare /samba/andreyex

 

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

sudo chmod 2770 /samba/andreyex

 

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

sudo smbpasswd -a andreyex

 

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

New SMB password:
Retype new SMB password:
Added user andreyex.

 

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

sudo smbpasswd -e andreyex
Enabled user andreyex.

 

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

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

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

sudo useradd -M -d /samba/users -s /usr/sbin/nologin -G sambashare sadmin

 

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

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

sudo smbpasswd -a sadmin
sudo smbpasswd -e sadmin

 

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

sudo mkdir /samba/users

 

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

sudo chown sadmin:sambashare /samba/users

 

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

sudo chmod 2770 /samba/users

 

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

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

sudo nano /etc/samba/smb.conf

/etc/samba/smb.conf

[users]
    path = /samba/users
    browseable = yes
    read only = no
    force create mode = 0660
    force directory mode = 2770
    valid users = @sambashare @sadmin

[andreyex]
    path = /samba/andreyex
    browseable = no
    read only = no
    force create mode = 0660
    force directory mode = 2770
    valid users = andreyex @sadmin

 

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

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

 

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

sudo systemctl restart smb.service
sudo systemctl restart nmb.service

 

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

 

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

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

 

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

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

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

sudo apt install smbclient

 

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

sudo yum install samba-client

 

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

mbclient //samba_hostname_or_server_ip/share_name -U username

 

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

smbclient //213.159.209.228/andreyex -U andreyex

 

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

Enter WORKGROUP\andreyex's password:

 

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

Try "help" to get a list of possible commands.
smb: \>

 

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

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

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

sudo apt install cifs-utils

 

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

sudo yum install cifs-utils

 

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

sudo mkdir /mnt/smbmount

 

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

sudo mount -t cifs -o username=username //samba_hostname_or_server_ip/sharename /mnt/smbmount

 

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

sudo mount -t cifs -o username=andreyex //213.159.209.228/andreyex /mnt/smbmount

 

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

Password for andreyex@//213.159.209.228/andreyex:  ********

 

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

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

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

 

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

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

  1. Откройте «Finder», выберите «Go» и нажмите «Connect To».
  2. В поле «Подключиться к» введите адрес общего ресурса Samba в следующем формате smb://samba_hostname_or_server_ip/sharename.
  3. Нажмите «Подключиться»
  4. Выберите «Зарегистрированный пользователь», введите имя пользователя и пароль Samba и нажмите «Подключиться».
  5. Файлы будут показаны на сервере Samba.

 

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

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

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

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 3,20 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

12 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Николай Иваничев

Я думаю, что в командах был пропущен пробел, они должны выглядеть так,
sudo systemctl start smb.service sudo systemctl start nmb.service
(У меня нормально проходит команда, # systemctl start smb nmb)
sudo systemctl enable smb.service sudo systemctl enable nmb.service
sudo mkdir /samba/andreyex sudo chown andreyex:sambashare /samba/andreyex
sudo smbpasswd -a sadmin sudo smbpasswd -e sadmin
sudo systemctl restart smb.service sudo systemctl restart nmb.service
Думаю, это просто опечатки. А статья очень понравилась, всё расписано очень подробно и толково.
Хотелось бы задать вопрос автору, если Вы владеете ситуацией, подскажите, пожалуйста, почему на сервере CentOS 7.6, Samba работает очень нестабильно. Без видимой причины пропадает доступ к ресурсам сервера, через Samba из сети с рабочей станции под Linux, затем, через несколько дней, также беспричинно появляется. С рабочей станции под Windows, доступ к ресурсам сервера не пропадает. Соединение из Dolphin, через SSH с рабочей станции под Linux есть, но время соединения больше в 30 – 40 раз по сравнению с тем, когда доступ, через Samba есть.

Николай Иваничев

Ещё одна команда с пропущенным пробелом, очевидно должна быть,
firewall-cmd –permanent –zone=public –add-service=samba firewall-cmd –zone=public –add-service=samba
Но это же звучит, как масло масляное, или необходим такой формат ввода команды?

Николай Иваничев

Вчера получилось присоединить ресурс Samba в Fedora 29 через fstab. Может быть, кому-то это будет полезным. Для этого создал внутри своего домашнего каталога папку для монтирования ресурса и добавил запись в конец файла fstab, не стал создавать папку в папке /mnt, как рекомендуют многие блоггеры так, как она является системной и могут возникнуть проблемы с правами доступа, у меня они были, и я посчитал за лучшее создать её в своём домашнем каталоге. Вот эта запись,
# Мой сетевой диск
//192.168.8.3/share /home/user/server cifs user=логин,password=************,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0

Здесь:
//192.168.8.3 – адрес вашего сервера
/share – папка на сервере с общим доступом (определена в файле /etc/samba/smb.conf сервера)
/home/user/server – полное имя папки, в которую монтируется ресурс сервера.
user=логин – логин пользователя
password=************ – пароль пользователя
iocharset=utf8 – локаль, в которой будет представлена информация
file_mode=0777 – маска chmod которая определяет права доступа для монтируемых файлов
dir_mode=0777 – то же, для монтируемых папок
0 0 опции монтирования, первый отключает функцию резервного копирования раздела, второй отключает проверку монтируемого раздела. Можно, конечно их включить, но это значительно удлиннит время старта системы.
*** Примечание. Сервер сети должен быть включён до включения рабочей станции, а выключен после её отключения, если этого не сделать, практически у всех Linux будет ошибка при её старте и зависание при выключении сервера.

Николай Иваничев

Подскажите, пожалуйста, какие порты необходимо открыть на сервере CentOS 7 для Samba? В разных источниках разные сведения.
У меня открыты: 80/tcp, 137/tcp, 138/tcp, 139/tcp, 443/tcp, 445/tcp. Однако, в некоторых источниках указаны необходимые порты: 137/udp, 138/udp, 139/tcp, 443/tcp, 445/tcp. Ка будет правильно, нигде не нашёл.

dron

137 tcp/udp NetBIOS-NS, 138 udp – NetBIOS-DGM, 139 tcp – NetBIOS-SSN, 445 tcp – Microsoft-DS, можно еще DNS – 53 tcp/udp

Толик Красавчик

Молодец Андрей

влад

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

Юрий

Общая папка монтируется и видится из под Windows. Но вот файлы в ней из под windows не видно. Так же не возможно что либо записать в эту папку из под windows. Подскажите пожалуйста в какую сторону копать и что делать?

Eugene

Смотрите в сторону прав на файлы и папки

Дмитрий

Папки видятся, но зайти в них не получается – нет прав, обратитесь к системному администратору и т.д.
также в СРМ не подключается – Нет прав на запись во внешнее хранилище

Права на две папки уже поставил 777, владельцем пользователя, который должен к ним заходить, и всё равно.

Николай

Кроме разрешений для папок и файлов, необходима ещё настройка прав польхователя, пользователь должен входить в группу, которой разрешён доступ к папке, или файлу. И самое главное, необходимо установить клиентскую часть samba в Debian и его форках, клонах это делается командой sudo apt install smbclient, я обычно устанавливаю всё, командой, sudo apt install samba smbclient потому, что часто необходимо дать доступ к своим папкам и файлам.
Кроме добавления группы и пользователя в Linux, необходимо ещё добавить группу и пользователя в samba и назначить пароль пользователю:

Создаём группу:

sudo groupadd group_name

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

sudo useradd -c ‘комментарий’ -m user_name -g Group_name

Добавляем учетную запись пользователя samba

sudo smbpasswd -a user_name

Перезапускаем samba,

# service samba restart
или

# /etc/init.d/samba restart

или лучше перезагружаем сервер

После этого доступ должен появиться.
Ещё проблема возможна, если у вас не разрешена samba в firewall, или IPTables, а также закрыты порты. Это необходимо сделать.

Я открываю порты 80, 137, 138, 139, 443, 445, последний используется для работы .

Я использую firewall, к нему привык он для меня наиболее удобен и понятен

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

Спасибо!

Теперь редакторы в курсе.