- Установка и настройка Samba на CentOS 7
- Подготовка
- Public share
- Шары с паролем
- Дополнительно
- Iptables для Samba
- LOG-файл Samba
- Настройка Samba в CentOS 7
- Настраиваем Samba в CentOS 7
- Шаг 1: Подготовительные работы в Windows
- Шаг 2: Инсталляция Samba в CentOS 7
- Шаг 3: Установка глобальных параметров
- Шаг 4: Создание общедоступного каталога
- Шаг 5: Создание защищенного каталога
Установка и настройка 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
Файловый сервер (ФС) в операционных системах Linux может быть использован для разных целей, однако в большинстве случаев он задействован при создании локальной сети и общих папок с компьютерами на базе Windows. Самым популярным ФС на текущий момент времени по праву считается Samba. Она предустановлена во многих дистрибутивах, а опытные юзеры предпочитают именно этот инструмент в качестве основного при необходимости использования файловых серверов. Сегодня речь пойдет об инсталляции и настройке этого компонента в CentOS 7.
Настраиваем Samba в CentOS 7
Мы распределили весь материал на шаги, потому что процесс стандартной конфигурации обычно занимает много времени и состоит из нескольких различных этапов. Не обойдем стороной и предварительные действия с Windows, поскольку выше мы уже уточнили, что Samba часто применяется в связке именно с этой операционной системой. Вам остается только внимательно изучить представленные инструкции, чтобы понять основные принципы настройки файлового сервера в CentOS 7.
Шаг 1: Подготовительные работы в Windows
Начать стоит именно с Виндовс, поскольку потребуется определить важную информацию, без которой не обойтись без создания сети и общих папок. Вам потребуется определить имя рабочей группы и внести изменения в файл «hosts», чтобы попытки подключения не блокировались. Все это выглядит следующим образом:
- Откройте «Пуск», через поиск отыщите «Командную строку» и запустите это приложение от имени администратора.
Введите команду net config workstation , чтобы узнать текущую конфигурацию рабочей станции. Активируйте действие нажатием на клавишу Enter.
Дождитесь появления списка. В нем отыщите пункт «Домен рабочей станции» и запомните его значение.
Опуститесь в конец списка и вставьте строку 192.168.0.1 srvr1.domain.com srvr1 , заменив этот IP на адрес устройства, где дальше будет настраиваться Samba. После этого сохраните все изменения.
На этом все действия с компьютером на Windows заканчиваются, а это значит, что можно переходить к CentOS 7 и заняться непосредственной конфигурацией файлового сервера Samba.
Шаг 2: Инсталляция Samba в CentOS 7
Далеко не все компоненты, требуемые для корректного функционирования Samba, по умолчанию установлены в рассматриваемой операционной системе, поэтому их придется добавлять вручную. Все эти действия будут выполнены через «Терминал», а также вам нужно убедиться в наличии активного подключения к интернету и возможности использовать команду sudo.
- Откройте консоль удобным для вас образом, например, через меню приложений или стандартную комбинацию клавиш Ctrl + Alt + T.
Здесь введите sudo yum install -y samba samba-common python-glade2 system-config-samba , чтобы запустить одновременную инсталляцию всех требуемых дополнительных утилит.
Введите пароль суперпользователя, чтобы подтвердить данное действие. Учитывайте, что написанные в данной строке символы не отображаются.
Вы будете уведомлены о том, что начался процесс установки. Во время этого не закрывайте «Терминал», иначе все настройки будут автоматически сброшены.
По завершении операции появятся строки, сообщающие о том, что установлены необходимые утилиты и их зависимости — можно переходить далее.
Благодаря введенной ранее команде сразу все утилиты были инсталлированы одновременно и больше ничего добавлять в систему не придется. Файловый сервер будет запущен автоматически и сразу же добавлен в автозагрузку, поэтому можно не беспокоиться о его включении или создании символических ссылок.
Шаг 3: Установка глобальных параметров
Samba инсталлируется в ОС в «чистом виде», а это значит, что сейчас не заданы параметры, определяющие ее поведение. Их придется устанавливать самостоятельно, а начать стоит с главной конфигурации. Мы предлагаем воспользоваться стандартным шаблоном, заменив некоторые пользовательские строки.
- Иногда Samba устанавливается с чистым конфигурационным файлом, однако в нем все же могут уже быть заданы какие-то параметры. Давайте сначала создадим резервную копию этого объекта, чтобы в случае чего быстро восстановить ее. Осуществляется эта задача путем ввода sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak .
Это действие, как и все последующие, придется подтвердить, указав пароль суперпользователя.
Следующие манипуляции будут производиться непосредственно с самим конфигурационным файлом. Для этого всегда используется текстовый редактор. По стандарту в систему добавлен vi, но он не является достаточно удобным для начинающих пользователей, поэтому мы рекомендуем инсталлировать nano через команду sudo yum install nano .
Если nano уже добавлен в ОС, вы будете уведомлены об этом.
Теперь перейдем к редактированию конфигурационного файла, введя sudo nano /etc/samba/smb.conf .
В открывшемся окне введите расположенное ниже содержимое.
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
netbios name = Ubuntu Share
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
passdb backend = tdbsam
unix password sync = yes
passwd program = /usr/bin/passwd %u
pam password change = yes
map to guest = bad user
usershare allow guests = yes
Нажмите сочетание клавиш Ctrl + O, чтобы записать изменения.
Не изменяйте название файла, а просто нажмите на Enter.
После этого можно покинуть окно текстового редактора, зажав Ctrl + X.
Выше мы указали, какое именно содержимое следует вставлять в конфигурационный файл, однако значения данных параметров меняются в зависимости от требований пользователя. Давайте более детально разберемся с самыми важными пунктами:
- workgroup. Этот параметр определяет имя рабочей группы. Его значение выставляется в соответствии с определенной в Windows информацией.
- netbios name. Поменяйте значение на произвольное имя, которое хотите, чтобы отображалось на ПК под управлением Windows при взаимодействии с данным устройством.
- log file. В качестве значения этого параметра укажите путь к файлу, где хотите хранить журналы событий, записывающиеся во время функционирования файлового сервера.
- passdb backend. Эта опция определяет тип хранения паролей. Если вы не знаете, что именно здесь задать, лучше оставьте этот пункт в значении по умолчанию.
- unix password sync. Рекомендуется активировать этот параметр, поскольку он отвечает за синхронизацию паролей/
- map to guest. Используется для обозначения гостевого доступа. Имеет несколько значений: bad user применяется для несуществующих учетных записей, bad password загружает гостевой режим при неверном вводе пароля, а never попросту деактивирует опцию.
Дополнительно в Samba имеются и другие конфигурационные опции, а также реализован графический интерфейс. Со всем этим мы советуем ознакомиться в официальной документации, поскольку всю информацию невозможно уместить в рамках одной статьи.
Шаг 4: Создание общедоступного каталога
Продолжим конфигурацию файлового сервера, разобрав принцип создания общедоступных каталогов. Сразу отметим, что такие папки обычно не ограничены паролем и доступны к просмотру или даже для редактирования абсолютно каждому подключенному юзеру. Чаще всего создают одну такую директорию, но ничего не мешает вам добавить их любое количество. Создание первой такой папки выполняется так:
- В «Терминале» введите sudo mkdir -p /samba/allaccess , чтобы создать упомянутую выше папку. Измените ее название на произвольное, если это требуется.
Приступайте к настройке общего доступа, изначально переместившись по пути cd /samba .
Здесь вставьте строку sudo chmod -R 0755 allaccess и нажмите на Enter.
Еще один параметр sudo chown -R nobody:nogroup allaccess/ отвечает за предоставление доступа абсолютно всем пользователям.
Теперь потребуется обозначить данную папку в конфигурационном файле. Для начала запустим его через sudo nano /etc/samba/smb.conf .
Вставьте в конец или начало файла расположенный ниже блок. О значении каждой строки мы поговорим немного позднее, чтобы вы разобрались с установкой индивидуальных значений.
[allaccess]
path = /samba/allaccess
browsable = yes
writable = yes
guest ok = yes
read only = no
Сохраните изменения и покиньте текстовый редактор.
Все настройки будут применены только после перезапуска файлового сервера, поэтому сделайте это прямо сейчас, написав sudo systemctl restart samba .
После того, как все необходимые общедоступные директории будут созданы, рекомендуется проверить их работоспособность в Windows, введя там команду \\srvr1\allaccess . Теперь давайте затронем указанные выше параметры:
- path. Здесь вписывается путь к той самой папке, которая выбрана общедоступной.
- browsable. Активация этого параметра позволит отображать каталог в списке разрешенных.
- writable. Указанную папку можно будет редактировать, если значение этого параметра указано как yes.
- guest ok. Активируйте этот пункт, если хотите предоставить общий доступ к папке.
- read only. Используйте положительное значение этого параметра, чтобы установить значение папки «Только для чтения».
Шаг 5: Создание защищенного каталога
В качестве последнего примера конфигурации Samba хотим рассказать о создании защищенных папок, которые будут находиться под паролем и доступны только определенным пользователям. Как вы уже поняли, создать таких директорий можно неограниченное количество, а происходит это так:
- Создадим директорию, которую далее будем настраивать, воспользовавшись командой sudo mkdir -p /samba/allaccess/secured .
Добавьте группу, куда будут входить разрешенные пользователи, через sudo addgroup securedgroup .
Перейдите расположению защищенного каталога, указав cd /samba/allaccess .
Здесь задайте права для каждого отдельного пользователя через sudo chown -R richard:securedgroup secured . Замените имя richard в этой команде на необходимое.
Осталось только ввести общую команду для безопасности sudo chmod -R 0770 secured/ .
Перейдите к конфигурационному файлу ( sudo nano /etc/samba/smb.conf ), чтобы указать ту папку, которую мы только что настроили.
Скопируйте и вставьте в редактор указанный ниже блок.
[secured]
path = /samba/allaccess/secured
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes
Сохраните изменения и закройте текстовый редактор.
Добавьте все учетные записи в соответствующую группу через sudo usermod -a -G securedgroup richard .
Установите для каждой из них пароль sudo smbpasswd -a richard в качестве последнего действия, завершающего конфигурацию.
Это вся информация, которой мы хотели поделиться, рассказав об общих настройках файлового сервера Samba в CentOS 7. Вам осталось только следовать приведенным инструкциям, изменяя параметры и их значения под себя, чтобы создать оптимальную конфигурацию.
Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник