- Что делает утилита authconfig-tui?
- Установка Samba AD
- Предварительная настройка сервера SambaDC
- Запуск конфигурирования Samba в роли контроллера домена в интерактивном режиме:
- Дополнительная конфигурация Samba сервера:
- Настройка файла конфигурации kerberos:
- Firewalld
- Midnight commander
- Samba
- Selinux
- Winbind
- Бантики
- Вводим centos 7 в домен с помощью winbind
- Добавление хоста в ad
- Добавляем сервер к домену через realm
- Задание кодовых страниц
- Интеграция с active directory
- Использование winbind
- Использование графического интерфейса
- Использование клиента smbclient
- Клиент в составе существующего домена nt
- Краткий обзор каталогов и файлов
- Монтирование общего ресурса samba
- Настройка
- Настройка fqdn
- Настройка samba в ubuntu. конфигурационный файл /etc/samba/smb.conf.
- Настройка samba с интеграцией в ad через sssd
- Настройка глобальных параметров samba
- Настройка межсетевого экрана
- Настройка прав доступа на файлы в samba
- Настройка сети
- Некоторые вопросы безопасности
- Некоторые особенности работы в active directory
- Общие сведения о samba
- Общий ресурс с анонимным доступом
- Обычный клиент
- Ограничение доступа к samba по ip адресам
- Онлайн курс “sre практики и инструменты”
- Особенности использования samba 3.0
- Особенности локализации клиента и сервера
- Подключение ram диска
- Подключение диска
- Подключение к общему ресурсу samba из linux
- Подключение к общему ресурсу samba из macos
- Подключение к общему ресурсу samba из windows
- Подключение образа диска
- Получение ip адреса по dhcp
- Помогла статья? подписывайся на telegram канал автора
- Прежде чем приступить
- Принт-сервер на cups
- Проверка правильной работы в active directory
- Работа в среде active directory
- Регистрация компьютера в active directory домене
- Редактирование /etc/samba/smb.conf:
- Сервер как pdc домена
- Создаем общедоступную папку в ubuntu с помощью samba.
- Создание пользователей samba
- Удаление старых файлов
- Управление машиной с samba из microsoft management console
- Установка centos 7
- Установка samba
- Установка samba в ubuntu
- Установка и запуск samba в ubuntu.
- Установка на vm агентов для взаимодействия с хост сервером
- Установка обновлений
- Утилита net
- Учетные записи пользователей
- Вывод
- Заключение
- Онлайн курс “sre практики и инструменты”
Что делает утилита authconfig-tui?
Утилита добавляет параметры для подключения к AD в следующие файлы, параметров не много и при желании можно забить все руками.
/etc/krb5.conf
Установка Samba AD
Выполните обновление РЕД ОС:для РЕД ОС версии 7.1 или 7.2:
# yum clean all && yum update
для РЕД ОС версии 7.3 и старше:
# dnf makecache && dnf update
Установите необходимые пакеты:eсли вы используете РЕД ОС версии 7.1 или 7.2, выполните команду:
# yum install samba-client*.x86_64 samba-common.noarch samba-common*x86_64 samba-dc*.x86_64 samba-libs.x86_64 samba-winbind*.x86_64 -y
eсли вы используете РЕД ОС версии 7.3 и старше, выполните команду:
# dnf install samba-client*.x86_64 samba-common.noarch samba-common*x86_64 samba-dc*.x86_64 samba-libs.x86_64 samba-winbind*.x86_64 -y
Предварительная настройка сервера SambaDC
2.1 Поменяйте статус SELinux на permissive.
2.2 Присвойте серверу статический ip-адрес (Настройка сетевого адаптера), а также назначьте имя. Имя должно определять область домена. Например, если ваш домен skynet.murom, то hostname сервера может быть вида: dc1.skynet.murom.Команда назначения имени серверу:
hostnamectl set-hostname dc1.skynet.murom
Укажите в файле /etc/hosts соответствие ip-адреса сервера с его полный и коротким именем:
# nano /etc/hosts 10.81.1.96 dc1.skynet.murom dc1
2.3 В настройках сетевого адаптера пропишите поисковый домен skynet.murom, а в качестве dns-адреса укажите ip-адрес создаваемого Samba AD сервера, в нашем примере это 10.81.1.96
2.4 Перезагрузите сетевой интерфейс для применения настроек:
# systemctl restart NetworkManager
Проверьте resolv.conf выполнив:
# cat /etc/resolv.conf
В консоли должно отображаться следующее:
# Generated by NetworkManager search skynet.murom nameserver 10.81.1.96
Запуск конфигурирования Samba в роли контроллера домена в интерактивном режиме:
Описание некоторых настроек для тестового домена dc1.skynet.murom
use-rfc2307 — параметр добавляет POSIX атрибуты (UID / GID) на схеме AD. Он понадобится при аутентификации клиентов Linux, BSD, or OS X (в том числе на локальной машине) в дополнение к Microsoft Windows.
interactive — параметр заставляет сценарий резерва запускаться в интерактивном режиме.
realm — указывает на DNS-имя домена в верхнем регистре, которое настроено в hosts, в нашем тесте realm: skynet.murom
Domain — доменное имя сервера, у нас это — skynet
Server Rules(роли сервера): dc — (Domen controller)
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) — указывает кто, будет в роли DNS сервера. SAMBA_INTERNAL — внутренний DNS самбы.
DNS forwarder IP address. Данный параметр позволяет указать IP-адрес DNS-сервера, на который будут перенаправлены dns запросы, в случае когда сервер Samba не сможет их разрешить.
Пример листинга настройки самбы в интерактивном режиме:
Дополнительная конфигурация Samba сервера:
Настройки Samba находятся в файле /etc/samba/smb.conf
4.1 Начиная с версии 3.3.0, появился модуль acl_xattr, позволяющий Samba корректно обрабатывать Windows ACL (Access Control List). Для полноценной поддержки прав доступа к файлам используйте модуль acl_xattr. Для этого добавьте в smb.conf в раздел [global] следующие параметры:
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
4.2 Для обновления записей в DNS добавьте два параметра в раздел [global]:
allow dns updates = nonsecure nsupdate command = /usr/bin/nsupdate -g
4.3 Если при автоконфигурировании не был указан dns-форвардинг, то его можно включить, добавив в секцию [global] dns адрес, который используется в вашей локальной сети
dns forwarder = 10.81.1.1
4.5 В секцию [global] добавьте поддержку расширения схемы AD
dsdb:schema update allowed = true
Листинг /etc/samba/smb.conf:
#cat /etc/samba/smb.conf #Global parameters [global] log level = 3 dns forwarder = 10.81.1.1 netbios name = DC1 realm= SKYNET.MUROM server role = active directory domain controller workgroup= SKYNET idmap_ldb:use rfc2307 = yes vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes allow dns updates = nonsecure nsupdate command = /usr/bin/nsupdate -g dsdb:schema update allowed = true [netlogon] path = /var/lib/samba/sysvol/skynet.murom/scripts read only = No [sysvol] path = /var/lib/samba/sysvol read only = No
4.6 После внесения изменений в файл /etc/samba/smb.conf выполните команду проверки:
# testparm Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[netlogon]" Processing section "[sysvol]" Loaded services file OK. Server role: ROLE_ACTIVE_DIRECTORY_DC
Предупреждение “rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)” отображается в связи с тем, что в Linux по умолчанию установлен лимит на 1024 одновременно открытых файлов, а в Windows он 16384. Чтобы убрать предупреждение добавьте в конец файла /etc/security/limits.conf строки:
* - nofile 16384 root - nofile 16384
Для применения настроек перезагрузите сервер.
Настройка файла конфигурации kerberos:
Скопируйте настройки kerberos которые создались после настройки samba в /etc
cp /var/lib/samba/private/krb5.conf /etc/
Добавляем в /etc/krb5.conf время жизни тикета керберос — в секцию [libdefaults]:
# nano /etc/krb5.conf
ticket_lifetime = 24h forwardable = yes
Листинг конфигурации krb5.conf:
[libdefaults] default_realm = SKYNET.MUROM dns_lookup_realm = false dns_lookup_kdc = true ticket_lifetime = 24h forwardable = yes
Firewalld
По умолчанию CentOS 7 использует брандмауэр firewallD, состояние службы можно узнать командой
firewall-cmd --state
Для получения списка правил и сервисов используйте
firewall-cmd --list-all
firewall-cmd --list-services
Обратите внимание на список сервисов, если вы отключили протокол ipv6, логично также поступить и с dhcpv6-client
firewall-cmd -–permanent -–remove-service=dhcpv6-client
Создаем правило для SAMBA и перезагружаем
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
Midnight commander
Редактировать файлы без нормального редактора очень не удобно, и я предлагаю использовать mc и mcedit
yum install mc
Samba
Установка
yum install samba
Добавление службы в автоматический запуск
chkconfig smb on
Запуск службы и проверка состояния
service smb start
smbstatus
Selinux
На данном этапе службу SELINUX необходимо отключить, проверить статус службы SELINUX можно командой
sestatus
Измените значение SELINUX в файле
/etc/selinux/configSELINUX=disabled
затем перезагрузите сервер.
reboot
Вернусь к SELINUX в конце статьи.
Winbind
Для получения информации о пользователях из AD необходимо установить пакет
samba-winbind
yum install samba-winbind
Добавляем службу в автоматический запуск
chkconfig winbind on
Запускаем службу
service winbind start
Бантики
По умолчанию лог файлы находятся в папке
/var/log/samba
. При необходимости получить подробные логи, в раздел [global] необходимо добавить параметр log level = 2 или 3. По умолчанию используется значение 1, значение 0 отключает ведение логов.
[global]
log level = 2
Как вы можете знаете, предоставление доступа к файлам это только часть функционала SAMBA. Если на сервере будут только файловые ресурсы, службу печати логично отключить. В разделе [global] добавьте следующие параметры
[global]
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
Конфигурация SAMBA находиться в каталоге
/etc/samba
, а логи в каталоге
/var/log/samba
Мне удобней все инструменты держать по рукой, по этому я монтирую необходимые мне каталоги в
/samba
Создаем каталоги, в которые будет все монтироваться
mkdir /samba/smbconf
mkdir /samba/smblogs
Редактируем конфиг файл
/etc/fstab
, я предполагаю что вы знаете за что отвечает
mcedit /etc/fstab
Добавляем следующие строки
/etc/samba /samba/smbconf none bind 0 0
/var/log/samba /samba/smblogs none bind 0 0
Монтируем без перезагрузки
mount -a
Вводим centos 7 в домен с помощью winbind
Если у вас виртуальная машина, проще установить ее с нуля. Если не хочется по какой-то причине, можно просто удалить все установленные ранее пакеты через команду yum remove. Я поступил именно так.
Устанавливаем недостающие пакеты:
# yum install samba-winbind samba-winbind-clients samba pam_krb5 krb5-workstation chrony
Не забудьте о настройке синхронизации времени, которую мы делали на предыдущих шагах. Надо это проделать, если вы сразу начали настройку с данного пункта. Так же убедитесь, что все в порядке с dns, и контроллеры домена пингуются по именам.
Формируем конфиг для kerberos.
Добавление хоста в ad
Напомню что в начале даной инструкции задали имя хоста
Добавляем сервер к домену через realm
Я не буду придумывать ничего нового, а полностью воспользуюсь инструкцией из приведенной выше статьи по настройке авторизации доменных учеток на сервере, но при этом не буду настраивать саму авторизацию. В данном случае мне это не нужно.
Итак, отключаем firewall и SELinux, если не сделали это раньше. Если не хотите отключать, то настройте сами. Данная настройка выходит за рамки статьи.
# mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Выполняем команду, чтобы не ждать перезагрузки для применения изменений.
setenforce 0
Выключаем firewalld.
# systemctl stop firewalld # systemctl disable firewalld
Перед дальнейшей настройкой, убедитесь, что с вашего сервера centos вы без проблем пингуете и резолвите контроллер домена по полному имени. Если есть какие-то проблемы, исправьте это либо указанием нужного dns сервера, либо правкой файла hosts.
Настроим синхронизацию времени с контроллером домена. Это важно, у вас должно быть одинаковое время с контроллером домена. Проверьте его и убедитесь, что стоят одинаковые часовые пояса.
Устанавливаем утилиту для синхронизации времени chrony:
# yum install chrony
Добавляем в конфиг /etc/chrony.conf адрес контроллера домена. И делаем его единственным сервером для синхронизации, остальные удаляем.
server xs-winsrv.xs.local iburst
Сохраняем конфиг, запускаем chrony и добавляем в автозагрузку.
# systemctl start chronyd && systemctl enable chronyd
Проверим, что с синхронизацией.
Устанавливаем софт, который понадобится для дальнейшей работы.
# yum install realmd sssd sssd-libwbclient oddjob oddjob-mkhomedir adcli samba-common samba-common-tools
Делаем проверку перед вводом в домен.
# realm discover XS.LOCAL xs.local type: kerberos realm-name: XS.LOCAL domain-name: xs.local configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools
Заводим в домен.
Задание кодовых страниц
Для задания кодировок используются следующие новые параметры smb.conf:
unix charset = <charset> dos charset = <charset> display charset = <charset>
где <charset> — любая кодировка, поддерживаемая iconv. Список возможных кодировок можно узнать, выполнив команду:
$ iconv -list
Параметры client code page и character set больше не поддерживаются. Параметр unix charset указывает кодировку, в которой будут храниться файлы на диске, в которой заданы параметры в smb.conf.
Параметр dos charset указывает кодировку, в которой Samba будет общаться с клиентами, не поддерживающими Unicode. Все версии Windows, начиная с 95, понимают Unicode — но все же стоит установить dos charset = cp866, что соответствует client code page = 866 в более старых версиях.
Параметр display charset указывает, в какой кодировке должны выводить информацию программы, непосредственно обменивающиеся информацией с пользователем, например smbclient, net, wbinfo и другие.
Интеграция с active directory
Также есть возможность получать информацию о пользователей из LDAP, но мне этот вариант не интересен и я сразу перехожу к AD. Подробная инструкция от Microsoft находится
Для AD очень важна синхронизация времени, по этому стоит начать с этого.
Установка соответствующей службы
yum install ntp
Добавляем в конфиг файл /etc/ntp.conf сервера выполняющих роль домен контроллеров
mcedit /etc/ntp.conf
Пример:
Использование winbind
Сервис winbind является новым средством, предназначенным для более полной интеграции Samba в домены Windows; он появился, начиная с Samba 2.2.0. Данный сервис считывает свою конфигурацию из /etc/samba/smb.conf и динамически взаимодействует с PDC домена, автоматически синхронизируя списки пользователей и групп домена и машины Samba.
Работа данного сервиса происходит без изменения содержимого каких-либо авторизационных файлов в /etc и при перезагрузке машины доменные пользователи появляются в системе только после запуска winbindd. Если во время работы остановить winbindd, то доменные пользователи и группы не исчезнут из системы до перезагрузки, однако динамического обновления списков имен и паролей происходить не будет.
Для того чтобы при рестарте компьютера (или только сервиса winbindd) не нарушались соответствия внутренних UID и доменных SID, он сохраняет текущее состояние списков в файлах /var/cache/samba/winbindd*.tdb.
Для нормального функционирования winbindd в файле /etc/samba/smb.conf обязательно должны быть обьявлены следующие директивы:
[global]
Диапазон номеров локальных пользователей, который будет использован для динамического создания пользователей домена:
winbind uid = 10000-20000
Диапазон номеров локальных групп пользователей, который будет использован для динамического создания групп пользователей домена:
winbind gid = 10000-20000
Символ-разделитель, используемый для составления доменных имен пользователей и располагающийся между именем домена и именем пользователя:
winbind separator =
Интервал времени (в секундах) между запросами winbind к PDC в целях синхронизации списков пользователей и групп:
winbind cache time = 10
Шаблон имени домашних каталогов доменных пользователей, автоматически присваиваемых каждому пользователю. Сами каталоги, однако, динамически не создаются. Вместо переменой %D подставляется имя домена, а вместо %U подставляется имя пользователя:
template homedir = /home/%D/%U
Командный интерпретатор, назначаемый по умолчанию для пользователей, авторизованных через winbindd.
template shell = /bin/bash
Также необходимо внести изменения в файле /etc/nsswich.conf в разделы passwd и group, вписав директиву winbind — например, таким образом:
passwd: files winbind group: files winbind
С этого момента можно использовать имена доменных пользователей в /etc/samba/smb.conf с целью разграничения доступа, в правах на файлы и каталоги, для подключения к сетевым ресурсам данного хоста со стороны других хостов.
Использование графического интерфейса
Files, файловый менеджер по умолчанию в Gnome имеет встроенную возможность доступа к общим ресурсам Samba.
- Откройте файлы и нажмите «Другие места» на боковой панели.
- В поле «Подключиться к серверу» введите адрес общего ресурса Samba в следующем формате
smb://samba_hostname_or_server_ip/sharename
. - Нажмите «Подключиться», и появится следующий экран:
- Выберите «Зарегистрированный пользователь», введите имя пользователя и пароль Samba и нажмите «Подключиться».
- Будут показаны файлы на сервере Samba.
Использование клиента smbclient
smbclient это инструмент, позволяющий получить доступ к Samba из командной строки. smbclient Пакет не предустановлен на большинстве дистрибутивов Linux , так что вам нужно будет установить его с помощью менеджера пакетов распределения.
Для установки smbclient в Ubuntu и Debian запустите:
sudo apt install smbclient
Для установки smbclient на CentOS и Fedora запустите:
sudo yum install samba-client
Синтаксис для доступа к общему ресурсу Samba следующий:
Клиент в составе существующего домена nt
Подключение происходит аналогично рассмотренному подключению сервера в составе существующего домена NT. Далее вся работа происходит точно так же, как описано в предыдущем пункте.
Краткий обзор каталогов и файлов
Все файлы конфигурации и авторизации Samba расположены в каталоге /etc/samba и его подкаталогах. Рассмотрим их несколько подробнее.
Монтирование общего ресурса samba
Чтобы смонтировать общий ресурс Samba в Linux, вам сначала нужно установить cifs-utils пакет.
В Ubuntu и Debian запустите:
sudo apt install cifs-utils
В CentOS и Fedora запустите:
sudo yum install cifs-utils
Затем создайте точку монтирования:
sudo mkdir /mnt/smbmount
Подключите общий ресурс с помощью следующей команды:
Настройка
В большинстве случаев настройка Samba заключается в редактировании основного конфигурационного файла /etc/samba/smb.conf и управлении пользователями с помощью smbpasswd.
Обычный сервер:
Под таковым понимается компьютер, предоставляющий в сеть файловые ресурсы. Фактически это простейший независимый файловый сервер, имеющий собственную базу авторизации пользователей.
Для того, что бы создать такой сервер, необходимо лишь немного подправить стандартный конфигурационный файл smb.conf (подставить требуемые имя рабочей группы и имена ресурсов) и создать учетные записи пользователей, как описано в ниже, а также учесть рекомендации по безопасности, изложенные в конце раздела.
Вот основные записи в smb.conf, которые создадут нам «обычный сервер».
[global]
Секция [global] определяет общие настройки серверной части Samba в целом для всех ресурсов.
Имя рабочей группы
OFFICE workgroup = OFFICE
Уровень определения прав доступа на уровне пользователей
Настройка fqdn
Пусть полное имя хоста будет
Настройка samba в ubuntu. конфигурационный файл /etc/samba/smb.conf.
Конфигурационный файл /etc/samba/smb.conf, о котором идет речь, содержит все основные настройки. Именно в нем прописывается:
- какие именно папки и принтеры будут видны пользователям других машин в сети;
- кто и при каких условиях будет иметь доступ к файлам и принтерам;
- смогут ли клиенты не только читать, но и записывать данные;
- будут ли пользователи иметь доступ к своим домашним директориям;
- каким образом будут вестись логи;
- каким образом будет осуществляться подключение и т. д.
Содержимое файла /etc/smb.conf делится на разделы, содержащие отдельные параметры и их значения. Взгляните сами:
Не пугайтесь большого количества текста. Строки, начинающиеся с символов «#» и «;» считаются комментариями и не учитываются интерпретатором при разборе файла. Название раздела заключено в квадратные скобки, далее следуют относящиеся к этому разделу параметры и их значения, разделенные знаком «=». Параметров, которые можно использовать, очень много, а вариантов их значений — еще больше.
Настройка samba с интеграцией в ad через sssd
Устанавливаем сам файловый сервер самба.
# yum install samba
Рисуем ему примерно такой конфиг.
# cat /etc/samba/smb.conf
Настройка глобальных параметров samba
Прежде чем вносить изменения в файл конфигурации Samba, создайте резервную копию для использования в будущем:
sudo cp /etc/samba/smb.conf{,.backup}
Файл конфигурации по умолчанию, который поставляется с пакетом Samba, настроен для автономного сервера Samba. Откройте файл и убедитесь, что для server role него установлено значение standalone server
sudo nano /etc/samba/smb.conf
/etc/samba/smb.conf
...
# Most people will want "standalone sever" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
server role = standalone server
...
По умолчанию Samba прослушивает все интерфейсы. Если вы хотите ограничить доступ к серверу Samba только из своей внутренней сети, раскомментируйте следующие две строки и укажите интерфейсы для привязки:
/etc/samba/smb.conf
...
# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
interfaces = 127.0.0.0/8 eth0
# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself. However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
bind interfaces only = yes
...
После этого запустите testparm утилиту, чтобы проверить файл конфигурации Samba на наличие ошибок. Если нет синтаксических ошибок, вы увидитеLoaded services file OK.
Наконец, перезапустите службы Samba с помощью:
sudo systemctl restart smbd
sudo systemctl restart nmbd
Настройка межсетевого экрана
Если у вас есть брандмауэр работает в вашей системе Ubuntu вам необходимо разрешить входящие соединения UDP на портах 137 и 138 и TCP соединений на портах 139 и 445 .
Предполагая, что вы используете UFWдля управления брандмауэром, вы можете открыть порты, включив профиль Samba:
sudo ufw allow 'Samba'
Настройка прав доступа на файлы в samba
Сделаю небольшое пояснение по правам доступа в файловом сервере samba. Вопрос этот сложный и объемный. Ему можно посвятить и отдельную статью. Но для полноты картины по настройке самбы, расскажу самое основное.
Как я уже ранее сказал, изменять права доступа к каталогам на файловом сервере можно с помощью команды setfacl. Давайте сейчас посмотрим на права доступа, которые установлены:
Настройка сети
Для настройки статического ip адреса и имени хоста можно использовать утилиту
nmtui
В командной строке список сетевых адаптеров можно получить командой
nmcli device status
Статический ip и gateway задается следующей командой, где «ens192» это имя сетевого адаптера
nmcli connection modify “ens192” ipv4.addresses “192.168.1.100/24 192.168.1.1”
Некоторые вопросы безопасности
Данный раздел относится в основном к серверной части Samba.
Прежде всего необходимо определить, какие интерфейсы должны прослушиваться Samba в ожидании запроса на соединение (по умолчанию прослушиваются все имеющиеся в системе).
Например, для того, чтобы ограничить прослушивание локальным хостом и первой сетевой картой, необходимо написать в /etc/samba/smb.conf:
[global]
interfaces = 127.0.0.1 eth0 bind interfaces only = Yes
Далее можно ограничить диапазоны адресов, с которых позволительно обращаться к данному серверу. Действие данных директив аналогично воздействию /etc/hosts.allow и /etc/hosts.deny на xinetd и ssh: если IP-адрес хоста не подпадает под разрешающее правило, то соединение не будет установлено вовсе.
[global]
hosts allow = 192.168.1. 192.168.2. 127. hosts deny = 192.168.1.12
Все вышеперечисленные директивы ограничивают соединения на уровне интерфейсов и IP-адресов до какой либо авторизации. Следующие директивы управляют режимом авторизации пользователей.
Во избежание перехвата чувствительных данных при передаче их по сети открытым текстом принято шифровать пароли. Samba и все версии Windows, начиная с версии Win98, по умолчанию используют шифрование паролей. Данная директива включает его в Samba:
[global]
encrypt passwords = yes
Некоторые особенности работы в active directory
В отличие от доменов Windows NT, авторизация в Active Directory производится не по имени и паролю, а c помощью билетов протокола Kerberos. Из-за этого работа с smbclient может поначалу показаться необычной.
Во-первых, при вызове smbclient нужно указывать опцию -k. Во-вторых, билеты Kerberos даются на определенное время (обычно на сутки, но это зависит от настроек сервера). Поэтому их нужно периодически обновлять с помощью команды kinit:
Общие сведения о samba
Данный продукт представляет собой комплект серверного и клиентского программного обеспечения для осуществления связи UNIX-машин с сетями Microsoft и LanManager, которые сами по себе представляют собой подклассы сетей SMB.
Samba использует протокол «NetBIOS over TCP/IP», что позволяет ей успешно взаимодействовать с такими реализациями SMB, как входящие в OS/2 3-4, Windows 9X-ME, NT3.5-4/2000/XP/Vista/7, UNIX-системами с Samba и, возможно, другими подобными. Samba не может работать без использования TCP/IP (на NetBIOS и NetBEUI). Об этом не стоит забывать при проектировании сетей.
Для работы в сетях SMB необходимы:
- клиент;
- сервер;
- средства администрирования.
Все это есть в пакетах samba-client, samba-client-cups, samba-common, samba, samba-swat, входящих в состав дистрибутива.
При использовании SMB доступны следующие ресурсы:
- сетевые диски;
- прямые пути к дискам;
- принтеры;
- доменная авторизация и управление.
Первые три пункта поддерживаются Samba в полном обьеме, последний — частично, но это направление стремительно развивается и весьма полно реализовано в Samba, описанной ниже.
Также доступен весьма объемный комплект документации в пакете samba-doc; большинство ссылок данного раздела будут указывать именно на содержимое этого пакета.
Общий ресурс с анонимным доступом
Создаем папку для ресурса /samba/guest
mkdir /samba
mkdir /samba/guest
Меняем владельца и назначаем права
chown nobody:nobody /samba/guest
chmod 777 /samba/guest
Редактируем файл конфигурации SAMBA
/etc/samba/smb.conf
mcedit /etc/samba/smb.conf
Меняем содержание оригинального файла на следующее
Обычный клиент
Клиентские функции Samba представлены средствами просмотра сетевого окружения и монтирования файловых систем /usr/bin/smbclient и /usr/bin/smbmount соответственно. Также доступны mount.smb и mount.smbfs, являющиеся символическими ссылками на /usr/bin/smbount.
При запуске эти программы считывают текущую конфигурацию из файла /etc/samba/smb.conf и используют доменные функции в случае, если машина подключена к домену Windows.
Также файловые системы возможно монтировать системной командой mount, указав в качестве типа файловой системы smbfs, и использовать эти записи в /etc/fstab для автоматического монтирования при загрузке системы.
Ограничение доступа к samba по ip адресам
Если вам нужно ограничить доступ ко всем ресурсам SAMBA, добавьте ваши списки доступа в разделе global, а если необходимо ограничить только на определенный ресурс, в разделе этого ресурса.
Пример:
[global]
hosts allow = 192.168.1.100, 192.168.1.101
hosts deny = ALL
[guest]
hosts allow = 192.168.0.0/255.255.0.0
hosts deny = 10. except 10.1.1.1
Онлайн курс “sre практики и инструменты”
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с
онлайн-курсом “SRE практики и инструменты”
в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и Linux. Обучение длится 3 месяц, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
На курсе вы узнаете как:
- Внедрить SRE практики в своей организации
- Управлять надежностью, доступностью и эффективностью сервисов
- Управлять изменениями
- Осуществлять мониторинг
- Реагировать на инциденты и производительность
- Работать со следующим технологическим стеком: Linux, AWS, GCP, Kubernetes, Ansible, Terraform, Prometheus, Go, Python.
Проверьте себя на вступительном тесте и смотрите подробнее программу по
Особенности использования samba 3.0
Samba 3.0 имеет заметные отличия от более ранних версий; наиболее выдающимися из них являются улучшенная по сравнению с версией 2.2 поддержка Unicode, поддержка гораздо большего количества кодовых страниц, новая утилита администрирования net, призванная заменить smbpasswd.
Особенности локализации клиента и сервера
Для того, чтобы все компоненты Samba правильно работали с русскими именами файловых объектов и ресурсов, в /etc/samba/smb.conf необходимо добавить следующие директивы:
[global]
client code page = character set =
Далее приводятся наборы значений этих директив и системных кодировок, наиболее часто используемых в России, Белорусии и на Украине:
$LANG = ru_RU.KOI8-R client code page = 866 character set = koi8-r $LANG = ru_RU.CP2151 client code page = 866 character set = 1251 $LANG = be_BY.CP1251 client code page = 866 character set = 1251 $LANG = uk_UA.KOI8-U client code page = 1125 character set = koi8-u $LANG = uk_UA.CP1251 client code page = 1125 character set = 1251U $LANG = ru_UA.CP1251 client code page = 1125 character set = 1251U
В двух последних случаях 1251U — специальное обозначение внутри Samba для комбинации «локально 1251 — удаленно 1125». В Samba определение удаленной кодировки делается по имени локальной.
Также необходимо проследить, чтобы на тех компьютерах Windows, с которыми предполагается взаимодействие через Samba, были установлены соответствующие системные настройки локализации. В противном случае велика вероятность, что вместо кириллических символов будут отображены знаки »?» либо другие символы.
Указанные директивы /etc/samba/smb.conf воздействуют на работу всех компонентов Samba — и серверных, и клиентских. На данный момент поддерживаются кириллические написания имен — файлов, каталогов и ресурсов.
Подключение ram диска
Для временных ресурсов где не нужен большой объем, как мне кажется RAM диск это наилучший вариант, очень быстро и просто настраивается, а скорость работы поражает воображение.
Редактируем fstab
mcedit /etc/fstab
Конфиг для RAM диска
none /samba/guest tmpfs defaults,size=100M 0 0
Монтирование
mount -a
Проверяем результат
df -h
Подключение диска
Держать ресурс с общим доступом на системном диске без квоты, не лучший выбор. С квотами я решил не связываться, мне проще подключить отдельный «физический» диск.
Для получения списка устройств можно использовать команду lsblk
lsblk
Создание таблицы разделов на диске /dev/sdb
parted /dev/sdb mklabel msdos
или
parted /dev/sdb mklabel gpt
Подробную информация про gpt можно прочитать
Создание раздела на весь диск sdb, в лучших традициях жанра я решил сделать отступ 1MiB в начале диска.
parted /dev/sdb mkpart primary ext4 1MiB 100%
Создаем файловую систему ext4
mkfs.ext4 /dev/sdb1
Редактируем fstab
mcedit /etc/fstab
Добавляем еще одну строку
/dev/sdb1 /samba/guest ext4 defaults 0 0
Монтирование
mount –a
Проверяем результат
df -h
Назначение прав
chmod 777 /samba/guest
Подключение к общему ресурсу samba из linux
Пользователи Linux могут получить доступ к общему ресурсу Samba из командной строки, используя файловый менеджер или смонтировать общий ресурс Samba.
Подключение к общему ресурсу samba из macos
В macOS вы можете получить доступ к общим ресурсам Samba либо из командной строки, либо с помощью стандартного файлового менеджера macOS Finder. Следующие шаги показывают, как получить доступ к общему ресурсу с помощью Finder.
- Откройте «Finder», выберите «Перейти» и нажмите «Подключиться к».
- В поле «Подключиться к» введите адрес общего ресурса Samba в следующем формате
smb://samba_hostname_or_server_ip/sharename
. - Нажмите «Подключиться», и появится следующий экран:
- Выберите «Зарегистрированный пользователь», введите имя пользователя и пароль Samba и нажмите «Подключиться».
- Будут показаны файлы на сервере Samba.
Подключение к общему ресурсу samba из windows
Пользователи Windows также могут подключиться к общему ресурсу Samba как из командной строки, так и из графического интерфейса. Следующие шаги показывают, как получить доступ к общему ресурсу с помощью проводника Windows.
- Откройте проводник и на левой панели щелкните правой кнопкой мыши «Этот компьютер».
- Выберите «Выбрать другое сетевое расположение» и нажмите «Далее».
- В поле «Интернет или сетевой адрес» введите адрес общего ресурса Samba в следующем формате
\samba_hostname_or_server_ipsharename
. - Нажмите «Далее», и вам будет предложено ввести учетные данные для входа, как показано ниже:
- В следующем окне вы можете ввести собственное имя для сетевого расположения. По умолчанию будет выбран сервер Samba.
- Нажмите «Далее», чтобы перейти к последнему экрану мастера настройки подключения.
- Нажмите «Готово», и файлы на сервере Samba будут показаны.
Подключение образа диска
Если вам не нужны большие объемы, и достаточно ресурса размером ххх мб, можно подключить образ диска из файла.
Создаем каталог для хранения образов
mkdir /samba/smbimg
Создаем файл образа размером 100 мб
dd if=/dev/zero of=/samba/smbimg/100M.img bs=100 count=1M
Про команду dd много интересного можно прочитать
В варианте с образом я решил не создавать таблицу разделов, просто создаем файловую систему ext4.
mkfs.ext4 /samba/smbimg/100M.img
Редактируем fstab
mcedit /etc/fstab
Конфиг для монтирования образа
/samba/smbimg/100M.img /samba/guest ext4 defaults 0 0
Монтирование
mount -a
Проверяем результат
df -h
Назначение прав
chmod 777 /samba/guest
Получение ip адреса по dhcp
Если по какой-то причине в сети нету DHCP сервера, вам стоит его поднять. Работать с большим количеством VM без DHCP не удобно.
Для принудительного обновления или получения ip адреса выполните команду
dhclient
Показать ip адрес
ifconfig
или
nmcli device show
Помогла статья? подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Прежде чем приступить
Прежде чем продолжить, убедитесь, что вы вошли в систему Ubuntu 18.04 как пользователь с правами sudo .
Принт-сервер на cups
По умолчанию Samba сконфигурирована на использование CUPS в качестве спулера печати. Подразумевается, что CUPS уже настроен и запущен. В /etc/samba/smb.conf присутствуют следующие директивы:
[global]
printcap name = lpstat load printers = yes printing = cups
Также необходимо создать ресурс [printers] — его создание и назначение директив подробно описано в подпункте Обычный сервер в части «Особые ресурсы».
Проверка правильной работы в active directory
Для работы с компьютерами, зарегистрированными в Active Directory, не требуется указывать имя пользователя и пароль. Попробуйте выполнить команду:
$ smbclient -k -L <имя компьютера в домене>
Вы должны получить список доступных ресурсов, при этом smbclient не должен запрашивать имя пользователя и пароль.
Чтобы проверить, что доступ к ресурсам вашей машины возможен с других машин домена, вы можете попробовать выполнить все ту же команду:
$ smbclient -k -L <имя вашего компьютера в домене>
и получить список доступных ресурсов. Можно также попробовать открыть какой-нибудь ресурс на вашей машине с Windows-машины, входящей в домен. В любом случае, имя пользователя и пароль запрашиваться не должны.
Работа в среде active directory
Для объединения компьютеров в домены Widows 2000 Server использует схему, отличную от NT- доменов, которая называется Active Directory; эта схема обладает гораздо большей масштабируемостью и позволяет централизованно администрировать машины, входящие в домен.
Active Directory базируется на протоколе авторизации Kerberos, при котором имя пользователя и пароль не передаются по сети, а используется механизм так называемых билетов, выдаваемых сервером на определенное время. Получив билет, машина, входящая в домен, может авторизоваться на других машинах домена без участия сервера.
Регистрация компьютера в active directory домене
Убедитесь что Samba не запущена. Если запущена, ее нужно остановить:
service smb stop; service winbind stop
Чтобы включить компьютер в домен, выполните команду:
Редактирование /etc/samba/smb.conf:
Для работы в Active Directory smb.conf должен содержать следующие параметры:
Сервер как pdc домена
Для создания Primary Domain Controller (PDC) необходимо в smb.conf внести/изменить следующие записи
[global]
Имя сервера; если данный параметр не определен, то он примет значение, соответствующее имени хоста:
netbios name = COOLSERVER
Имя домена:
workgroup = COOLDOMAIN
Режим работы системы авторизации сервера:
Создаем общедоступную папку в ubuntu с помощью samba.
Прежде, чем что-либо редактировать, давайте создадим резервную копию конфигурационного файла, чтобы в случае проблем иметь возможность легко вернуться к отправной точке:
Если потребуется восстановить исходный файл, удалите smb.conf и дайте это имя файлу smb-default.conf.
Теперь создадим шару, доступную для чтения и записи всем желающим. Вставьте в /etc/samba/smb.conf:
Создание пользователей samba
Чтобы создать нового пользователя с именем, josh используйте следующую команду:
Удаление старых файлов
В случае «файлопомойки» ресурсы нужно как-то освобождать, для этого можно использовать планировщик задач crontab
Просмотр заданий
crontab –l
Редактирование заданий
crontab –e
Пример конфига:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=“”
HOME=/
#удалять файлы и каталоги каждый час
* 0-23 * * * rm –R /samba/guest/*
#Удалить только файлы старше 1 дня, запуск команды каждые 10 минут
0-59/10 * * * * find /samba/guest/* -type f -mtime 1 -exec rm –f {} ;
#удалить файлы старше 50 минут, запуск команды каждые 10 минут
0-59/10 * * * * find /samba/guest/* -type f -mmin 50 -exec rm -f {} ;
Выход из vi
Логи службы crontab находятся в файле
/var/log/cron
Управление машиной с samba из microsoft management console
Начиная с версии 2.2, Samba имеет возможнось удаленного администрирования из MMC (Microsoft Management Console). Эта возможность полезна, когда Samba является членом NT-домена или AD. Администратор домена может создавать, удалять и изменять сетевые ресурсы на UNIX-машине с запущенной Samba.
Для управления ресурсами служат параметры /etc/samba/smb.conf:
[global]
add share command = <add script>
Параметр указывает скрипт, который будет вызван при попытке создания нового ресурса в MMC. Скрипту передается четыре параметра:
Скрипт должен завершаться с кодом 0 в случае успешного создания и ненулевым в случае ошибки.
change share command = <change script>
Параметр указывает скрипт, который будет вызван при попытке изменения существующего ресурса в MMC. Скрипту передается четыре параметра:
Скрипт должен завершаться с кодом 0 в случае успешного создания и ненулевым в случае ошибки.
delete share command = <delete script>
Параметр указывает скрипт, который будет вызван при попытке удаления существующего ресурса в MMC (Stop sharing). Скрипту передается два параметра:
- имя конфигурационного файла (например /etc/samba/smb.conf);
- имя создаваемого ресурса.
Скрипт должен завершаться с кодом 0 в случае успешного создания и ненулевым в случае ошибки.
Установка centos 7
Сервера работают под управлением VMware ESXi, и по этому я установил CentOS 7 1611 на VM, выделив 1 CPU, 1GB RAM и 3GB HDD.
LVM я не использую, SWAP раздел не создаю, на загрузочный раздел выделяю 500MB, а все остальное отдаю под корень файловой системы. В качестве файловой системы использую ext4.
Процесс установки описывать я не буду, даже если вы этого никогда не делали, это не сложно, у вас все получится. Предполагаю что вы уже все установили, тогда можно приступать.
Если вы новичок в линукс, делайте копии оригинальных файлов с конфигами, используйте команду cp.
cp /etc/somefile.conf /etc/somefile.conf.bak
Установка samba
Samba 3.0, в отличие от более ранних версий Samba, имеет возможность работать в сетях Wndows, работающих в режиме Active Directory (или Windows 2000 native mode). Если требуется эта функциональность, следует установить samba3 samba2.
Установка samba в ubuntu
Samba доступна в официальных репозиториях Ubuntu. Чтобы установить его в вашей системе Ubuntu, выполните следующие действия:
Начните с обновления индекса пакетов apt:
sudo apt update
Установите пакет Samba с помощью следующей команды:
sudo apt install samba
После завершения установки служба Samba запустится автоматически. Чтобы проверить, запущен ли сервер Samba, введите:
sudo systemctl status smbd
Результат должен выглядеть примерно так, как показано ниже, показывая, что служба Samba активна и работает:
● smbd.service - Samba SMB Daemon Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-11-27 09:25:38 UTC; 2min 12s ago Docs: man:smbd(8) man:samba(7) man:smb.conf(5) Main PID: 15142 (smbd) Status: "smbd: ready to serve connections..." Tasks: 4 (limit: 1152) CGroup: /system.slice/smbd.service ...
На этом этапе Samba установлена и готова к настройке.
Установка и запуск samba в ubuntu.
Поскольку Samba присутствует в репозитории Ubuntu, сложностей с установкой возникнуть не должно. Выполните:
и затем подтвердите установку пакета со всеми зависимостями нажатием Y (или Д).
После установки будет автоматически запущен демон smbd, обеспечивающий доступ к файлам и принтерам. Давайте убедимся, что он уже работает:
По умолчанию этот демон включен, поэтому он будет запускаться вместе с операционной системой без дополнительных действий с вашей стороны.
Установка на vm агентов для взаимодействия с хост сервером
Для VMware ESXi необходимо установить open-vm-tools
yum install open-vm-tools
Для Hyper-V, hyperv-daemons
yum install hyperv-daemons
Установка обновлений
Очень важно установить все доступные обновления
yum update
Утилита net
Утилита net призвана заменить smbpasswd и обеспечивает гораздо большие возможности по получению информации о сети и управлению сетью. Формат команд утилиты очень похож на формат одноименной команды Windows NT/2000.
Основные применения команды net:
Учетные записи пользователей
Все учетные записи хранятся в файле /etc/samba/smbpasswd.
Учетные записи пользователей, используемые Samba, делятся на две категории:
- записи о компьютерах, входящих в домен;
- записи о пользователях, зарегистрированных на данном сервере.
Следует учитывать, что для того, чтобы создать и использовать любую учетную запись в /etc/samba/smbpasswd, предварительно необходимо создать соответствующую запись в /etc/passwd. Общее правило — для каждого пользователя в /etc/samba/smbpasswd обязательно должен существовать пользователь в /etc/passwd. Обратное утверждение неверно.
Для управления учетными записями предназначена утилита smbpasswd; полный список ее возможностей можно узнать из соответствующей man-страницы, здесь же рассмотрим наиболее частые методы использования.
Создание нового пользователя:
Вывод
В этом руководстве вы узнали, как установить сервер Samba в Ubuntu 18.04 и создать различные типы общих и пользователей. Мы также показали вам, как подключиться к серверу Samba с устройств Linux, macOS и Windows.
Заключение
Скажу откровенно – мне не нравится, как работают файловые сервера samba с интеграцией в виндовом домене. Но настраивать их приходится часто, так как востребованный функционал. Востребован в первую очередь потому, что не требует вообще никаких денег за лицензии, и работает на минимальной конфигурации железа. Вот список типичных проблем при работе самбы в домене:
Если у вас есть возможность настроить файловый сервер на windows, либо обойтись линуксом без домена, то сделайте так. Существенно упростите настройку и дальнейшую эксплуатацию. Данную статью еще можно дополнить некоторыми моментами, которые я рассказал ранее, а что не рассказал, постараюсь раскрыть позже и добавить сюда ссылки на статьи:
- Подробное логирование всех действий с файлами на сервере.
- Настройка корзины для сетевых дисков samba.
- Бэкап файлового сервера.
- Мониторинг за размером файловой шары.
Буду рад любым полезным замечаниям, исправлениям, советам по настройке файлового сервера samba. Я потратил значительное время, чтобы поделиться своими знаниями и опытом с остальными. Надеюсь, кто-то поделится чем-то полезным со мной. В том числе ради этого я и пишу статьи. Они расширяют мой кругозор и закрепляют полученные знания.
Онлайн курс “sre практики и инструменты”
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с
онлайн-курсом “SRE практики и инструменты”
в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и Linux. Обучение длится 3 месяц, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
На курсе вы узнаете как:
- Внедрить SRE практики в своей организации
- Управлять надежностью, доступностью и эффективностью сервисов
- Управлять изменениями
- Осуществлять мониторинг
- Реагировать на инциденты и производительность
- Работать со следующим технологическим стеком: Linux, AWS, GCP, Kubernetes, Ansible, Terraform, Prometheus, Go, Python.
Проверьте себя на вступительном тесте и смотрите подробнее программу по
.