Samba system config: Настройка Samba Ubuntu
Samba — SysadminWiki.ru
Общая информация
Организовать доступ к ресурсам Windows из Linux и обратно можно по протоколам NFS или SMB.
В Linux протокол SMB реализует приложение (пакет) Samba.
Samba сервер
Samba входит в репозитории всех дистрибутивов Linux поэтому её установка не должна вызвать проблем. Для Debian’ов это выглядит так:
# apt-get install samba
Пакет устанавливается от имени привилигированного пользователя, рута (root), т.е. для Ubuntu нужно выполнять эту команду через sudo:
$ sudo apt-get install samba
В простейшем рабочем виде конфигурационный файл Samba (/etc/samba/smb.conf в дистрибутивах и потомках Debian) может выглядеть так:
[global] [global] workgroup = WORKGROUP netbios name = pm-mint security = share [Хранилище] comment = Музыка, литература, видео path = /home/user/Хранилище read only = Yes guest ok = Yes [Для записи] comment = Сюда можно выкладывать интересные файлы path = /home/user/Для_записи read only = No guest ok = Yes
Если ресурс находится на NTFS томе, то его нужно сначала примонтировать (скажем, в /media/WinData/). В случае, когда мы создаём сетевой ресурс, монтировать лучше при загрузке системы. Так как во многих (всех?) дистрибутивах Linux диски автоматически не монтируются, то это придётся настроить вручную.
После этого можно добавить этот ресурс в список доступных для сети:
[Windows Data] comment = Музыка, литература, видео path = /media/WinData/Данные read only = Yes guest ok = Yes
- После любых изменений в конфигурационном файле необходимо перезагрузить smbd — демона Samba:
# service smbd restart
Пользователи Samba
Хотя Samba может использовать локальных пользователей, но пароль им нужно заводить отдельно. Зададим пароль пользователю user-name
:
smbpasswd -a user-name
Активируем этого пользователя:
smbpasswd -e user-name
Samba клиент
Клиент Samba позволять использовать (подключать, маппировать) ресурсы Windows компьютеров.
- Строго говоря, пакет Samba позволяет использовать протокол SMB, который реализован не только в Windows, также Windows может использовать и другие протоколы. Однако по умолчанию ОС Windows использует для взаимодействия по сети именно протокол SMB.
Установка:
# apt-get install samba-client
Если ядро поддерживает samba, то можно монтировать сетевые папки smb как и другие ресурсы.
Предварительно создав, например, каталог /mnt/common, подключаем сетевой диск //10.0.0.117/common находящийся на компьютере Windows:
# mount -t smbfs //10.0.0.117/common /mnt/common
Утилиты администрирования
- system-config-samba — отличная утилита с графическим интерфейсом GUI. Очень проста в использовании.
- gadmin-samba — эта утилита чуть посложнее, т.к. имеет больше настроек
- ! утилиты могут не помочь, если ресурс находится на NTFS разделе. В этом случае его необходимо предварительно смонтировать в каталог с настроенными правами.
См. также
Настройка Samba в CentOS 7
Файловый сервер (ФС) в операционных системах Linux может быть использован для разных целей, однако в большинстве случаев он задействован при создании локальной сети и общих папок с компьютерами на базе Windows. Самым популярным ФС на текущий момент времени по праву считается Samba. Она предустановлена во многих дистрибутивах, а опытные юзеры предпочитают именно этот инструмент в качестве основного при необходимости использования файловых серверов. Сегодня речь пойдет об инсталляции и настройке этого компонента в CentOS 7.
Настраиваем Samba в CentOS 7
Мы распределили весь материал на шаги, потому что процесс стандартной конфигурации обычно занимает много времени и состоит из нескольких различных этапов. Не обойдем стороной и предварительные действия с Windows, поскольку выше мы уже уточнили, что Samba часто применяется в связке именно с этой операционной системой. Вам остается только внимательно изучить представленные инструкции, чтобы понять основные принципы настройки файлового сервера в CentOS 7.
Шаг 1: Подготовительные работы в Windows
Начать стоит именно с Виндовс, поскольку потребуется определить важную информацию, без которой не обойтись без создания сети и общих папок. Вам потребуется определить имя рабочей группы и внести изменения в файл «hosts», чтобы попытки подключения не блокировались. Все это выглядит следующим образом:
- Откройте «Пуск», через поиск отыщите «Командную строку» и запустите это приложение от имени администратора.
- Введите команду
net config workstation
, чтобы узнать текущую конфигурацию рабочей станции. Активируйте действие нажатием на клавишу Enter. - Дождитесь появления списка. В нем отыщите пункт «Домен рабочей станции» и запомните его значение.
- В этой же сессии консоли введите строку
notepad C:\Windows\System32\drivers\etc\hosts
, чтобы открыть необходимый файл через установленный по умолчанию «Блокнот». - Опуститесь в конец списка и вставьте строку
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. Вам осталось только следовать приведенным инструкциям, изменяя параметры и их значения под себя, чтобы создать оптимальную конфигурацию.
Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ
Как установить и настроить Samba в Ubuntu
Если у вас есть сеть, состоящая из компьютеров под управлением Windows и Linux, и вы хотите включить обмен между ними вам потребуется Samba. Это инструмент с открытым исходным кодом, который позволяет вам получить доступ к общим ресурсам, включая файлы, принтеры и т. д.
Рассмотрим как установить и настроить Samba в качестве системы хранения файлов для ОС Windows и Linux и как получить доступ к общим файлам Samba из Linux и Windows. Не забудьте, что серверная и клиентская ОС должны находятся в одной IP-подсети.
Мы будем использовать Ubuntu 18.04 LTS для установки и настройки сервера Samba.
Установка Samba на Ubuntu
Запустите терминал, нажав комбинации клавиш Ctrl + Alt + T, затем введите следующую команду для установки Samba.
sudo apt install samba
Проверьте установку Samba
Вы можете проверить, успешно ли Samba установлена и работает, введя следующую команду. Он покажет статус службы Samba.
sudo systemctl status nmbd
Вы можете видеть, что Samba активна и работает.
Конфигурация Samba
Как только вы закончите установку, вам нужно будет ее настроить.
1. Сперва нам нужно создать каталог Samba, в котором будут храниться общие данные. Откройте Терминал и выполните следующую команду от имени sudo:
sudo mkdir /samba
Это создаст новый подкаталог samba в корневом каталоге.
2. На всякий случай сделаем резервную копию файла конфигурации, скопировав его в тот же или другой каталог. Чтобы скопировать файл, выполните следующую команду:
sudo cp /etc/samba/smb.conf /etc/samba/smb_backup.conf
3. Теперь отредактируем файл конфигурации. Он находится в каталоге /etc/samba/ в файле smb.conf. Вы можете использовать Gedit, Nano или Vim для его редактирования.
sudo nano /etc/samba/smb.conf
Теперь мы настроим наш новый каталог samba как общий ресурс. Добавьте следующие строки в конец файла smb.conf.
[samba-share]
comment = Samba on Ubuntu
path = /samba
read only = no
browsable = yes
[samba-share] – название ресурса
comment – Добавить краткое описание акции
path – Это каталог вашего общего ресурса.
read only -Указывает, разрешена ли запись в каталог
browsable – должен ли общий ресурс быть указан в списке общих ресурсов
Нажмите Ctrl + O для сохранения и Ctrl + X для выхода.
Настройка учетной записи пользователя Samba
Теперь настроим учетную запись пользователя Samba. Samba использует системную учетную запись для доступа к общему ресурсу, но не принимает пароль системной учетной записи. Если пользователя в системе еще нет, его нужно создать.
sudo useradd username
Нужно будет установить пароль для этой учетной записи, введя следующую команду от sudo. При запросе введите новый пароль.
sudo smbpasswd -a username
Перезапуск Samba
После завершения всех настроек перезапустите службу Samba, выполнив следующую команду:
sudo systemctl restart smbd.service
Подключение к общему ресурсу Samba
Для доступа к файлам сервера Samba IP-адрес вашего сервера Samba и клиентов, подключающихся к нему, должны находиться в одной сети.
Например, в моем сценарии у меня есть сервер Samba и клиент Windows. Обе машины находятся в одной сети.
IP Samba (Сервер): 192.168.10.1/24
IP-адрес Windows (клиент): 192.168.10.201/24
Настройка IP-адреса сервера Samba
Вы можете проверить IP-адрес любой машины, запустив команду ip a в Терминале.
Подключение из Windows
Вы можете подключиться к общему ресурсу Samba из ОС Windows двумя способами: с помощью утилиты Run либо с использованием проводника
Использование утилиты Run
Нажмите клавишу Windows + R, чтобы запустить утилиту Run . Введите адрес в следующем синтаксисе для доступа к общему ресурсу Samba и нажмите Enter.
\\[IP-адрес]\[имя_общего_каталог]
Вам будет предложено ввести логин и пароль. Введите учетные данные для общего ресурса Samba, затем нажмите OK . Вы увидите, что соединение установлено. Теперь вы можете получить доступ к файлам на сервере Samba.
Общий ресурс Samba виден в Windows
Использование проводника
Запустите проводник в окне. На левой панели щелкните правой кнопкой мыши на этом компьютере . Затем выберите Добавить местоположение в сети из раскрывающихся меню.
Использование проводника
Запустится мастер добавления сетевого расположения . Продолжайте нажимать Next, пока не появится следующий экран. Добавьте общий адрес Samba, следуя синтаксису, и нажмите «Далее» .
\\[Ip-адрес]\имя_общего_каталога
Установка и настройка Samba. — Хомячье логово
Содержание:
1. Введение.
1.1. Описание программы.
1.2. Проверка наличия Samba.
2. Предварительная подготовка.
2.1. Удалим SELinux.
2.2. Обновим систему.
2.3. Установим полезные программы.
2.4. Получение IP-адреса по DHCP.
2.5. Получение IP-адреса вручную.
2.6. Временное отключение межсетевого экрана.
2.7. Отключение протокола IPv6.
3. Установка Samba.
4. Доступ по пользователю и паролю.
5. Доступ по IP-адресу.
6. Доступ всем подряд без ограничений.
7. Настройка межсетевого экрана.
7.1. Для firewalld.
7.2. Для iptables.
7.3. Для iptables доступ только из локальной сети.
8. Система логирования.
9. Проверка параметров и перезагрузка службы.
10. Оригиналы источников информации.
1. Введение.
1.1. Описание программы.
Samba — программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу Server Message Block (SMB) и Common Internet File System (CIFS). Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL.
Основное предназначение — организация коллективного доступа к файлам и принтерам между Linux и Windows системами.
Samba состоит из нескольких демонов, работающих в фоновом режиме и предоставляющих сервисы и ряд инструментов командной строки для взаимодействия со службами Windows:
- smbd — демон, являющийся SMB-сервером файловых служб и служб печати;
- nmbd — демон, предоставляющий службы имен NetBIOS;
- smblient — утилита предоставляет доступ из командной строки к ресурсам SMB. Она также позволяет получить списки общих ресурсов на удаленных серверах и просматривать сетевое окружение;
smb.conf
— конфигурационный файл, содержащий настройки для всех инструментов Samba.
Для того чтобы все работало правильно, все машины должны состоять в одной рабочей группе, указанной на сервере Samba. По умолчанию для Windows, CentOS 7 рабочая группа называется WORKGROUP.
1.2. Проверка наличия Samba.
Samba включена практически во все дистрибутивы Linux.
Скорей всего у вас он тоже есть, проверьте это:
# whereis samba
Если нет, то установим её.
2. Предварительная подготовка.
2.1. Удалим SELinux.
Удалим SELinux:
# yum -y remove selinux*
Перезагрузим CentOS 7:
# reboot
2.2. Обновим систему.
Обновим систему до актуального состояния:
# yum -y update
2.3. Установим полезные программы.
Net-tools и текстовый редактор Midnight Commander:
# yum -y install net-tools mc
2.4. Получение IP-адреса по DHCP.
Если по какой-то причине в сети нету DHCP сервера, вам стоит его поднять.
Для принудительного обновления или получения IP-адреса выполните команду:
# dhclient
Показать IP-адрес при установленных net-tools:
# ifconfig
или
# nmcli device show
Запоминаем наш IP-адрес, который был выдан по DHCP. Он нам пригодится для обращения к нашему Samba серверу с других компьютеров.
2.5. Получение IP-адреса вручную.
В командной строке список сетевых адаптеров можно получить командой:
# nmcli device status
Статический IP и Gateway задается следующей командой, где «enp2s0»
— это имя сетевого адаптера:
# nmcli connection modify "enp2s0" ipv4.addresses "192.168.0.31/24 192.168.1.1"
2.6. Временное отключение межсетевого экрана.
По умолчанию CentOS 7 использует брандмауэр firewalld, временно отключим его:
# systemctl stop firewalld
Межсетевой экран настроим и активируем в конце инструкции, пока его отключим для чистоты экспериментов.
2.7. Отключение протокола IPv6.
Если протокол IPv6 не используется, логично его отключить, для этого нужно добавить два параметра в файл /etc/sysctl.conf
, выполните следующие команды или используйте редактор mcedit.
Открываем настройку ядра:
# mcedit /etc/sysctl.conf
Удаляем там все комментарии и вписываем всего 2 строки:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
Нам не нужно отключать IPv6 на уровне всей системы, а только, например, для «enp2s0»
»
— это имена сетевых адаптеров.
Добавляем по строке на адаптер:
net.ipv6.conf.enp2s0.disable_ipv6 = 1
Применяем настройки:
# sysctl -p
Перезагрузите службу сети:
# systemctl restart network
3. Установка Samba.
Устанавливаем Samba:
# yum -y install samba samba-client samba-common
Запускаем службу smb.service и smb.service добавляем в автозагрузку.
Первый:
# systemctl start smb
# systemctl enable smb
И второй:
# systemctl start nmb
# systemctl enable nmb
Делаем резервное копируем конфига.
# cp /etc/samba/smb.conf /etc/samba/smb.conf.original
Делаем примерно такой конфигурационный файл:
# mcedit /etc/samba/smb.conf
В зависимости от этого настройки будут немного разные:
Настраиваем как над smb.conf
по готовым решениям ниже и перезапускаем Samba, чтобы изменения вступили в силу, перезапускаем сервис Samba:
# systemctl restart smb
# systemctl restart nmb
Проверим его работу:
# systemctl status smb.service
Ответ:
Создаем папку для общего доступа и назначаем для всех права записи:
# mkdir -p /folder_for_share
Создадим и добавим «бездомного» и «бесконсольного» служебного пользователя по имени share-user.
# useradd share-user --no-create-home --shell /bin/false -M -G users -s /sbin/nologin
Импортируем этого пользователя в Samba и задаем пароль:
# smbpasswd -a share-user
Настраиваем права на папку, чтобы он имел права на работу с ней и в ней.
# chown -R share-user:share-user /folder_for_share
# chmod -R 0775 /folder_for_share
Проверяем параметры:
# testparm
Ответ:
Просмотр пользователей:
# pdbedit -L -v
Ответ:
4. Доступ по пользователю и паролю.
Открываем конфигурационный файл в текстовом редакторе:
# mcedit /etc/samba/smb.conf
Для доступа по паролю пишем такой конфигурационный файл:
[global] passdb backend = tdbsam server string = Samba workgroup = WORKGROUP log file = /var/log/samba/%m.log max log size = 50 security = user map to guest = Bad User dns proxy = no # следовать по симлинкам unix extensions = no wide links = yes follow symlinks = yes # utf кодировка dos charset = cp866 unix charset = UTF8 # отключаем принтеры load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes # пускать в сетевую папку только компьютер только с этим адресом. # hosts allow = 192.168.0.24 # пускать в сетевую папку только компьютеры с этой сети. hosts allow = 192.168.0.0/24 # по умолчанию все файлы, начинающиеся с точки будут иметь атрибут "скрытый". hide dot files = yes [folder_for_share] path = /folder_for_share valid users = @users force group = users create mask = 0660 directory mask = 0771 writable = yes browseable = yes
Следует обратить внимание на параметры:
hosts allow = 192.168.0.24 # пускать в сетевую папку только компьютер только с этим адресом. hosts allow = 192.168.0.0/24 # пускать в сетевую папку только компьютеры с этой сети.
Перезапускаем службы.
# systemctl restart smb
# systemctl restart nmb
# systemctl restart smb.service
И пробуем зайти на шару по адресу:
\\ip-сервера\folder_for_share
5. Доступ по IP-адресу.
Открываем конфигурационный файл в текстовом редакторе:
# mcedit /etc/samba/smb.conf
Чтоб организовать доступ в зависимости от IP-адреса, делаем такие настройки в smb.conf:
[global] security = user workgroup = WORKGROUP server string = Samba map to guest = bad user [folder_for_share] path = /folder_for_share browsable = yes writable = yes guest ok = yes read only = no hosts allow = 192.168.0.10
В данном случае полный доступ будет у адреса 192.168.0.10
.
Чтобы добавить всю подсеть, то указать нужно следующее:
hosts allow = 192.168.0.0/24
Комбинировать можно разные подсети и адреса, разделяя их пробелами. Для того, чтобы отключить доступ каким-то отдельным адресам из разрешенной подсети, можно сделать вот так:
hosts allow = 192.168.0.0/24 except 192.168.0.15
Доступ будет разрешен всей подсети 192.168.0.0/24
, кроме адреса 192.168.0.15
.
Делаем перезапуск самбы и проверяем.
Перезапускаем службы.
# systemctl restart smb
# systemctl restart nmb
# systemctl restart smb.service
И пробуем зайти на каталог по адресу:
\\ip-сервера\folder_for_share
Если у вас установлена Samba 4, то эта конфигурация не заработает и вы получите ошибку:
WARNING: Ignoring invalid value ‘share’ for parameter ‘security’
Чтобы доступ по IP нормально заработал, вам необходимо внести следующие изменения в приведенный выше конфиг:
security = user map to guest = Bad Password
Остальные параметры оставляете те же. После этого доступ по IP будет работать и на 4-й версии Samba.
6. Доступ всем подряд без ограничений.
Открываем конфигурационный файл в текстовом редакторе:
# mcedit /etc/samba/smb.conf
Если доступ будет предоставлен всем без ограничений, то простейшая конфигурация Samba будет такой:
[global] security = user workgroup = WORKGROUP server string = Samba guest account = nobody map to guest = Bad User [folder_for_share] comment = Public Folder path = /folder_for_share browseable = Yes guest ok = Yes public = yes writeable = Yes read only = no guest ok = yes create mask = 0777 directory mask = 0777
где:
[folder_for_share]
— имя общей папки, которое увидят пользователи, подключившись к серверу.comment
— комментарий для удобства.path
— путь на сервере, где будут храниться данные.public
— для общего доступа. Установите в yes
, если хотите, чтобы все могли работать с ресурсом.writable
— разрешает запись на сетевой ресурс.read only
— только для чтения. Установите no
, если у пользователей должна быть возможность создавать папки и файлы.guest ok
— разрешает доступ к папке гостевой учетной записи.create mask
, directory mask
— при создании новой папки или файла назначаются полные права.
Убедитесь, что директория из параметра path
существует, если нет, создайте ее.
Не забываем еще раз сделать права для всех на папку:
# chmod -R 0777 /mnt/files
И пробуем зайти на каталог по адресу:
\\ip-сервера\folder_for_share
Должно пустить без лишних вопросов.
7. Настройка межсетевого экрана.
Настроим межсетевой экран.
7.1. Для firewalld.
По умолчанию CentOS 7 использует брандмауэр firewalld, состояние службы можно узнать командой:
# firewall-cmd --state
Он отключен!
Активируем его командой:
# systemctl start firewalld
Для получения списка правил и сервисов используйте
# 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
7.2. Для iptables.
Для этого в правилах откроем TCP-порты: 139 порт и 445 порт, а также UDP-порты: 137 порт и 138 порт, но только для тех подсетей, которым доверяете.
# mcedit /etc/sysconfig/iptables
Для указания собственного диапазона адресов, замените значение после ключа ‘-s
‘:
-A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 139 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 445 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -p udp -m udp --dport 138 -j ACCEPT
Перезагружаем iptables:
# systemctl restart iptables
Для проверки существующих правил используем:
# iptables -L
7.3. Для iptables доступ только из локальной сети.
Так же незабываем настроить iptables для доступа к ресурсу:
# mcedit /etc/sysconfig/iptables
Добавляем в файервол iptables исключение в параметрах INPUT
:
# mcedit /etc/sysconfig/iptables
Вот такие строки:
-A INPUT -s 192.168.0.0/24 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -P INPUT DROP
В следующем примере показана простая политика, позволяющая локальному серверу принимать трафик только от клиентов частной сети 192.168.0.0/24
.
Первая команда добавляет правило в цепочку INPUT
путем его добавления в текущий список правил. Это правило говорит о том, что для любого трафика, приходящего из сети-источника (-s
) 192.168.0.0/24
, будет выполняться действие ACCEPT
, разрешающее получение пакетов.
Вторая команда разрешает получение пакетов, приходящих при уже установленном соединении – за это отвечает вызов matcher state (оператор проверки соответствия состояния -m state
). Этот matcher state следит за тем, какие подключения покидают хост. Ответные исходящие пакеты считаются установленными или связанными (established или related), поэтому остальные правила пропускают эти пакеты.
Последняя команда определяют политику по умолчанию цепочки INPUT
, сбрасывающую пакеты. Если пакет не пришел из сети 192.168.0.0/24
или не является пакетом установленного хостом соединения, то он сбрасывается.
8. Система логирования.
По умолчанию log-файлы находятся в папке /var/log/samba
. При необходимости получить подробные логи, в раздел [global]
необходимо добавить параметр log level = 2
или log level = 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
9. Проверка параметров и перезагрузка службы.
Перезапускаем службы.
# systemctl restart smb
# systemctl restart nmb
# systemctl restart smb.service
Проверим параметры запуска Samba:
# testparm
Проверим состояние службы Samba:
# smbstatus
10. Оригиналы источников информации.
- serveradmin.ru «Быстрая и простая настройка Samba» от 04.05.2018.
- serveradmin.ru «Настройка файлового сервера Samba с интеграцией в Active Directory» от 02.10.2017.
- proft.me «Samba: настройка файлового обмена между Windows и Linux».
- forum.sys-adm.in « Тема: Создать быстро шару (общую папку) CentOS 7 / Fedora».
- dmosk.ru «Как расшарить папку в Samba».
- spo23.ru «Безопасность Samba посредством IPtables».
- bozza.ru «Установка и настройка Samba на CentOS 7».
- serverspace.by «Настройка Samba».
- losst.ru «Настройка Samba в Ubuntu 18.04».
- dmosk.ru «Способы отключения IPv6 в CentOS».
Настройка Samba с интеграцией в AD
Функционал обычного файлового сервера неизменно остается одним из самых популярных и востребованных в работе среднестатистического офиса. Сегодня я расскажу как установить и настроить файловый сервер Samba с авторизацией в AD и управлением доступом с помощью доменных учетных записей. Сразу скажу, что тема это достаточно трудная и хрупкая, очень часто что-то идет не так, нужно неплохо ориентироваться в теме, чтобы решать возникающие проблемы.
Если у вас есть желание освоить Linux с нуля, не имея базовых знаний, рекомендую познакомиться с онлайн-курсом Administrator Linux.Basic в OTUS. Курс для новичков, для тех, кто хочет войти в профессию администратора Linux. Подробности по .
Прежде чем начинать настройку файлового сервера samba, прочитайте полностью материал, чтобы решить, каким способом будете настраивать. По ходу написания статьи у меня получились 2 принципиально разных решения.
Введение
Ранее я рассказывал как сделать очень простую и быструю настройку самбы, когда доступ ограничивается либо внутренними пользователями самбы, либо с помощью ip. Если вас такой формат эксплуатации файлового сервера устраивает, то читать дальше не обязательно. Используйте приведенную статью, и у вас все получится очень быстро.
Для более сложной настройки самбы с авторизацией в Active Directory будем разбираться дальше. Существует как минимум 2 способа добавления linux сервера в домен Windows Server:
- Использовать известное и универсальное средство winbind.
- Либо воспользоваться менее популярным, но как мне кажется, более удобным и простым в настройке — sssd.
Пример добавления linux сервера в домен с помощью winbind я приводил в одной из своих статей по настройке sams с авторизацией в AD. Утилиту sssd я использовал, когда настраивал авторизацию в linux с помощью доменный учетных записей. В этой статье я воспользуюсь sssd для интеграции в виндовый домен.
Если у вас еще нет готового сервера, то можете воспользоваться моими материалами на эту тему — установка и настройка centos 7. Так же рекомендую настроить iptables для корректной работы сервера с доменом windows. Далее я не буду касаться этого вопроса, мы просто отключим фаерволл, потому что его настройка не тема этой статьи.
Настраивать файловую шару samba будем на сервере под управлением CentOS 7 следующей версии:
Вводные слова я все сказал. Начнем настройку самбы с ввода сервера в домен.
Добавляем сервер к домену через realm
Я не буду придумывать ничего нового, а полностью воспользуюсь инструкцией из приведенной выше статьи по настройке авторизации доменных учеток на сервере, но при этом не буду настраивать саму авторизацию. В данном случае мне это не нужно.
Итак, отключаем firewall и SELinux, если не сделали это раньше. Если не хотите отключать, то настройте сами. Данная настройка выходит за рамки статьи.
# mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Выполняем команду, чтобы не ждать перезагрузки для применения изменений.
setenforce 0
Выключаем firewalld.
# systemctl stop firewalld # systemctl disable firewalld
xs.local | название домена |
10.1.3.4 | ip адрес контроллера домена |
xs-winsrv.xs.local | полное имя контроллера домена |
xs-design | имя сервера centos, который вводим в домен |
admin51 | учетная запись администратора домена |
Перед дальнейшей настройкой, убедитесь, что с вашего сервера 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
Заводим в домен.
# realm join -U admin51 XS.LOCAL Password for admin51:
Если не получили никакой ошибки, значит все прошло нормально. Можно зайти на контроллер домена и проверить, появился ли наш linux сервер в домене.
Проверьте на самом сервере, что он нормально обращается к домену и получает информацию об учетных записях. Показываю на примере доменной учетной записи control.
# id [email protected] uid=185001305([email protected]) gid=185000513(пользователи домена@xs.local) groups=185000513(пользователи домена@xs.local),185001329([email protected]),185001651([email protected]),185001327([email protected])
Еще несколько проверок.
# realm list
# adcli info xs.local
Сервер завели в домен. Приступаем к основному — настройке samba с интеграцией в AD.
Настройка Samba с интеграцией в AD через sssd
Устанавливаем сам файловый сервер самба.
# yum install samba
Рисуем ему примерно такой конфиг.
# cat /etc/samba/smb.conf
[global] workgroup = XS server string = Samba Server Version %v log file = /var/log/samba/log.%m log level =3 max log size = 500 security = ads encrypt passwords = yes passdb backend = tdbsam realm = XS.LOCAL load printers = no cups options = raw printcap name = /dev/null [shara] comment = My shared folder path = /mnt/shara public = no writable = yes guest ok = no valid users = @"[email protected]"
Запускаем службу smb.service и добавляем в автозагрузку.
# systemctl start smb.service # systemctl enable smb.service
Теперь идем проверять подключение к сетевому диску с какой-нибудь виндовой машины. Здесь меня ждало полное разочарование. Ничего не работало. Я бился над решение проблемы примерно 2 дня, но не смог победить. Перелопатил весь гугл по запросу «sssd samba», но не смог заставить работать эту связку.
Через поиск нашел как людей, которые бились над решением проблемы с теми же ошибками, что и у меня, так и тех у кого все работало нормально. Я проверил все гайды и конфиги, где люди говорили, что такая связка работает, но у меня она все равно не работала. Видел сообщения людей, которые так же как я, не смогли победить ошибки. Думаю, проблема кроется в различных версиях софта.
Мне стало жаль тратить время на поиски готового решения с sssd, хотя мне очень хотелось получить рабочий вариант, так как с winbind достаточно часто возникают проблемы. Я надеялся от них избавиться переходом на sssd, но не получилось. Статью не стал переделывать, сохранив то, что уже настроил. Может быть у вас заработает.
Попутно узнал, что sssd не поддерживает NTLM авторизацию, только kerberos. Я не знаю, по какой причине, но у меня самба, судя по логам, упорно пыталась авторизовать пользователя по ntlm. В итоге, я прекратил попытки и вернулся к старому проверенному варианту с winbind. Далее расскажу, как настроить файловый сервер samba для работы в домене windows с помощью winbind.
Вводим CentOS 7 в домен с помощью winbind
Если у вас виртуальная машина, проще установить ее с нуля. Если не хочется по какой-то причине, можно просто удалить все установленные ранее пакеты через команду yum remove. Я поступил именно так.
Устанавливаем недостающие пакеты:
# yum install samba-winbind samba-winbind-clients samba pam_krb5 krb5-workstation chrony
Не забудьте о настройке синхронизации времени, которую мы делали на предыдущих шагах. Надо это проделать, если вы сразу начали настройку с данного пункта. Так же убедитесь, что все в порядке с dns, и контроллеры домена пингуются по именам.
Формируем конфиг для kerberos.
# authconfig --enablekrb5 --krb5kdc=xs-winsrv.xs.local --krb5adminserver=xs-winsrv.xs.local --krb5realm=XS-WINSRV.XS.LOCAL --enablewinbind --enablewinbindauth --smbsecurity=ads --smbrealm=XS.LOCAL --smbservers=xs-winsrv.xs.local --smbworkgroup=XS --winbindtemplatehomedir=/home/%U --winbindtemplateshell=/bin/bash --enablemkhomedir --enablewinbindusedefaultdomain --update
Для удобства дублирую таблицу с информацией, чтобы не пришлось скролить страницу вверх.
xs.local | название домена |
10.1.3.4 | ip адрес контроллера домена |
xs-winsrv.xs.local | полное имя контроллера домена |
xs-design | имя сервера centos, который вводим в домен |
admin51 | учетная запись администратора домена |
Вывод после работы команды у меня такой:
Job for winbind.service failed because the control process exited with error code. See "systemctl status winbind.service" and "journalctl -xe" for details.
Это не страшно, продолжаем настройку. Заводим сервер с CentOS в домен:
# net ads join -U admin51
На выходе получил:
Enter admin51's password: Using short domain name -- XS Joined 'XS-DESIGN' to dns domain 'xs.local' No DNS domain configured for xs-design. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER
В принципе, ничего страшного. Нам придется самим создать A запись на DNS сервере. Я не понимаю, почему иногда она не создается автоматически. Во время написания статьи, я использовал один сервер, у него не было этой ошибки при вводе в домен. Когда проверял статью на втором сервере, получил эту ошибку. Проверяем на контроллере домена в списке компьютеров наш сервер и создаем руками А запись, соответствующую имени сервера и его IP адресу.
Теперь рисуем конфиг для самбы примерно такой.
# mcedit /etc/samba/smb.conf
[global] workgroup = XS password server = xs-winsrv.xs.local realm = XS.LOCAL security = ads idmap config * : range = 16777216-33554431 template homedir = /home/%U template shell = /bin/bash kerberos method = secrets only winbind use default domain = true winbind offline logon = false passdb backend = tdbsam load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes domain master = no local master = no preferred master = no os level = 1 log level = 3 log file = /var/log/samba/log.%m [shara] path = /mnt/shara writeable = yes browsable = yes valid users = "@XS\Пользователи домена" admin users = "@XS\Администраторы домена" create mask = 0600 directory mask = 0700
У меня русский язык на контроллере домена, поэтому и имена групп на русском. Проблем с этим не возникает. Не забудьте создать директорию /mnt/shara.
Запускаем samba и winbind и добавляем в автозагрузку.
# systemctl start winbind # systemctl start smb.service # systemctl enable winbind # systemctl enable smb.service
Выполняем ряд проверок, чтобы убедиться, что все в порядке, winbind работает и samba будет получать актуальную информацию о пользователях и группах домена.
# wbinfo -t checking the trust secret for domain XS via RPC calls succeeded
# wbinfo -u # wbinfo -g
Последние две команды должны вывести список всех пользователей и групп домена.
Проверим теперь авторизацию в домене.
# wbinfo -a XS\\control%'pass' plaintext password authentication succeeded challenge/response password authentication succeeded
В данном случае control — имя пользователя домена, pass — его пароль. Успешная проверка выглядит так, как у меня. В завершении проверок посмотрим, корректно ли система сопоставляет доменные учетные записи локальным.
# id control uid=16777216(control) gid=16777220(пользователи домена) groups=16777220(пользователи домена),16777221(gr_z),16777222(gr_sams2),16777223(gr_y),16777217(BUILTIN\users)
Все в порядке. Теперь все готово для корректной работы файлового сервера на основе Samba с доменными учетными записями. В завершении настроек, сделаем администратора домена владельцем нашей шары.
# chown admin51:'пользователи домена' /mnt/shara
Проверяем, что получилось.
# ll /mnt total 0 drwxr-xr-x 2 admin51 пользователи домена 6 Sep 27 17:15 shara
Уберем доступ на чтение у всех остальных, оставим полные права для пользователя admin51 и на чтение у пользователей домена.
# chmod 0750 /mnt/shara
Идем на любую виндовую машину и пробуем зайти на шару по адресу \\ip-адрес-сервера. Попадаем на нашу шару.
Если не получилось зайти, проверьте настройки iptables. На время отладки можно их отключить. Так же убедитесь, что у вас запущена служба smb.service.
Смотрим расширенные параметры безопасности:
Получилось то, что хотели. Управлять правами доступа можно через windows acl с любой машины windows, где учетная запись пользователя домена будет обладать необходимыми правами. Если по какой-то причине это не получится (а я с такими ситуациями сталкивался достаточно часто), на помощь придут консольные утилиты getfacl для проверки прав и setfacl для изменения прав. Документация по этим командам есть в сети и легко ищется. Я рекомендую всегда использовать эти команды, когда вы выполняете изменение прав по большому дереву каталогов. Через консоль выставление прав будет выполнено раз в 5-10 быстрее, чем через windows acl. На больших файловых архивах разница может быть в десятки минут или даже часы.
Настройка прав доступа на файлы в Samba
Сделаю небольшое пояснение по правам доступа в файловом сервере samba. Вопрос этот сложный и объемный. Ему можно посвятить и отдельную статью. Но для полноты картины по настройке самбы, расскажу самое основное.
Как я уже ранее сказал, изменять права доступа к каталогам на файловом сервере можно с помощью команды setfacl. Давайте сейчас посмотрим на права доступа, которые установлены:
# getfacl /mnt/samba # file: mnt/shara # owner: admin51 # group: пользователи\040домена user::rwx group::r-x other::---
С такими правами что-то создавать в папке сможет только пользователь admin51, а пользователи домена смогут только просматривать файлы и каталоги. Сделаем более прикладной вариант. Добавим права доступа на чтение и запись еще одной доменной группе — gr_it.
# setfacl -m g:gr_it:rwx /mnt/shara
Обращаю внимание, что иногда при копировании команд setfacl они не отрабатывают, выдавая не очень понятную ошибку:
setfacl: Option -m: Invalid argument near character 1
Наберите команду с клавиатуры, либо просто удалите и наберите снова ключ -m, он почему-то при копировании часто дает эту ошибку.
Смотрим, что получилось:
# getfacl /mnt/shara # file: mnt/shara # owner: admin51 # group: пользователи\040домена user::rwx group::r-x group:gr_it:rwx mask::rwx other::---
То, что надо. Теперь пользователи группы gr_it имеют полные права на шару. Создадим одним таким пользователем папку test1 на нашей шаре и посмотрим, какие права она получит.
# getfacl /mnt/shara/test1 # file: mnt/shara/test1 # owner: user1 # group: пользователи\040домена user::rwx group::--- other::---
Права на папку имеет только ее создатель и больше никто. Для того, чтобы наследовались права с вышестоящего каталога, необходимо на этот вышестоящий каталог добавить дефолтные права доступа. Примерно вот так.
# setfacl -m d:g:gr_it:rwx,d:g:'пользователи домена':rx /mnt/shara
Смотрим, что получилось:
# getfacl /mnt/shara # file: mnt/shara # owner: admin51 # group: пользователи\040домена user::rwx group::r-x group:gr_it:rwx mask::rwx other::--- default:user::rwx default:group::r-x default:group:пользователи\040домена:r-x default:group:gr_it:rwx default:mask::rwx default:other::---
Создадим теперь тем же пользователем еще одну папку test2 и проверим ее права.
# getfacl /mnt/shara/test2 # file: mnt/shara/test2 # owner: user # group: пользователи\040домена user::rwx group::--- group:пользователи\040домена:r-x group:gr_it:rwx mask::rwx other::--- default:user::rwx default:group::r-x default:group:пользователи\040домена:r-x default:group:gr_it:rwx default:mask::rwx default:other::---
Применилось наследование с вышестоящих папок. Не забывайте про дефолтные права и учитывайте их при настройке прав доступа на файловом сервере.
Для удобной и корректной работы с правами доступа я обычно для крупных, корневых директорий выставляю права аккуратно через setfacl в консоли. Какие-то мелкие изменения по пользователям и группам в более низших иерархиях директорий делаю через windows acl с какой-нибудь виндовой машины.
Еще важно знать одну особенность выставления прав доступа в linux. В моей практике часто требуется дать какому-нибудь пользователю доступ в одну директорию, которая располагается там, где у пользователя нет вообще никаких прав. В windows эта проблема решается просто — даются права на конкретную папку, а пользователю кладется ярлык на эту папку. В итоге он имеет доступ к нужной директории и больше никуда.
В linux так сделать не получится. Для того, чтобы дать таким образом доступ на отдельную директорию пользователю, необходимо, чтобы по всем вышестоящим директориям у него были права на исполнение, то есть X. Их придется выставлять вручную по всем вышестоящим папкам. Результат будет такой же, как и в винде — пользователь получит доступ на чтение только в указанную папку, но для этого придется выполнить больше действий. Если не знаешь этот нюанс, можно потратить много времени, прежде чем поймешь, в чем проблема.
Заключение
Скажу откровенно — мне не нравится, как работают файловые сервера samba с интеграцией в виндовом домене. Но настраивать их приходится часто, так как востребованный функционал. Востребован в первую очередь потому, что не требует вообще никаких денег за лицензии, и работает на минимальной конфигурации железа. Вот список типичных проблем при работе самбы в домене:
- Иногда через windows acl права перестают выставляться, возникают неинформативные ошибки, по которым невозможно понять, что не так.
- Я достаточно регулярно наблюдаю ситуацию, когда слетают соответствия доменных учеток линуксовым UID. В итоге права доступа превращаются в ничего не значащий набор цифр и перестают работать.
- При переносе данных с одного сервера на другой трудно сохранить права доступа. Можно поступить вот так для копирования прав доступа, либо как-то заморочиться, чтобы на всех серверах у вас были одинаковые UID доменных учетных записей. Я не разбирал этот вопрос подробно.
Если у вас есть возможность настроить файловый сервер на windows, либо обойтись линуксом без домена, то сделайте так. Существенно упростите настройку и дальнейшую эксплуатацию. Данную статью еще можно дополнить некоторыми моментами, которые я рассказал ранее, а что не рассказал, постараюсь раскрыть позже и добавить сюда ссылки на статьи:
- Подробное логирование всех действий с файлами на сервере.
- Настройка корзины для сетевых дисков samba.
- Бэкап файлового сервера.
- Мониторинг за размером файловой шары.
Буду рад любым полезным замечаниям, исправлениям, советам по настройке файлового сервера samba. Я потратил значительное время, чтобы поделиться своими знаниями и опытом с остальными. Надеюсь, кто-то поделится чем-то полезным со мной. В том числе ради этого я и пишу статьи. Они расширяют мой кругозор и закрепляют полученные знания.
Онлайн курс по Linux
Если у вас есть желание освоить операционную систему Linux, не имея подходящего опыта, рекомендую познакомиться с онлайн-курсом Administrator Linux. Basic в OTUS. Курс для новичков, адаптирован для тех, кто только начинает изучение Linux. Обучение длится 4 месяца.
Что даст вам этот курс:
- Вы получите навыки администрирования Linux (структура Linux, основные команды, работа с файлами и ПО).
- Вы рассмотрите следующий стек технологий: Zabbix, Prometheus, TCP/IP, nginx, Apache, MySQL, Bash, Docker, Git, nosql, grfana, ELK.
- Умение настраивать веб-сервера, базы данных (mysql и nosql) и работа с сетью.
- Мониторинг и логирование на базе Zabbix, Prometheus, Grafana и ELK.
- Научитесь командной работе с помощью Git и Docker.
Смотрите подробнее программу по .
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Samba — Базовая установка и настройка Active Directory DC +SMB/CIFS
Устанавливать и настраивать будем на примере Debian Buster. Пакеты будут браться из репозитория Debian Stable, а также компилироваться из исходников. В качестве шлюза будет выступать pfSense.
Будут использоваться:
- pfSense 2.4.3-RELEASE-p1
- Debian Buster | Raspbian Buster;
- .deb Samba 4.9.5;
- .source Samba 4.9.17;
Полезные источники:
Задаем имя хоста:
# hostnamectl set-hostname dc0
- Проверяем,
# cat /etc/hostname
HOSTS:
# nano /etc/hosts
127.0.0.1 localhost
#127.0.1.1 dc0.net.lan dc0
192.168.0.251 dc0.net.lan dc0
Проверяем:
# hostname --fqdn
# hostname --ip-address
Настраиваем DNS-резолвер:
Важно! На этапе тестирования, снимим комментарий с «internal» и поставим на «external«.
# nano /etc/resolv.conf
domain net.lan
search net.lan
#nameserver 192.168.0.251 # internal Samba DNS-Сервер;
nameserver 192.168.1.52 # external DNS-Сервер;
Сетевой интерфейс:
Чтобы в дальнейшем не возникало всевозможных проблем с сетью, зададим статические настройки для сетевого интерфейса.
# nano /etc/network/interfaces
iface enp0s3 inet static
address 192.168.0.251
netmask 255.255.248.0
gateway 192.168.0.6
#dns-nameservers 192.168.0.251
#dns-search net.lan
- Команды для работы с сетевыми интерфейсами,
# service networking restart
# /etc/init.d/networking restart
# ifdown enp0s3
# ifup enp0s3
# ip a show enp0s3
Устанавливаем необходимые пакеты:
— «Samba» — реализация протокола SMB / CIFS для Unix-систем, обеспечивающая поддержку межплатформенного совместного использования файлов с Microsoft Windows, OS X и другими Unix-системами. Samba также может функционировать как контроллер домена.
— «krb5-config» — Служит для настройки Kerberos v5, файл /etc/krb5.conf;
— «krb5-user» — Cистема аутентификации пользователей и сервисов в сети;
— «winbind» — Демон, который объединяет механизмы проверки подлинности и службы каталогов (пользовательский / групповой поиск) из домена Windows в системе Linux;
— «libnss-winbind» — Поиск пользователей / групп на основе Winbind через /etc/nsswitch.conf.
# apt-get install samba winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user smbclient
- NET.LAN
- dc0
- dc0
Настройка домена:
В DC служба Samba автоматически запускает требуемые службы «smbd» и «winbindd» в качестве подпроцессов. Если мы попытаемся запустить их вручную, то Samba DC не будет работать должным образом. В Debian, поставщик пакетов создал дополнительные служебные файлы Samba, мы их отключим и замаскируем, чтобы другие службы не активировали их.
- Маскировка и отключение служб,
# systemctl stop samba-ad-dc smbd nmbd winbind
# systemctl mask samba-ad-dc smbd nmbd winbind
# systemctl disable samba-ad-dc smbd nmbd winbind
- Переименовываем файл, для того, чтобы samba-tool сконфигурировала новый,
# mv /etc/samba/smb.conf /etc/samba/smb.conf.old
- Настраиваем samba ad в интерактивном режиме,
# samba-tool domain provision --use-rfc2307 --interactive
- NET.LAN
- NET
- dc
- SAMBA_INTERNAL
- 192.168.1.52 IP-адрес DNS-сервера, на который будут перенаправлены запросы, которые не может разрешить внутренний (internal) DNS-сервер Samba;
- Аналогично и для kerberos,
# mv /etc/krb5.conf /etc/krb5.conf.old
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
- Включаем samba-ad-dc,
# systemctl unmask samba-ad-dc
# systemctl enable samba-ad-dc
# systemctl restart samba-ad-dc
Тестирование Samba AD DC:
- Проверяем режим работы AD DC,
# samba-tool domain level show
- Verifying the File Server,
# smbclient -L localhost -U%
- Verifying Kerberos,
# kinit administrator
- Verifying DNS,
# host -t SRV _ldap._tcp.net.lan.
# host -t SRV _kerberos._udp.net.lan.
# host -t A net.lan.
# host -t PTR 192.168.0.251
- List the cached Kerberos tickets,
# klist
Создаем зону обратного просмотра:
Т.к. она не создается автоматически.
# samba-tool dns zonecreate net.lan 0.168.192.in-addr.arpa
- Добавляем запись для сервера,
# samba-tool dns add net.lan 0.168.192.in-addr.arpa 251 PTR dc0.net.lan
Конфигурационные файлы после установки.
krb5.conf:
# nano /etc/krb5.conf
[libdefaults]
default_realm = NET.LAN # Имя домена;
dns_lookup_realm = false # Отключаем поиск kerberos-имени домена через DNS;
dns_lookup_kdc = true # Оставляем (или включаем) поиск kerberos-настроек домена через DNS;
smb.conf:
# nano /etc/samba/smb.conf
[global]
dns forwarder = 192.168.1.52
netbios name = DC0
realm = NET.LAN
server role = active directory domain controller
workgroup = NET
idmap_ldb:use rfc2307 = yes
[netlogon]
path = /var/locks/sysvol/net.lan/scripts
read only = No
[sysvol]
path = /var/locks/sysvol
read only = No
nsswitch.conf:
# nano /etc/nsswitch.conf
passwd: files
group: files
shadow: files
gshadow: files
hosts: files mymachines dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Добавление Winbind в качестве источника пользователей и групп:
Для того, чтобы ОС прозрачно работала с пользователями, (чтобы можно было назначать пользователей домена владельцами папок и файлов), необходимо указать ОС использовать Winbind как дополнительный источник информации о пользователях и группах.
# nano /etc/nsswitch.conf
passwd: files winbind
group: files winbind
Setting up a Share Using Windows ACLs: [link];
# nano /etc/samba/smb.conf
[global]
# Extended ACL Support
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
[share]
path = /home/share
read only = no
browsable = yes
- Перечитаем настройки,
# smbcontrol all reload-config
- Только пользователи и группы, имеющие предоставленную привилегию SeDiskOperatorPrivilege, могут настраивать разрешения на доступ к ресурсам.
# net rpc rights grant "NET\Domain Admins" SeDiskOperatorPrivilege -U "NET\administrator"
# mkdir /home/share
# chown -R root:"Domain Admins" /home/share
# chmod -R 770 /home/share
Этот способ подойдет как для обычной ОС Debian Stretch, так и для Raspberry Pi mod 3b «*» c ее Raspbian Stretch ОС.
Устанавливаем необходимые пакеты:
# apt install acl attr autoconf bind9utils bison build-essential \
debhelper dnsutils docbook-xml docbook-xsl flex gdb libjansson-dev krb5-user \
libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev \
libcap-dev libcups2-dev libgnutls28-dev libgpgme-dev libjson-perl \
libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
libpopt-dev libreadline-dev nettle-dev perl perl-modules pkg-config \
python-all-dev python-crypto python-dbg python-dev python-dnspython \
python3-dnspython python-markdown python3-markdown \
python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utils libtasn1-bin
- NET.LAN
- dc0
- dc0
Samba install:
# wget https://download.samba.org/pub/samba/stable/samba-4.9.17.tar.gz
# tar -zxf samba-*
# cd samba-4.9.17/
- Конфигурация,
# ./configure --help
# ./configure --bindir=/usr/local/bin --sbindir=/usr/local/sbin \
--sysconfdir=/etc/samba --localstatedir=/var --libdir=/usr/local \
--datarootdir=/usr/share/samba --mandir=/usr/share/man --with-systemd \
--with-logfilebase=/var/log/samba --enable-selftest
#--systemd-install-services --with-systemddir=/etc/systemd/system - Не работают.
- Собираем,
# make -jN # N = кол-во потоков +1 # cat /proc/cpuinfo
- Устанавливаем,
# make -jN install
- или собрать пакет, а затем установить,
# checkinstall --install
- Управление пакетами,
# dpkg --install samba_4.9.17-1_amd64.deb
# dpkg --remove samba
Замаскировать пакеты:
Чтобы не установились пакеты самбы из репозитория (более старые версии), при выходе апдейтов безопасности и новых версий.
# apt-mark hold libwbclient0 samba-common
# apt-mark unhold libwbclient0 samba-common
Systemd:
Настраиваем сервис.
# nano /etc/systemd/system/samba-ad-dc.service
[Unit]
Description=Samba Active Directory Domain Controller
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/sbin/samba -D
PIDFile=/var/run/samba.pid
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
Настройка домена:
В случае с ОС Raspbian Stretch, потребуется выполнить # mv /etc/samba/smb.conf /etc/samba/smb.conf.old
- Маскировка и отключение служб,
# systemctl mask smbd nmbd winbind (new version's 4.10.X? smb nmb)
# systemctl disable smbd nmbd winbind (new version's smb nmb)
- Настраиваем samba ad в интерактивном режиме: (переименовываем файл, для того, чтобы samba-tool сконфигурировала новый)
# mv /etc/krb5.conf /etc/krb5.conf.old
- интерактивный,
# samba-tool domain provision --use-rfc2307 --interactive
- ручной,
# samba-tool domain provision --use-rfc2307 --realm=NET.LAN --domain=INT --server-role=dc --dns-backend=SAMBA_INTERNAL --adminpass=pass
# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
- Включаем samba-ad-dc
# systemctl enable samba-ad-dc
# systemctl start samba-ad-dc
Libnss winbind Links: [link]
Чтобы хосты могли получать информацию о пользователях и группах из домена с помощью Winbind.
- Debian-based Operating Systems
x86_64:
# ln -s /usr/local/libnss_winbind.so.2 /lib/x86_64-linux-gnu/
# ln -s /lib/x86_64-linux-gnu/libnss_winbind.so.2 /lib/x86_64-linux-gnu/libnss_winbind.so
ARM:
# ln -s /usr/local/libnss_winbind.so.2 /lib/arm-linux-gnueabihf/
# ln -s /lib/arm-linux-gnueabihf/libnss_winbind.so.2 /lib/arm-linux-gnueabihf/libnss_winbind.so
Готово. Далее переходим к разделу «Тестирование Samba AD DC:«.
Если samba устанавливается на малинку, то
— Через raspi-config не трогать N3 Network interface names, в логах самбы будет ругаться на невозможность найти сетевой интерфейс.
— Не нужно устанавливать через чекинстал, куча конфликтов при установке других пакетов;
— Все настройки сети малинка должна получить от pfsense по dhcp. иначе после рестарта не подключиться.
Особенности использования и настройки:
Static IP-Address:
Status -> DHCP Leases -> Leases - Actions -> + (Add static mapping)
# Static DHCP Mapping on (*Lan Interface)
MAC Address - xx:xx:xx:xx:xx:xx
IP Address - 192.168.5.10
Hostname - rp3
Description - Server
DNS Servers - 192.168.0.251 192.168.1.52
- Save.
- Добавить/Просмотреть статические IP-адреса можно в,
Services -> DHCP Server -> V5_INT - (*Lan Interface)
# DHCP Static Mappings for this Interface
DNS Resolver:
Чтобы в свойствах сетевого подключения, на машине с Windows, вручную не прописывать статический DNS-Server 192.168.5.10, или например, не выдавать этот же IP-адрес DHCP-сервером.
Services -> DNS Resolver -> General Settings - > Domain Overrides -> Add
# Domains to Override with Custom Lookup Servers
Domain - net.lan
IP Address - 192.168.0.251
Description - Samba AD DC
- Save.
Управление доступом к файловым серверам Samba в домене Windows на базе AD / Хабр
Мы продолжаем серию статей про взаимодействие Linux и Windows. Эта статья посвящена управлению доступом к серверам Samba из домена AD.
В отличие от предыдущих статей, где в качестве примера использовалась тестовая сеть, эта статья базируется на реальной, «боевой» сети Московского энергетического института. В сети МЭИ зарегистрировано около 25000 пользователей. Сеть объединяет все учебные корпуса МЭИ с более чем 4500 рабочими станциями. Мы рассмотрим настройку доступа к серверу Samba, предоставляющему пользователям следующие услуги:
•доступ к персональному каталогу пользователя;
•доступ к общим каталогам;
•управление доступом как с использованием средств Samba, так и с использованием средств Windows.
Про сеть МЭИ
Информационно-вычислительная сеть Московского энергетического института (ИВС МЭИ) использует доменную структуру Windows на базе AD. Наша сеть поддерживает несколько доменов. Доменом верхнего уровня является домен mpei.local. Домен public.mpei.local предназначен для пользователей МЭИ, домен init.mpei.local предназначен для сотрудников Информационно-вычислительного центра МЭИ.
Сервер, который мы настраиваем, представляет собой кластерное файловое хранилище и предназначен для размещения каталогов пользователей — сотрудников ИВЦ МЭИ и сотрудников МЭИ (пользователи домена INIT и PUBLIC) и общих каталогов. Операционная система сервера — Ubuntu Linux 12.04 LTS.
•Backups Предназначен для хранения резервных копий. Доступ к каталогу имеют администраторы доменов.
•Каталоги ISOs и Software Предназначены для хранения образов дисков дистрибутивов операционных систем и другого программного обеспечения, используемого в ИВС МЭИ. Информация, размещенная в этих каталогах, доступна всем пользователям, но запись разрешена только администраторам доменов.
•Каталог VMImages Предназначен для хранения образов виртуальных машин, применяемых в ИВС МЭИ. Этот каталог доступен всем пользователям, запись разрешена только администраторам доменов.
•Каталоги пользователей Предназначены для размещения файлов пользователей.
Кластерное файловое хранилище создано на основе распределенного объектового хранилища и файловой системы Ceph. Более подробно о Ceph можно прочесть на сайте проекта — www.ceph.com. В состав хранилища входят три сервера, которые одновременно являются хранилищами объектов и управляют размещением данных. Доступ к файловой системе хранилища осуществляется через шлюз, который является клиентом хранилища Ceph с одной стороны, а с другой — предоставляет доступ к этому хранилищу через Samba. Шлюзовая машина представляет собой виртуальную машину на базе KVM, работающую на серверах с Ceph. Именно эта шлюзовая машина и будет тем сервером, который мы настраиваем для организации доступа. Операционная система — тоже Ubuntu Linux 12.04 LTS. Наш сервер называется filer.mpei.local.
Способ организации кластерного файлового хранилища не является определяющим для решения задачи управления доступом. Для создания такого хранилища могут быть использованы самые различные технологии и их реализации.
Необходимо отметить, что в нашей сети зарегистрировано большое количество пользователей — около 25000. Поэтому создание каталогов для них является весьма трудоемкой задачей. При этом далеко не все пользователи будут иметь свои каталоги на файловом хранилище. Отсюда следует, что создание каталогов должно производиться автоматически, при первом соединении пользователя с сервером. Способ автоматического создания каталогов пользователей при использовании командной оболочки Linux рассматривался ранее в статье про настройку CentOS. В нашем случае такой метод неприменим, поскольку институтская сеть объединяет пользователей с различным опытом работы и знанием операционных систем. Создание каталога при первом подключении должно быть прозрачно для пользователя и не зависеть от операционной системы сервера.
Способ включения сервера Samba на базе Ubuntu Linux уже рассматривался раньше. Мы включаем наш сервер в домен верхнего уровня mpei.local. Для авторизации пользователей мы будем использовать winbind.
Поскольку у нас используется несколько доменов, то целесообразно в разделе глобальной конфигурации Samba в файле smb.conf указать:
winbind use default domain = no
Отключив эту опцию, мы поясняем Samba, что пользователи без указания доменного имени будут рассматриваться как локальные пользователи сервера, а для остальных случаев необходимо указывать доменное имя. Это необходимо сделать, поскольку пользователи могут иметь совпадающие имена в различных доменах.
При правильном включении сервера filer в домен в ответ на запрос getent passwd мы должны увидеть список пользователей всех доменов, а в ответ на запрос getent group — список групп всех доменов. Если это не так, следует проверить содержимое файла /etc/nsswitch.conf, который должен выглядеть так:
root@filer:~# cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
root@filer:~#
Следует проверить, как авторизуются пользователи Samba. Для этого посмотрим содержимое файла /etc/pam.d/samba:
root@filer:~# cat /etc/pam.d/samba
@include common-auth
@include common-account
@include common-session-noninteractive
root@filer:~#
Как видно, файл очень простой и состоит из ссылок на файлы /etc/pam.d/common-auth, /etc/pam.d/common-account и /etc/pam.d/common-session-noninteractive.
Соответственно, следует проверить и содержимое этих файлов, на предмет использования ими модуля pam_winbind.so. В подавляющем большинстве случаев нет необходимости править содержимое файлов системы PAM, расположенных в /etc/pam.d. Но у нас есть требование автоматического создания каталогов пользователей при первом входе в систему. Для нашей конфигурации в файл /etc/pam.d/common-session-noninteractive нужно добавить строку
session required pam_mkhomedir.so skel=/etc/skel umask=0077
Можно включить эту строку и в файл /etc/pam.d/common-session. Наличие этой строки вызывает модуль pam_mkhomedir.so (более подробно можно прочесть на http://manpages.ubuntu.com/manpages/maverick/man8/pam_mkhomedir.8.html или http://www.ibm.com/developerworks/ru/library/l-pam/index.html) для автоматического создания домашнего каталога пользователя при входе в систему.
В результате вывод команды getent passwd должен выглядеть примерно так:
PUBLIC\khorkov:*:28972:10007:Хорьков Сергей Николаевич:/ceph/home/PUBLIC/khorko :/bin/bash
Поля соответствуют полям файла /etc/passwd, стандартного места хранения данных о пользователях в системах Linux и Unix. Поля именуются так:
•login name
•optional encrypted password
•numerical user ID
•numerical group ID
•user name or comment field
•user home directory
•optional user command interpreter
При подключении к домену Windows на базе AD поле login name представляет собой комбинацию имени домена и имени пользователя, где разделителем является либо обратный слэш (\), либо символ, определенный в опции winbind separator.
Поле password представляется символом *, что означает внешний источник паролей.
Значения полей UID и GID формируются на основе опций idmap uid и idmap gid (или idmap config) файла конфигурации Samba.
Поле user home directory формируется на основе опции template homedir файла конфигурации Samba. А поле user command interpreter — на основе значения опции template shell файла конфигурации Samba.
На основании этого вывода мы можем сказать, что домашний каталог для пользователя khorkov в домене PUBLIC будет /ceph/home/PUBLIC/khorkov. Именно этот каталог и должен автоматически создаваться. Таким образом, наш файл /etc/samba/smb.conf в разделах global и homes выглядит следующим образом:
[global]
log file = /var/log/samba/log.%m
obey pam restrictions = yes
map to guest = bad user
encrypt passwords = true
dns proxy = no
netbios name = Filer
server string = %h server (Samba, Ubuntu)
unix password sync = yes
workgroup = MPEILOCAL
os level = 20
security = ads
syslog = 4
panic action = /usr/share/samba/panic-action %d
usershare allow guests = yes
max log size = 1000
pam password change = yes
realm = MPEI.LOCAL
idmap uid = 10000-50000
idmap gid = 10000-50000
template shell = /bin/bash
template homedir = /ceph/home/%D/%U
winbind enum groups = yes
winbind enum users = yes
winbind refresh tickets = yes
acl compatibility = auto
map acl inherit = yes
usershare path = /var/lib/samba/usershares
[homes]
comment = Home Directories
browseable = no
path = /ceph/home/%D/%U
read only = no
create mask = 0700
directory mask = 0700
valid users = PUBLIC\%S INIT\%S
Большая часть параметров уже рассматривалась в предыдущих статьях (например, http://habrahabr.ru/post/171057/ или http://habrahabr.ru/post/143190/). Остановимся подробнее на тех опциях, которые имеют значение для безопасности и управления доступом.
Опция obey pam restrictions = yes дает директиву серверу Samba подчиняться указаниям, изложенным в директивах pam для учетных записей пользователей и сессий. В нашем случае — мы согласны с командой на создание домашнего каталога.
Опции acl compatibility = auto и map acl inherit = yes разрешают серверу Samba устанавливать режим совместимости списков доступа к файлам и наследование списков доступа. Эти параметры имеют важное значения для поддержки Samba управления доступом от Windows-клиентов. Для корректной работы необходимо, чтобы файловая система, на которой размещен разделяемый ресурс Samba, поддерживала POSIX ACL. Для этого необходимо установить соответствующие пакеты в Linux (для Ubuntu это acl и attr).
Далее, в секции [homes] определяются каталоги пользователей. Путь к каталогам определяется опцией path. В файле конфигурации Samba действуют правила подстановки. В частности, %D заменяется на краткое имя домена, %U — на имя пользователя, %S — на имя сессии (совпадает с именем пользователя). Доступ к каталогам определяется для чтения-записи, о чем говорит опция read only = no. Опция valid users описывает список пользователей, которым разрешен доступ (регистрация) к этому каталогу. Важное значение имеют опции create mask (маска прав при создании файла) и directory mask (права при создании каталога). В любом случае владельцем домашнего каталога, создаваемых файлов и каталогов будет пользователь, соединившийся с ресурсом. При этом uid и gid пользователя определяются в соответствии с результатом команды getent passwd.
Учтите, что в 99% случаев имя группы будет \Domain users. Указанные значения 0700 дают пользователю полные права на доступ к файлам или каталогам и запрещают доступ всем остальным (в том числе и группе). Для разрешения доступа группе на чтение третий октет должен быть равен либо 4 (чтение), либо 5 (чтение и исполнение). Об определении прав доступа в Linux можно прочесть в любой книге по этой операционной системе.
Значения опции valid users ограничивает список пользователей, имеющих доступ к каталогу, пользователями доменов INIT и PUBLIC.
Теперь перейдем к настройкам общих каталогов на примере настройки каталога Software:
[Software]
browseable = yes
comment = Various soft
read only = yes
valid users = MPEILOCAL\%U PUBLIC\%U INIT\%U
path = /ceph/data/Software
inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes
nt acl support = yes
write list = @"MPEILOCAL\enterprise admins" @"PUBLIC\Domain admins" @"IN
IT\Domain admins" PUBLIC\khorkov
admin users = PUBLIC\khorkov
hide unreadable = yes
Описание пути к разделяемому каталогу и ограничения для пользователей мы уже рассматривали. Опция nt acl support = yes дает директиву Samba отображать права доступа Windows на права доступа Linux. Опции inherit acls = yes, inherit owner = yes, inherit permissions = yes и map acl inherit = yes указывает на поддержку Samba наследования прав и списков доступа. Опция hide unreadable = yes скрывает от пользователя нечитаемые каталоги и файлы.
Опция admin users задает список пользователей, имеющих административные права (права суперпользователя). Опция write list задает список пользователей, имеющих права записи в этот каталог. При создании каталога следует определить его принадлежность. Большей частью достаточно владельцем назначить root, а группу определить как Domain users (в нашем случае — как MPEILOCAL\Domain users). Списки пользователей могут задаваться как в виде DOMAIN\user (пользователи домена), так и в виде user (пользователи самого сервера). Можно задавать их и в виде наименований групп, предваряя имя группы символом @. В списке поля разделяются пробелами. Имена групп Windows, в случае, когда они состоят из более чем одного слова, следует заключать в кавычки. В нашем примере мы дали разрешение на чтение каталога Software всем пользователям доменов MPEILOCAL, INIT и PUBLIC, а право на запись — для администраторов доменов. Остальные каталоги (Backups, ISOs и VMimages) настраиваются аналогично вышеприведенному примеру.
Подключимся к серверу filer (рис. 1).
Рис. 1. Доступ к серверу Samba.
Проверим доступ к домашнему каталогу (рис. 2).
Рис. 2. Доступ к домашнему каталогу.
Можно проверить права доступа на создание и удаление файлов и каталогов. Домашний каталог с точки зрения Linux выглядит следующим образом:
root@filer:~#
root@filer:~# ls -l /ceph/home/PUBLIC/khorkov
total 0
drwx------ 1 PUBLIC\khorkov PUBLIC\domain users 45360157 Oct 11 19:36 For Cisco
root@filer:~#
Как видим, права на любые действия с файлами принадлежат только владельцу. Если сейчас попытаться внести изменения в настройки доступа средствами Windows, то мы получим ошибку о запрете записи (рис. 3).
Рис. 3. Ошибка задания прав.
Эта ошибка задания прав на каталог, к которому пользователь имеет все права, возникает потому, что файловая система, где размещен каталог, не поддерживает списки доступа. На файловой системе с поддержкой списков доступа такой ошибки не возникает. Проверить наличие этой поддержки можно командой:
root@filer:~# tune2fs -l /dev/sda1
tune2fs 1.42 (29-Nov-2011)
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: e4136579-9486-4e54-a8cf-6b28d4015e92
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Здесь мы видим, что файловая система на устройстве /dev/sda1 поддерживает управление доступом. Включение поддержки acl возможно при монтировании файловой системы Linux, либо через утилиту tune2fs. Список файловых систем, поддерживающих acl, можно узнать в справочном руководстве (man) по команде mount в разделе FILESYSTEM SPECIFIC MOUNT OPTIONS.
Можно посмотреть и сами списки доступа, командой
root@filer:~# getfacl /srv
getfacl: Removing leading '/' from absolute path names
# file: srv
# owner: root
# group: root
user::rwx
user:MPEILOCAL\134horkovsn:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:MPEILOCAL\134horkovsn:rwx
default:group::---
default:mask::rwx
default:other::---
root@filer:~#
Для задания списков доступа из командной строки Linux можно воспользоваться командой setfacl или командой smbcacls. Правда, интерфейс этих команд достаточно сложный, и целесообразнее использовать окно настроек доступа Windows.
Мы предоставляли управление доступом к серверу Samba в основном через редактирование файла /etc/samba/smb.conf. Это один из самых простых и эффективных способов. Существует масса графических приложений для настройки Samba, поставляемых вместе с дистрибутивом Linux. Можно также использовать web-средства управления, такие как swat или webmin. Достоинством swat, например, является встроенная документация — не нужно постоянно переключаться между настройками и справочным руководством. Но и swat, и webmin грешат ошибками в настройках.
Заключение
Таким образом, мы успешно выполнили задачу по настройке доступа к файловому серверу Samba в домене Windows на базе AD.
Работа выполнена на базе Информационно-вычислительного центра МЭИ.
Мы будем рады вашим замечаниям и предложениям. У нас есть возможности собрать тестовую сеть, на которой отладить различные варианты и конфигурации систем для обеспечения их взаимодействия.
Ubuntu — Подробная информация о пакете system-config-samba в xenial
Ссылки для system-config-samba
Ресурсы Ubuntu:
Загрузить пакет исходного кода system-config-samba:
Сопровождающий:
Пожалуйста, подумайте о том, чтобы зарегистрировать ошибку или задать вопрос через Launchpad, прежде чем связываться с сопровождающим напрямую.
Исходный сопровождающий (обычно из Debian):
Обычно пользователям не требуется связываться с первоначальным сопровождающим.
Подобные пакеты:
Графический интерфейс для управления папками и пользователями samba
Другие пакеты, относящиеся к system-config-samba
- деп .:
питон - интерактивный объектно-ориентированный язык высокого уровня (версия по умолчанию)
- деп .:
- деп .:
python-glade2 - Крепления GTK +: Опора Glade
- деп .:
- деп .:
python-libuser - Библиотека администрирования учетных записей пользователей и групп — интерфейс Python
- деп .:
- деп .:
самба - Файл SMB / CIFS, сервер печати и входа в систему для Unix
- деп .:
Скачать system-config-samba
Архитектура | Размер упаковки | Установленный размер | Файлы |
---|---|---|---|
все | 259.4 кБ | 4,502,0 кБ | [список файлов] |
.
system-config-samba [Wiki ubuntu-fr]
Конфигурация сервера Samba , или system-config-samba — это графическая утилита, используемая для настройки параметров сервера Samba.
Чтобы получить готовый набор пакетов, установите пакет system-config-samba .
Ошибка empêche system-config-samba de se lancer. Достаточно пройти по команде в терминале для решения проблемы (подробности в сообщении):
sudo touch / etc / libuser.conf
Il est consillé de le lancercomsuit dans un terminal (fonctionne parfaitement après Avoir appliqué la ligne de commande ci-dessus)
Судо система-конфигурация-самба
Для установки необходимо выполнить поиск в приложениях с одним клиентом samba для установки system-config-samba (icône «Samba»).
Si elle n’apparaît pas dans la liste, il faut la lancer avec pkexec suivi par:
системные конфигурации-самба
Оу avec sudo.
Это возможно (Bionic), которое можно использовать в меню с искусственным набором функций для подавления gksudo.Donc lancer a la main avec sudo (ça plante parfois avec pkexec).
Основной принцип system-config-samba является составной частью списка досье на Samba. La liste des досье partagés est constituée:
Некоторые досье готовятся к употреблению в чистом виде! Комментарий cela se fait-il?
L’outil system-config-samba ne list que les partages administratifs ( share ), c’est-à-dire les dossiers partagés qui sont inscrits dans le fichier de configuration / etc / samba / smb.conf . Не содержит списков пользователей ( пользователей, ), а также других пользователей.
Добавить модификатор или часть
Dans la fenêtre «Créer un partage Samba» предложение, dans l’onglet Basique :
- Dans l’onglet Accès , sélectionnez un ou des comptes d’utilisateurs Samba qui peuvent acéder au dossier partagé:
Appuyez sur le bouton Valider pour prendre en compte le nouveau partage administratif.Patientez quelques second, временные изменения, внесенные в регистрацию в системе Samba и ее исправление. Le nouveau dossier partagé apparaît désormais dans la liste des partages.
Supprimer un partage
Залейте раздел досье, выберите часть актуального досье в списке административных разделов, выберите место встречи в меню Fichier et sélectionnez Supprimer .L’arrêt du partage du dossier se produit immédiatement, sans aucune confirm Supplémentaire. Patientez quelques поддерживает подвеску, которая вносит изменения в приложения в соответствии с конфигурацией Samba и обслуживает Samba в обновленном состоянии.
Notez que la suppression d’un dossier partagé ne fait qu’arrêter le partage du dossier avec les autres ordinateurs du réseau local. Dans l’ordinateur serveur, le dossier reste inchangé. Si vous désirez aussi supprimer completement le dossier du serveur Samba, vous devrez procéder manuellement à sa подавление в l’aide de votre navigateur de fichiers.
Определенные базовые параметры службы Samba должны быть изменены в помощнике system-config-samba . Pour ce faire, rendez-vous dans le menu Préférences et sélectionnez l’entrée de menu Paramètres du serveur… .
Dans l’onglet Basique :
Dans l’onglet Sécurité :
Приложение на бутоне Valider для внесения изменений в конфигурацию сервера Samba.Patientez quelques поддерживает кулон, который вносит изменения в конфигурацию Samba и обновляет сервис Samba.
Samba n’utilise pas la même list de comptes d’utilisateurs et de mots de pas que le système Ubuntu. L’outil de configuration du serveur Samba (system-config-samba) fonctionne mal pour la récupération des mots de pas de utilisateurs de Ubuntu, aussi il est instinderable de ressaisir les mots de pas de tous les utilisateurs, в состав которого входит администратор, в предварительных настройках system-config-samba.Залейте администраторов-утилизаторов базы самбы, встречи в меню Преференции и выберите пункт меню Утилизаторы самбы… . À проходит через этот интерфейс, вы можете использовать его для вычислителей или пенсионеров в базе данных Samba.
В Ubuntu 14.04 (для версии), он представляет собой сборник, созданный в списке пользователей, работающих с приложениями в группе plugdev , которые не могут быть подключены к сети.
Заливка ce faire, taper dans un terminal:
sudo adduser nom_du_compte_a_ajouter_au_groupe plugdev
Утилита другого графического интерфейса: объединение вычислений в группу
.