- Установка и настройка Samba на CentOS 7
- Подготовка
- Public share
- Шары с паролем
- Дополнительно
- Iptables для Samba
- LOG-файл Samba
- Как установить и настроить Samba на CentOS 7
- Подготовка
- Установка Samba на CentOS
- Настройка межсетевого экрана
- Создание пользователей Samba и структуры каталогов
- Создание пользователей Samba
- Настройка общих ресурсов Samba
- Подключение к общему ресурсу Samba из Linux
- Использование клиента smbclient
- Монтирование общего ресурса Samba
- Использование графического интерфейса
- Подключение к общему ресурсу Samba из macOS
- Подключение к общему ресурсу Samba из Windows
- Выводы
Установка и настройка Samba на CentOS 7
В статье приведен пример установки файлового сервера Samba в рабочей группе (не в домене) на CentOS 7. Доступ к ресурсам как публичный, так и по логину/паролю. Последнее обновление: 06.09.2017.
# yum install samba samba-client samba-common
Подготовка
# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Сначала укажем в конфиге то, что мы планируем сделать, а потом уже создадим нужных пользователей, зададим права доступа на директории и пр. Почти все в этом файле как и в примере ниже, выдумывать или менять мало что нужно:
WORKGROUP должно совпадать с названием рабочей группы компьютеров у вас дома;
netbios name = centos — имя вашего сервера в сети. У меня это имя прописано в dns на роутере mikrotik, вы же при желании можете прописать centos в файл hosts на рабочих станциях в вашей сети. Главное, чтобы ваш сервер был доступен по имени centos (в этом примере). Если вы еще не заблокировали icmp, выполните команду `ping centos` с рабочей станции. Если разрешение имени не работает, у вас будет вариант использовать такую запись вместо 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.
# systemctl enable smb.service && systemctl enable nmb.service
# systemctl restart smb.service && systemctl restart nmb.service
# firewall-cmd —permanent —zone=public —add-service=samba
# firewall-cmd —reload
Пробуем с рабочей станции в сети открыть шару share и создать пробный файл. Создав, проверьте на сервере, с какими правами создан файл:
# ls -al /samba/share
Если все ок и вы можете войти в публичную шару и создать в ней файл, то можно попробовать создать запароленную директорию для отдельного пользователя. Если что-то не так, скорее всего проблема в правах на папки, iptables или с SELinux.
Шары с паролем
Общая идея такова: если нам надо создать пользователя user1 для шары Samba, нам надо сначала создать пользователя с таким логином в системе Linux, а потом создать такого же пользователя в Samba. По моему разумению, системный пользователь, создаваемый для Samba, не должен иметь возможность входа в систему, а также иметь домашнюю директорию. Собственно, зачем ему это?
# useradd -c ‘Samba member’ -G smbgrp -M -s /sbin/nologin user1
Вообще говоря, пока вы не создадите пароль для этого пользователя, зайти им в систему нельзя, но представьте себе, когда через год или три вы забудете, ставили вы пароль или нет, и при просмотре /etc/passwd конкретно так вздрогнете, если оставить шелл по-умолчанию 😉 Так что в любом случае проверьте файл /etc/passwd после выполнения команды. Хотя бы один разок.
А это уже внутренний пользователь Samba:
# smbpasswd -a user1
Создаем пользовательскую папку. Для директории user1 права можно ставить уже не 775, а 755:
# nano /etc/samba/smb.conf
.
[User1 Share]
comment = User1’s files
path = /samba/user1
;valid users = @smbgrp
valid users = user1
guest ok = no
writable = yes
browsable = yes
create mask = 0640
directory mask = 0750
параметр create mask = 0640 указывает, что создаваемые в этой шаре файлы будут для владельца с правами на запись, для группы — на чтение, всем остальным — фиг;
параметр directory mask = 0750 указывает аналогично, только для директорий.
В принципе, в личной шаре никто не мешает вам использовать маски 0600 и 0700 соотв. Хотите, поиграйтесь 🙂 Но никогда без явно обозначенной цели не делайте маски 0777 ни для чего, даже если после этого все работает.
# systemctl restart smb.service && systemctl restart nmb.service
Проверяйте работу, все должно быть ок. В сетевом окружении должны быть две сетевые папки: share и user1.
Создайте еще пользователя, проверьте, как работают права доступа к пабликам и персональным директориям. Если что-то идет не так, проверяйте права доступа на директории и встроенные механизмы защиты, в данном случае SELinux.
Дополнительно
Ну и напоследок некоторые полезные команды.
Список пользователей Samba:
# pdbedit -L
user1:1001:Samba member
Расширенные данные по пользователям:
Смена пароля у существующего пользователя:
Удаление существующего пользователя:
Приостановление учетной записи без удаления:
Не хотите видеть в сетевой папке всякие временные файлы? В конфиге 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:
# systemctl restart smb.service && systemctl restart nmb.service
Попробуйте открыть файлы на шаре, удалить папку, создать файл. Потом посмотрите файл /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 (все, кроме открытия).
Можно до бесконечности писать про всякие отдельные фишки. Но в целом зада выполнена.
Откорректировал в соответствии с Вашими рекомендациями файл 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.
Источник
Как установить и настроить Samba на CentOS 7
Samba — это бесплатная и открытая повторная реализация сетевого протокола обмена файлами SMB / CIFS, которая позволяет конечным пользователям получать доступ к файлам, принтерам и другим общим ресурсам.
В этом руководстве мы покажем, как установить Samba на CentOS 7 и настроить его как автономный сервер для обеспечения обмена файлами между различными операционными системами по сети.
Мы создадим следующие общие ресурсы и пользователей 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 и прослушивает порт 137 UDP.
Настройка межсетевого экрана
Теперь, когда Samba установлена и запущена на вашем компьютере с CentOS, вам нужно настроить брандмауэр и открыть необходимые порты. Для этого выполните следующие команды:
Создание пользователей Samba и структуры каталогов
Для упрощения сопровождения и гибкости вместо использования стандартных домашних каталогов ( /home/user ) все каталоги и данные Samba будут расположены в каталоге /samba .
Начнем с создания каталога /samba :
Создайте новую группу с именем sambashare . Позже мы добавим в эту группу всех пользователей Samba.
Установите владельцем группы каталогов /samba значение sambashare :
Samba использует систему разрешений пользователей и групп Linux, но имеет свой собственный механизм аутентификации, отличный от стандартной аутентификации Linux. Мы создадим пользователей, используя стандартный инструмент Linux useradd , а затем установим пароль пользователя с помощью утилиты 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 запись пользователя josh в базу данных Samba, установив пароль пользователя:
Вам будет предложено ввести и подтвердить пароль пользователя.
После установки пароля включите учетную запись Samba, набрав:
Чтобы создать другого пользователя, повторите тот же процесс, что и при создании пользователя josh .
Далее давайте создадим пользователя и группу sadmin . Все члены этой группы будут иметь права администратора. Позже, если вы захотите предоставить административные права другому пользователю, просто добавьте этого пользователя в группу sadmin .
Создайте пользователя с правами администратора, набрав:
Приведенная выше команда также создаст группу sadmin и добавит пользователя в группы sadmin и sambashare .
Установите пароль и включите пользователя:
Затем создайте общий каталог Users :
Установите владельца каталога на пользователя sadmin и группу sambashare :
Этот каталог будет доступен всем авторизованным пользователям. Следующая команда настраивает доступ для записи / чтения для членов группы sambashare в sambashare /samba/users :
Настройка общих ресурсов Samba
Откройте файл конфигурации Samba и добавьте разделы:
Параметры имеют следующие значения:
- [users] и [josh] — имена [josh] ресурсов, которые вы будете использовать при входе в систему.
- path — Путь к общему ресурсу.
- browseable — должен ли общий ресурс отображаться в списке доступных общих ресурсов. Если установить значение « no другие пользователи не смогут видеть общий ресурс.
- read only — могут ли пользователи, указанные в списке valid users , писать в этот общий ресурс.
- force create mode — устанавливает разрешения для вновь созданных файлов в этом общем ресурсе.
- force directory mode — устанавливает разрешения для вновь созданных каталогов в этом общем ресурсе.
- valid users — список пользователей и групп, которым разрешен доступ к общему ресурсу. Группы имеют префикс @ .
Дополнительные сведения о доступных параметрах см. На странице документации файла конфигурации Samba .
После этого перезапустите службы Samba с помощью:
В следующих разделах мы покажем вам, как подключиться к общему ресурсу Samba из клиентов Linux, macOS и Windows.
Подключение к общему ресурсу Samba из Linux
Пользователи Linux могут получить доступ к общему ресурсу samba из командной строки, используя файловый менеджер или смонтировать общий ресурс Samba.
Использование клиента smbclient
smbclient — это инструмент, который позволяет вам получить доступ к Samba из командной строки. Пакет smbclient не установлен предварительно в большинстве дистрибутивов Linux, поэтому вам нужно будет установить его с помощью диспетчера пакетов распространения.
Чтобы установить 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.
- Откройте файлы и нажмите «Другие места» на боковой панели.
- В поле «Подключиться к серверу» введите адрес smb://samba_hostname_or_server_ip/sharename Samba в следующем формате smb://samba_hostname_or_server_ip/sharename .
- Нажмите «Подключиться», и появится следующий экран:
- Выберите «Зарегистрированный пользователь», введите имя пользователя и пароль Samba и нажмите «Подключиться».
- Будут показаны файлы на сервере Samba.
Подключение к общему ресурсу Samba из macOS
В macOS вы можете получить доступ к общим ресурсам Samba либо из командной строки, либо с помощью стандартного файлового менеджера macOS Finder. Следующие шаги показывают, как получить доступ к общему ресурсу с помощью Finder.
- Откройте «Finder», выберите «Перейти» и нажмите «Подключиться к».
- В поле «Подключиться к» введите адрес smb://samba_hostname_or_server_ip/sharename Samba в следующем формате smb://samba_hostname_or_server_ip/sharename .
- Нажмите «Подключиться», и появится следующий экран:
- Выберите «Зарегистрированный пользователь», введите имя пользователя и пароль Samba и нажмите «Подключиться».
- Будут показаны файлы на сервере Samba.
Подключение к общему ресурсу Samba из Windows
Пользователи Windows также могут подключиться к общему ресурсу Samba как из командной строки, так и из графического интерфейса. Следующие шаги показывают, как получить доступ к общему ресурсу с помощью проводника Windows.
- Откройте проводник и на левой панели щелкните правой кнопкой мыши «Этот компьютер».
- Выберите «Выбрать другое сетевое расположение» и нажмите «Далее».
- В поле «Интернет или сетевой адрес» введите адрес \samba_hostname_or_server_ipsharename Samba в следующем формате \samba_hostname_or_server_ipsharename .
- Нажмите «Далее», и вам будет предложено ввести учетные данные для входа, как показано ниже:
- В следующем окне вы можете ввести собственное имя для сетевого расположения. По умолчанию будет выбран сервер Samba.
- Нажмите «Далее», чтобы перейти к последнему экрану мастера настройки подключения.
- Нажмите «Готово», и будут показаны файлы на сервере Samba.
Выводы
В этом руководстве вы узнали, как установить сервер Samba на CentOS 7 и создать различные типы общих и пользователей. Мы также показали вам, как подключиться к серверу Samba с устройств Linux, macOS и Windows.
Источник