Используемые термины: Samba, CentOS, SMB.
Samba позволяет настроить файловое хранилище различных масштабов — от малых офисов для крупных организаций. В данной инструкции мы рассмотрим процесс настройки файлового сервера. Сначала мы выполним установку и базовую настройку с предоставлением гостевого доступа. После будет приведены примеры разграничения доступа по пользователям, группам и пользователям Active Directory.
Для корректного отображения дат, необходимо позаботиться о синхронизации времени. Для этого будем использовать демон chrony. Установим его:
dnf install chrony
Разрешим автозапуск и стартанем сервис:
systemctl enable chronyd
systemctl start chronyd
По умолчанию, в системах CentOS брандмауэр запрещает все соединения. Необходимо разрешить сервис samba. Выполняем команду:
firewall-cmd –permanent –add-service=samba
Применяем настройки:
firewall-cmd –reload
Система безопасности SELinux будет блокировать все попытки подключиться к удаленной папке. Необходимо создать политику для каталога, в котором будут находиться общие папки. Для этого устанавливаем пакеты для управления политиками:
dnf install policycoreutils setroubleshoot
Теперь создаем само правило. Например, если мы планируем использовать каталог /data, то вводим команды:
mkdir /data
* на случай, если каталога еще нет, создаем его.
semanage fcontext -a -t samba_share_t “/data(/.*)?”
restorecon -R -v /data
Или можно просто отключить SELinux.
Установка выполняется из репозитория одной командой:
dnf install samba
Разрешаем автостарт сервиса и запускаем его:
systemctl enable smb –now
И проверим, что сервис запустился:
systemctl status smb
Проверяем, что сервер самба позволяет к себе подключиться. Для этого можно с компьютера обратиться к серверу по SMB, например, на компьютере с Windows это можно сделать из проводника, прописав путь к серверу с двух слэшей:
* в данном примере мы подключаемся к серверу Samba с IP-адресом 192.168.1.15.
Если мы настроили сервер правильно, система должна запросить пароль на подключение к Samba. Отказываемся его вводить. На данном этапе проверка закончена.
Разберем самый простой пример предоставления доступа к папке — анонимный доступ всем пользователям без запроса пароля.
Открываем на редактирование конфигурационный файл samba:
vi /etc/samba/smb.conf
В секцию [global] добавляем:
…map to guest = Bad Password…
И добавляем настройку для общей папки:
[Общая папка] comment = Public Folder path = /data/public public = yes writable = yes read only = no guest ok = yes create mask = 0777 directory mask = 0777 force create mode = 0777 force directory mode = 0777
* где:
Создаем каталог на сервере и назначим права:
mkdir -p /data/public
chmod 777 /data/public
Применяем настройки samba, перезагрузив сервис:
systemctl restart smb
Пробуем подключиться к папке. Мы должны зайти в нее без необходимости ввода логина и пароля.
Теперь создадим каталог, в который вход будет разрешен только авторизованным пользователям.
Открываем конфигурационный файл samba:
Добавляем настройку для новой папки:
[Папка сотрудников] comment = Staff Folder path = /data/staff public = no writable = yes read only = no guest ok = no create mask = 0777 directory mask = 0777 force create mode = 0777 force directory mode = 0777
* эти настройки, во многом, похожи на те, что использовались в примере выше. Вот основные различия:
Создаем каталог для новой папки:
mkdir /data/staff
Задаем права на созданный каталог:
chmod 777 /data/staff
Создаем пользователя в системе Linux:
useradd staff1
* где staff1 — имя пользователя.
Задаем пароль для пользователя:
passwd staff1
Теперь создадим пользователя в samba:
smbpasswd -a staff1
Перезапускаем samba:
Пробуем зайти на сервер — общую папку мы должны открыть без авторизации, а при попытке открыть папку сотрудников должно появиться окно ввода логина и пароля.
Если мы авторизованы на компьютере, с которого пытаемся подключиться к серверу, под той же учетной записью, что создали для доступа к папке, samba может и не потребовать аутентификации.
Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей.
[Приватная папка] comment = Private Folder path = /data/private public = no writable = no read only = yes guest ok = no valid users = admin, staff2, staff3, @privateusers write list = admin, staff2 create mask = 0777 directory mask = 0777 force create mode = 0777 force directory mode = 0777 inherit owner = yes
* стоит обратить внимание на следующие настройки:
* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.
mkdir /data/private
chmod 777 /data/private
Для применения настроек перезапускаем samba:
Проверяем возможность работы с новым каталогом.
Разберем пример конфигурирования файлового сервера samba в домене Windows и настроим авторизацию пользователей на базе LDAP Active Directory.
Введем наш сервер в домен. Сначала необходимо убедиться, что сервер доступен по своему доменному имени. Если серверу так и не было задано вменяемого имени, вводим команду:
hostnamectl set-hostname samba.admins24.local
* где samba — имя сервера; admins24.local — домен.
После добавляем в DNS наш сервер samba. Ждем минут 15, если у нас используется доменная инфраструктура с несколькими сайтами.
Устанавливаем необходимые компоненты:
dnf install samba-client samba-winbind samba-winbind-clients krb5-workstation
В разделе [global] редактируем следующие опции:
workgroup = DMOSKsecurity = ads
* где DMOSK — NETBIOS имя домена; ads — указывает, что для samba будет использоваться модель безопасности LDAP Active Directory.
Также в [global] добавим следующие строки:
kerberos method = secrets and keytabrealm = DMOSK.LOCALwinbind enum groups = Yeswinbind enum users = Yesidmap config * : rangesize = 1000000idmap config * : range = 1000000-19999999idmap config * : backend = autorid
Вводим сервер в домен:
net ads join -U [email protected]
* где Administrator — учетная запись пользователя AD с правами на ввод компьютеров в домен; admins24.local — наш домен.
Мы должны увидеть, примерно, следующее:
Using short domain name — DMOSKJoined ‘SAMBA’ to dns domain ‘admins24.local’
Разрешаем автозапуск winbind и стартуем его:
systemctl enable winbind –now
Выбираем профиль для аутентификации:
authselect select winbind –force
Проверяем, что наш сервер может получить список пользователей Active Directory:
… и групп:
Если мы увидели список пользователей и групп, то присоединение сервера к домену завершено.
Создаем шару:
[AD] comment = Folder for AD users path = /data/ad public = no writable = yes read only = no guest ok = no valid users = “@DMOSK\Domain Users” “@DMOSK\Domain Admins” create mask = 0777 directory mask = 0777 force create mode = 0777 force directory mode = 0777 inherit owner = yes
* в данном примере мы будем шарить папку на сервере /data/ad; мы предоставим доступ всем пользователям групп Domain Users и Domain Admins домена DMOSK.
Создаем каталог и задаем права:
mkdir /data/ad
chmod 777 /data/ad
Теперь можно перезапустить самбу:
Пробуем подключиться к серверу. У нас должна появиться еще одна папка ad.
И в продолжение разговора о интеграции с AD, попробуем настроить ACL для более тонкого предоставления прав доступа.
Для этого снова открываем конфигурационный файл samba:
В раздел [global] добавим:
acl compatibility = auto
… и создадим новую шару:
[AD ACL] comment = Folder for AD ACL path = /data/adacl public = no writable = yes read only = no guest ok = no admin users = “@DMOSK\Domain Admins” inherit acls = yes inherit owner = yes inherit permissions = yes map acl inherit = yes
* где admin users — пользователи, которые могут менять права папки; inherit acls — наследование acl прав; inherit permissions — наследование прав от папки родителя; map acl inherit — использовать ли схему контроля доступа, хранимую в Windows ACL.
mkdir /data/adacl
chmod 777 /data/adacl
Перезапускаем самбу:
Подключаемся к нашей созданной общей папке. Кликаем по ней правой кнопкой мыши – выбираем свойства. На вкладке «Безопасность» мы можем менять права:
При удалении файлов из общей папки, данные удаляются навсегда. Но мы можем настроить сетевую корзину — скрытый каталог, в который будут перемещаться удаляемые с самбы объекты.
Открываем конфигурационный файл:
[Recycle] comment = Snap Directories path = /data/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
mkdir /data/recycle
chmod 777 /data/recycle
Пробуем зайти в сетевой каталог Recycle и создать, а после удалить файл. Он должен оказаться к скрытой папке .recycle.
Для автоматической чистки сетевой корзины можно создать скрипт:
mkdir /scripts
vi /scripts/cleanrecycle.sh
#!/bin/bash
recyclePath=”/data/recycle/.recycle”maxStoreDays=”30″
/usr/bin/find $recyclePath -name “*” -ctime +$maxStoreDays -exec rm {} \;
* в данном скрипте мы ищем все файлы в каталоге /data/recycle/.recycle, которые старше 30 дней и удаляем их.
Разрешаем запуск скрипта:
chmod +x /scripts/cleanrecycle.sh
Создаем задание в планировщике:
crontab -e
0 5 * * * /scripts/cleanrecycle.sh
* в данном примере мы будем запускать скрипт по очистке сетевой корзины каждый день в 05:00.
Теперь разберем примеры подключения к нашим шарам из разных систем.
Для разового подключения можно использовать проводник, прописав в нем адрес сервера через косые линии:
Для подключения сетевого диска, который будет автоматически создаваться при запуске системы, в проводнике сверху нажимаем Простой доступ – Подключить как диск:
В открывшемся окне прописываем путь до сетевой папки и выбираем имя диска:
Сетевой диск настроен.
Но мы может сделать те же действия из командной строки:
net use x: \\samba.admins24.local\AD ACL /persistent:yes
* где x: — имя сетевого диска; \\samba.admins24.local\AD ACL — путь до сетевого каталога; persistent:yes — указывает на то, что нужно восстанавливать данный диск каждый раз при входе в систему.
В Linux мы можем монтировать удаленный каталог с помощью команды mount, например:
mount -t cifs “//192.168.1.15/ad” /mnt -o user=admins24
* где 192.168.1.15 — IP-адрес сервера; mnt — каталог, куда монтируем сетевую шару; admins24 — пользователь, под которым выполняем подключение к сетевому каталогу.** в систему должен быть установлен пакет cifs-utils.
Подробнее, процесс монтирования описан в инструкции Как в Linux монтировать шару CIFS.
Также мы можем увидеть содержимое удаленных папок на samba при помощи клиента smb. Для начала установим данного клиента:
а) на Red Hat / CentOS / Fedora:
yum install samba-client
б) на Debian / Ubuntu / Mint:
apt-get install samba-client
После вводим команду:
smbclient -L 192.168.1.15 -U [email protected]
* где 192.168.1.15 — сервер samba, к которому мы пытаемся подключиться; [email protected] — учетная запись, под которой выполняется подключение.
… мы получим список каталогов, которые расшарены на сервере.
Также мы можем подключиться к конкретной папке, например:
smbclient \\\\192.168.1.15\\ad -U [email protected]
Мы подключимся клиентом samba — можно выполнить запрос на показ содержимого:
smb: \> ls
Или полный список возможных команд:
smb: \> help
Рассмотрим некоторые полезные опции, которые могут пригодится при настройке Samba.
Параметр задает список разрешенных хостов или сетей, с которых можно подключаться к серверу. Если его прописать в секцию с настройкой шары, то он будет действовать только для нее, если прописать в [global], то для всех общих папок.
Пример использования параметра.
hosts allow = comp1, 192.168.1., 192.168.160.0/255.255.252.0
* в нашем примере мы разрешим доступ только для компьютера comp1, компьютеров из сетей 192.168.1.0/24 и 192.168.160.0/22.
Параметр аналогичный hosts allow, только он наоборот — запрещает доступ для хостов и сетей. Например:
hosts deny = comp2, 192.168.2., 192.168.164.0/255.255.252.0
hosts deny = ALL EXCEPT 192.168.3.
По умолчанию samba использует все сетевые интерфейсы, кроме локальной петли (127.0.0.1). Параметр interfaces позволит указать, на каком сетевом адаптере файловый сервер должен принимать запросы. Пример:
interfaces = ens32 192.168.1.15/24 192.168.2.15/255.255.255.0
Опции force user и force group позволяют задать пользователя и группу, от которых будет работать подключение пользователя к samba. Параметр может оказаться полезным для создания шары из каталога с уже назначенным владельцем, которого мы не хотим менять.
Прописывается для шары:
force user = apacheforce group = apache
* данная настройка позволит подключаться к шаре под пользователем apache.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies