Привет Хабр!
После активности шифровальщика Petya 27.06.2017, я отключил SMB1 он же CIFS, и получил производственное оборудование и сетевые МФУ которые не умеют работать на «новых» версиях SMB протокола.
Как тогда получать данные с «старых» устройств? Как показала практика, отдельная «машина» с Windows не выход, во время атаки кроме доменных «машин» пострадали также не включенные в домен, по этому, а также по лицензионным соображениям я решил использовать Linux.
Под катом находится пошаговая инструкция по установке и настройке файлового сервера SAMBA на базе CentOS 7:
— Анонимный доступ
— Аутентификация и авторизация
— Интеграция с Active Directory
Установка 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
Получение ip адреса по DHCP
Если по какой-то причине в сети нету DHCP сервера, вам стоит его поднять. Работать с большим количеством VM без DHCP не удобно.
Для принудительного обновления или получения ip адреса выполните команду
dhclient
Показать ip адрес
ifconfig
или
nmcli device show
YUM
CentOS 7 использует пакетный менеджер YUM. Шпаргалка по yum находится тут.
Если выход в интернет организован через прокси сервер, добавьте адрес прокси в файл конфигурации /etc/yum.conf, используйте редактор vi или следующую команду
echo proxy=http://your.proxy:8888 >> /etc/yum.conf
В случае использования логина и пароля для доступа к прокси серверу, добавьте следующие параметры:
proxy_username=yum-user
proxy_password=qwerty
Установка на VM агентов для взаимодействия с хост сервером
Для VMware ESXi необходимо установить open-vm-tools
yum install open-vm-tools
Для Hyper-V, hyperv-daemons
yum install hyperv-daemons
Установка обновлений
Очень важно установить все доступные обновления
yum update
Midnight Commander
Редактировать файлы без нормального редактора очень не удобно, и я предлагаю использовать mc и mcedit
yum install mc
Настройка сети
Для настройки статического ip адреса и имени хоста можно использовать утилиту nmtui
В командной строке список сетевых адаптеров можно получить командой
nmcli device status
Статический ip и gateway задается следующей командой, где «ens192» это имя сетевого адаптера
nmcli connection modify “ens192” ipv4.addresses “192.168.1.100/24 192.168.1.1”
Настройка FQDN
Пусть полное имя хоста будет ls01.fqdn.com, выполняем команду
hostnamectl set-hostname ls01.fqdn.com
Перезагружаем службу имен
systemctl restart systemd-hostnamed
Проверить результат можно следующими командами
hostnamectl status
hostname
hostname -s
hostname -f
ipv6
Если протокол ipv6 не используется, логично его отключить, для этого нужно добавить два параметра в файл /etc/sysctl.conf, выполните следующие команды или используйте редактор mcedit
echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf
echo net.ipv6.conf.default.disable_ipv6 = 1 >> /etc/sysctl.conf
Перезагрузите службу сети
service network restart
SELINUX
На данном этапе службу SELINUX необходимо отключить, проверить статус службы SELINUX можно командой
sestatus
Измените значение SELINUX в файле /etc/selinux/config на SELINUX=disabled затем перезагрузите сервер.
reboot
Вернусь к SELINUX в конце статьи.
SAMBA
Установка
yum install samba
Добавление службы в автоматический запуск
chkconfig smb on
Запуск службы и проверка состояния
service smb start
smbstatus
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
Общий ресурс с анонимным доступом
Создаем папку для ресурса /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
Меняем содержание оригинального файла на следующее
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
min protocol = NT1[guest]
path = /samba/guest
guest ok = Yes
writable = Yes
На всякий случай я указал минимальную версию протокола SMB=NT1. Если вы укажите SMB2 или SMB3, клиенты с Windows XP и ниже не смогут получить доступ к ресурсам.
Проверка параметров и перезагрузка службы
testparm
service smb restart
smbstatus
Поздравляю вас, достигнут первый уровень посвящения. Общий ресурс с анонимным доступом настроен, будет работать долго и надежно. Но можно и нужно настроить еще несколько вещей.
Бантики
По умолчанию лог файлы находятся в папке /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, я предполагаю что вы знаете за что отвечает fstab.
mcedit /etc/fstab
Добавляем следующие строки
/etc/samba /samba/smbconf none bind 0 0
/var/log/samba /samba/smblogs none bind 0 0
Монтируем без перезагрузки
mount -a
Подключение диска
Держать ресурс с общим доступом на системном диске без квоты, не лучший выбор. С квотами я решил не связываться, мне проще подключить отдельный «физический» диск.
Для получения списка устройств можно использовать команду 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
Подключение образа диска
Если вам не нужны большие объемы, и достаточно ресурса размером ххх мб, можно подключить образ диска из файла.
Создаем каталог для хранения образов
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
Подключение RAM диска
Для временных ресурсов где не нужен большой объем, как мне кажется RAM диск это наилучший вариант, очень быстро и просто настраивается, а скорость работы поражает воображение.
Редактируем fstab
mcedit /etc/fstab
Конфиг для RAM диска
none /samba/guest tmpfs defaults,size=100M 0 0
Монтирование
mount -a
Проверяем результат
df -h
Удаление старых файлов
В случае «файлопомойки» ресурсы нужно как-то освобождать, для этого можно использовать планировщик задач 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
<ESC>
:wq
Логи службы crontab находятся в файле /var/log/cron
Ограничение доступа к 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
Аутентификация и авторизация пользователей
Ограничение доступа по ip адресам не всегда удобно или возможно, тогда можно использовать логины и пароли.
Сначала необходимо создать локального пользователя в системе
adduser user1
Если пользователь будет работать только с SAMBA ресурсами, задавать ему пароль для системы нет необходимости. Пароль для системы и для SAMBA хранятся в разных файлах и могут отличаться.
Затем необходимо добавить системного пользователя в пользователи самбы и задать ему пароль
smbpasswd -a user1
По умолчанию для хранения паролей используется файл формата tdb, которые расположен в каталоге /var/lib/samba/private/
Изменить каталог расположения файла можно глобальным параметром passdb backend
[global]
passdb backend=tdbsam:/etc/samba/smbpassdb.tdb
tdb файлы были созданы для замены «устаревших» текстовых, если вы хотите использовать текстовые файлы, для этого используйте параметр passdb backend=smbpasswd в разделе global
passdb backend=smbpasswd:/etc/samba/smbpasswd
Затем укажите списки пользователей и групп для доступа к ресурсам
[guest]
path = /samba/guest
writable = no
read list = user1, @group2
write list = user2, user3
Интеграция с Active Directory
Также есть возможность получать информацию о пользователей из LDAP, но мне этот вариант не интересен и я сразу перехожу к AD. Подробная инструкция от Microsoft находится тут.
Для AD очень важна синхронизация времени, по этому стоит начать с этого.
Установка соответствующей службы
yum install ntp
Добавляем в конфиг файл /etc/ntp.conf сервера выполняющих роль домен контроллеров
mcedit /etc/ntp.conf
Пример:
server 192.168.1.10
server 192.168.1.20
server someserver.contoso.com
Добавляем службу ntp в автоматический запуск
chkconfig ntpd on
Запускаем службу
service ntpd start
Проверяем синхронизацию времени
ntpq –p
winbind
Для получения информации о пользователях из AD необходимо установить пакет samba-winbind
yum install samba-winbind
Добавляем службу в автоматический запуск
chkconfig winbind on
Запускаем службу
service winbind start
Добавление хоста в AD
Напомню что в начале даной инструкции задали имя хоста ls01.fqdn.com. Будем считать что полное имя домена fqdn.com, а короткое пусть будет fqdn_com
Для внесения всех необходимых параметров в конфигурационные файлы можно воспользоваться утилитой authconfig-tui, установите флажок Use Winbind, затем перейдите на следующее окно
Выберите модель безопасности ADS и укажите имена вашего домена. В поле домен контролер укажите “*”, это необходимо для автоматического поиска доступного домен контроллера. Затем нажмите ОК и закройте утилиту.
Для добавления хоста в AD используйте команду net ads join –U %username%, пользователь должен обладать правами на создание учетной записи ПК в домене
net ads join –U youruser
Если машина не добавляется в домен, добавьте FQDN имя хоста в файл /etc/hosts.
Я несколько раз все проверял, и в файл hosts я вносил изменения когда на этапе настройки сети задавал не полное имя хоста.
Для того чтобы вывести хост из домена используйте команду net ads leave –U %username%
Что делает утилита authconfig-tui?
Утилита добавляет параметры для подключения к AD в следующие файлы, параметров не много и при желании можно забить все руками.
/etc/krb5.conf
[libdefaults]
Default_realm = FQDN.COM[realms]
FQDN.COM = {
kdc = *
}
/etc/nsswitch.conf
passwd: files sss winbind
shadow: files sss winbind
group: files sss winbind
/etc/samba/smb.conf
[global]
workgroup = FQDN_COM
password server = *
realm = FQDN.COM
security = ads
idmap config *: range = 16777216-33554431
template shell = /sbin/nologin
kerberos method = secrets only
winbind use default domain = false
winbind pffline logon = false
Вы могли заметить что данная утилита вносит заметно меньше параметров чем написано в инструкции от Microsoft или других инструкциях, но если так работать – то почему бы и нет?
Из инструкции Microsoft я добавляю следующие параметры в конфиг
[global]
domain master = no
local master = no
preferred master = no
os level = 0
domain logons = no
Настройка прав доступа на ресурс
В качестве примера и для наглядности рекомендую настроить ресурсы с разными правами на одну папку
[domain users read only]
path = /samba/guest
read list = «@fqdn_comdomain users»
force create mode = 777
directory mask = 777[domain users writable]
path = /samba/guest
read list = «@fqdn_comdomain users»
write list = «@fqdn_comdomain users»
force create mode = 777
directory mask = 777
Перезапускаем службу samba
service smb restart
Проверяем
smbstatus
На скриншоте видно пользователя домена который находится в одной из общих папок
THE END
Список полезных ссылок:
Боремся с вирусами и инфраструктурой, или отключение SMB v1
Критическая уязвимость SambaCry: как защититься
How to Fix SambaCry Vulnerability (CVE-2017-7494) in Linux Systems
Yum, шпаргалка
Команда dd и все, что с ней связано
Using Samba, 2nd Edition
Включение Samba-сервера на базе Ubuntu в домен AD
Setting Up Samba and Configure FirewallD and SELinux to Allow File Sharing on Linux/Windows Clients
SELinux — описание и особенности работы с системой. Часть 1
SELinux — описание и особенности работы с системой. Часть 2
P.S.
Вернемся к SELINUX, чтобы SAMBA сервер мог предоставить доступ к любым каталогам необходимо выполнить следующие команды
setsebool -P samba_export_all_ro=1
setsebool -P samba_export_all_rw=1
К сожалению я так и не смог настроить работу winbind при включенном SELINUX, если подскажете как, я буду благодарен.
Содержание
- Устанавливаем и настраиваем файловый сервер в Linux
- Шаг 1: Предварительная настройка Windows
- Шаг 2: Установка Samba в Linux
- Шаг 3: Создание глобальных настроек
- Шаг 4: Создание общедоступной папки
- Шаг 5: Создание защищенной общедоступной папки
- Вопросы и ответы
Чаще всего файловый сервер в Linux используется в рамках локальной или другой общей сети для взаимодействия с компьютерами на базе Windows. Он может быть установлен в дистрибутивах по умолчанию, но это происходит не всегда, к тому же конфигурация такого сервера будет стандартной. Сегодня предлагаем узнать все об инсталляции и основной настройке файлового сервера на примере самой популярной утилиты под названием Samba. Мы разделим это руководство на шаги, чтобы начинающим пользователям было проще ориентироваться во всех необходимых для выполнения действиях.
Хоть сегодняшний материал и будет сосредоточен на управлении дистрибутивами Linux, не обойдем стороной и Виндовс, поскольку для начала вам придется выполнить простейшие манипуляции в этой ОС, чтобы в будущем настройка прошла успешно и не возникло никаких проблем с подключением к группе. За пример мы взяли связку Windows 10 и Ubuntu. Если вы используете другие ОС, просто придерживайтесь особенностей их реализации, которые не должны значительно отличаться от того, что вы увидите далее.
Шаг 1: Предварительная настройка Windows
При подготовке файлового сервера Samba понажобится указать некоторые данные, связанные с операционной системой Windows. Дополнительно в самом Виндовс требуется разрешить подключение для компьютера с Linux, поскольку изначально соединения будут блокироваться. Все эти процедуры выполняются буквально за несколько кликов и выглядят следующим образом:
- Откройте «Пуск» и запустите оттуда «Командную строку», найдя приложение через поиск.
- Здесь вам потребуется ввести простую команду
net config workstation
и нажать на клавишу Enter. - В отобразившемся списке отыщите строку «Домен рабочей станции» и запомните ее значение.
- Снова в консоли введите
notepad C:WindowsSystem32driversetchosts
для открытия известного файла hosts через стандартный «Блокнот». - Здесь в конце вставьте строку
192.168.0.1 srvr1.domain.com srvr1
, заменив IP на адрес компьютера с Samba, и сохраните все изменения.
На этом работа с Windows заканчивается. После вы сможете вернуться в эту ОС для настройки общего доступа и управления открывшимися папками, но пока это недоступно, поскольку конфигурация файлового сервера в Линукс еще не произведена. Этим мы и предлагаем заняться в следующих шагах.
Шаг 2: Установка Samba в Linux
Начнем с непосредственной установки Samba в Линукс. Использовать для этого мы будем официальные репозитории, поэтому перед началом убедитесь, что подключение к интернету находится в активном состоянии. После этого следуйте расписанной ниже инструкции.
- Откройте меню приложений и запустите «Терминал».
- Здесь потребуется ввести команду
sudo apt-get install -y samba samba-common python-glade2 system-config-samba
. Она отвечает за инсталляцию дополнительных компонентов вместе с файловым сервером. - Подтвердите подлинность учетной записи суперпользователя, написав пароль. Символы, вводимые в эту строку, на экране не отображаются, поэтому не стоит переживать из-за того, что букв или цифр не видно.
- Затем начнется процедура получения и распаковки архивов. Она может занять несколько минут, во время этой операции лучше не выполнять других действий и не закрывать консоль. Если появилась новая строка ввода, значит, инсталляция успешно завершена.
Больше ничего устанавливать не придется, а сервер будет запущен автоматически, поэтому можно смело переходить к его настройке, чему и посвящены наши следующие шаги.
Шаг 3: Создание глобальных настроек
Сразу же после инсталляции Samba в ней не будет никаких параметров, отвечающих за поведение, поэтому придется добавлять их собственноручно, вводя строки в конфигурационный файл. Неопытным юзерам может показаться, что выполнить эту задачу будет очень сложно. Мы же предлагаем взять наш шаблон, заменив лишь пользовательские значения.
- Иногда какие-то важные параметры в конфигурационном файле все же присутствуют по умолчанию, из-за чего возникает надобность создать его резервную копию, чтобы восстановить ее при возникновении случайных сбоев. Осуществляется это путем ввода всего одной команды
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
. - Все остальные действия будут производиться через текстовый редактор. Оптимальным вариантом в этом случае является nano. Если данное приложение отсутствует в вашем дистрибутиве, добавьте его через
sudo apt install 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
для создания новой папки. Ее имя вы можете поменять на любое удобное. - Данное действие выполняется вместе с аргументом sudo, а это значит, что придется ввести пароль для подтверждения учетной записи.
- После переходите к настройке общего доступа для созданной директории. Для начала переместимся в корень Samba через
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 осуществляется путем перехода по \srvr1allaccess
. Сейчас по тому же примеру, который мы привели в предыдущем этапе, разберем значение каждого устанавливаемого параметра:
- path. Как вы видите из значения, здесь указывается путь к созданной общедоступной директории.
- browsable. Этот параметр отвечает за отображение директории в списке разрешенных.
- writable. Отметьте значение
yes
, если вы хотите разрешить создание записей в этой папке. - guest ok. Данная строка отвечает за гостевой доступ.
- read only. Если вы знаете перевод этой фразы, то уже догадываетесь, что произойдет, если активировать параметр. Он отвечает за атрибут «Только чтение» для указанной директории.
Шаг 5: Создание защищенной общедоступной папки
В качестве последнего этапа нашей сегодняшней статьи мы решили взять пример создание защищенной директории для общего доступа. В предыдущем шаге уже рассказано о том, как создаются полностью анонимные папки, однако их недостаток заключается в отсутствии защиты, поэтому в большинстве случаев юзеры предпочитают работать с безопасными каталогами, а их создание осуществляется так:
- Создайте директорию по тому же принципу через
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
. - Введите ключ безопасности в новую строку, а затем подтвердите его.
После внесения всех изменений не забывайте перезагружать сервер, чтобы все они вступали в действие. Точно таким же образом вы можете создавать неограниченное количество защищенных общедоступных папок, настраивая для них определенные параметры.
Сегодня мы разобрались в теме файлового сервера для Linux на примере пошагового руководства конфигурации соединения через Samba. Теперь вы можете решить, подходит ли вам такая схема предоставления общего доступа или есть смысл найти другой инструмент, способный предоставить более подходящие настройки.
Файловый сервер работает по протоколу SMB/CIFS и позволяет предоставить доступ к общим ресурсам в локальной сети, например, текстовым файлам или сетевым принтерам. Для его развертывания на Windows используются штатные средства ОС, на Linux используется файловый сервер Samba.
В инструкции рассмотрена настройка файлового сервера на серверах с операционными системами Linux и Windows. На сервере будет находиться 2 каталога – публичный и приватный. К файловому серверу подключение будет происходить как с операционной системы Windows, так и с Linux, т.к. в виртуальной или физической локальной сети могут находиться серверы с разными ОС.
Для начала в панели управления должны быть созданы все необходимые для сети серверы.
После создания необходимо объединить все машины в единую локальную сеть через панель управления в разделе Сети. В результате серверы получат локальные IP-адреса.
После создания частной сети необходимо настроить сетевые адаптеры на каждом сервере. Об этом можно прочитать в наших инструкциях:
Прежде всего, необходимо определиться, на сервере с какой операционной системой будет находиться общий каталог.
Прежде чем приступать к работе продумайте схему хранения данных и доступа к ним. Существую разные типы данных, которые мы будем характеризовать по интенсивности доступа к ним, скажем “холодные данные” отличаются тем, что обращения к ним происходят крайне редко (а к некоторым вообще никогда), но при этом они могут занимать значительные объемы. Это прежде всего резервные копии, инсталляционные пакеты, образа дисков и т.д. и т.п.
Противоположность им “горячие данные” – это данные которые интенсивно используются и изменяются, для файлового сервера примером таких данных может служить файловая информационная база 1С:Предприятия. Между ними находятся обычные данные, характер доступа к которым не имеет каких-либо особенностей.
Исходя из типа данных следует выбирать диски для хранения, для “горячих данных” это должны быть быстрые диски или SSD, а для “холодных” подойдут экономичные модели с упором на большой объем. Также не забывайте про RAID, для защиты данных от аппаратного выхода дисков из строя.
Также продумайте структуру директорий и прав доступа к ним. Разумно будет исходить из следующих соображений: разделяйте диски с данными и системой, чтобы при необходимости можно было заменить их без лишних затруднений или перенести на другой сервер. Храните разные типы данных на разных дисках или разделах, скажем, если на разделе для резервных копий закончится свободное место, то это никак не повлияет на работу баз 1С.
В нашем примере мы будем использовать виртуальную машину с двумя жесткими дисками, один для системы, второй для данных, точку монтирования диска для данных мы указали как /samba, вы можете использовать другое имя и расположение.
Также обратите внимание на имя компьютера, Samba 4 будет использовать его в качестве NetBIOS имени.
После установки ОС следует изменить настройку лимита на количество одновременно открытых файлов, в Linux это 1024, а в Windows 16384. Для этого откройте файл /etc/security/limits.conf и добавьте в конце две строки:
После чего сервер следует перезагрузить.
Для развертывания файлового сервера на системах Linux используется инструмент SAMBA. Ниже перечислены действия по его установке и настройке.
Создайте или выберете директорию, к которой все пользователи будут иметь общий доступ:
Создайте или выберете каталог, к которому иметь доступ будут ограниченное число пользователей:
Откройте файл конфигурации на редактирование с помощью текстового редактора, например nano:
[global]workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[public]path = /samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
[private]path = /samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes
Сохраните внесенные изменения, нажав CTRL+X, затем Enter и Y.
Далее нужно настроить firewall, открыв порты, которые использует SAMBA. Настоятельно рекомендуем разрешить только подключения из локального диапазона IP-адресов или виртуальной частной сети. Адресное пространство вашей частной сети вы можете увидеть в панели управления 1cloud.
Замените значение параметра –s в правилах ниже для соответствия адресному пространству вашей частной сети. Как правило префикс сети /24, если вы явно не подразумеваете иного:
iptables -A INPUT -p tcp -m tcp –dport 445 –s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 139 –s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp –dport 137 –s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp –dport 138 –s 10.0.0.0/24 -j ACCEPT
Теперь необходимо сделать так, чтобы указанные выше правила фаервола iptables были сохранены после перезагрузки машины. Для это установим пакет iptables-persistent:
После установки откроется окно с предложением последовать запомнить текущие правила iptables для IPv4 и IPv6. Подтвердите это действие.
В выводе команды вы должны увидеть ранее добавленные разрешающие политики (Accept).
Начнем с самого простого варианта – создадим общий ресурс, доступ к которому может иметь любой пользователь. Для этого добавим в конец файла /etc/samba/smb.conf следующие строки.
В квадратных скобках задаем имя ресурса, все что ниже скобок – секция этого ресурса. В ней мы указали следующие опции:
Теперь создадим саму директорию:
mkdir /samba/public
и установим на нее необходимые права, для гостевого ресурса это 777:
chmod 777 /samba/public
Перезапускаем Samba и пробуем получить доступ с любого Windows-клиента.
Если все сделано правильно, то сервер появится в сетевом окружении, и вы без проблем получите доступ к созданной нами общей папке.
Настройка корзины для общего ресурса
Полезность корзины на файловом сервере, пожалуй не будет отрицать никто. Человеку свойственно ошибаться и будет очень обидно, если ценой ошибки окажется несколько часов работы, но, к счастью Samba позволяет помещать удаленные файлы в корзину.
Для активации корзины добавьте в секцию к общему ресурсу следующие строки:
vfs objects = recycle
recycle:repository = .recycle
recycle:versions = yes
recycle:keeptree = yes
Первая опция добавит в общий ресурс новый объект – корзину, вторая укажет ее расположение – скрытая папка в корне. Две следующих включают сохранение структуры папок при удалении и сохранение нескольких версий файла с одним и тем же именем. Это нужно в тех случаях, когда разные пользователи удалят разные файлы с одним и тем же именем.
Перезапустим Samba и попробуем что-нибудь удалить.
Несмотря на грозное предупреждение Проводника удаляемые файлы перемещаются в корзину, откуда мы их можем восстановить.
Как видим, работать с Samba не просто, а очень просто, при том, что мы оставили за кадром многие возможности тонкой настройки, многие из которых требуют отдельных статей. Надеемся, что данный материал окажется вам полезным и поможет быстро и без проблем развернуть файловый сервер на Linux.
Настройка общего публичного каталога на Windows
Для общего доступа к файлам по сети в Windows используются стандартные средства ОС.
Чтобы пользователи локальной сети могли без пароля подключаться к общему ресурсу, необходимо в панели управления снять ограничения защиты. Откройте панель управления и перейдите в раздел Сеть (Network and Internet) -> Центр управления сетями и общим доступом (Network and Sharing Center) -> Расширенные настройки общего доступа (Advanced sharing settings). В разделе Все сети (All Networks) выберете опцию Отключить доступ с парольной защитой (Turn off password protected sharing) и сохраните изменения.
Далее, чтобы настроить общий доступ к каталогу на Windows необходимо создать или выбрать нужный и открыть его свойства. В свойствах перейдите во вкладку Доступ (Sharing) и нажмите Расширенная настройка (Advanced Sharing).
В открывшемся окне отметьте галочкойОткрыть общий доступ к этой папке (Share this folder), для того чтобы она стала общедоступной. В полеИмя общего ресурса (Share name) введите имя, которое будет видно всем пользователям. Далее нажмитеРазрешения (Permissions)для настройки прав доступа.
Выберете нужные права доступа для всех пользователей (Everyone). НажмитеПрименить (Apply), чтобы изменения вступили в силу.
Теперь в свойствах каталога нажмитеОбщий доступ (Share).
В поле поиска введитеВсе пользователи (Everyone)и нажмитеДобавить (Add). Для полного доступа выберете праваRead/Writeи нажмите Поделиться (Share).
Теперь ваш каталог Windows доступен всем пользователям локальной сети без пароля.
Настройка общего ресурса с парольным доступом
Гостевой доступ это просто и удобно, но не всегда приемлемо. Существуют ситуации, когда доступ к общему ресурсу должны иметь только определенные пользователи. В нашем примере создадим два таких ресурса: для бухгалтерии и для IT-отдела.
Снова откроем конфигурационный файл и добавим в него две секции:
[buch]path = /samba/buch
read only = no
guest ok = no
[adm]path = /samba/adm
read only = no
guest ok = no
Они предельно просты и отличаются запретом гостевого доступа – guest ok = no. Для того, чтобы разделить доступ к ресурсам будем использовать группы пользователей, создадим две новые группы для наших подразделений:
groupadd smbbuch
groupadd smbadm
Теперь создадим каталоги:
mkdir /samba/buch
mkdir /samba/adm
и изменим группу владельца:
chgrp smbbuch /samba/buch
chgrp smbadm /samba/adm
Затем установим права:
chmod 2770 /samba/buch
chmod 2770 /samba/adm
Значение 2770 обозначает что мы предоставляем полные права владельцу и группе, для остальных доступ запрещен. А первая двойка устанавливает SGID для каталога, что обеспечивает присвоение группы каталога каждому создаваемому в нем файлу.
В некоторых случаях определенный интерес представляет выставление дял каталога sticky bit, который означает, что удалить или переименовать файл может только его владелец, но работать с ним, в том числе изменять, может любой пользователь, имеющий права записи в каталог. Для этого вместо набора прав 2770 используйте права 3770.
На этом настройки закончены, не забываем перезапустить Samba. Но в наших группах пока нет пользователей, давайте добавим их туда.
Начнем с уже существующих пользователей, в нашем случае это пользователь andrey, который является главным администратором и должен иметь доступ к обоим ресурсам. Поэтому добавим его в обе группы:
usermod -aG smbbuch andrey
usermod -aG smbadm andrey
Затем добавим его в базу Samba:
smbpasswd -a andrey
При этом потребуется установить пароль для доступа к Samba-ресурсам, он должен совпадать с основным паролем пользователя. После чего включим эту учетную запись:
smbpasswd -e andrey
Проверяем, после ввода пароля мы должны получить доступ к созданным нам ресурсам. Также обратите внимание, после аутентификации в списке общих ресурсов появилась папка с именем пользователя, подключенная только на чтение.
С настройками по умолчанию Samba предоставляет каждому существующему пользователю доступ только на чтение к его домашнему каталогу. На наш взгляд это довольно удобно и безопасно. Если вас не устраивает такое поведение – удалите из конфигурационного файла секцию [homes].
Теперь о других пользователях. Скажем у нас есть бухгалтер Иванова и админ Петров, каждый из которых должен иметь доступ к своему ресурсу. В тоже время иметь доступ к самому Samba-серверу им необязательно, поэтому создадим новых пользователей следующей командой:
useradd -M -s /sbin/nologin ivanova
useradd -M -s /sbin/nologin petrov
Ключ -M заводит пользователя без создания домашнего каталога, а -s /sbin/nologin исключает возможность входа такого пользователя в систему.
Поместим каждого в свою группу:
usermod -aG smbbuch ivanova
usermod -aG smbadm petrov
Затем добавим их в базу Samba, при этом потребуется установить им пароли:
smbpasswd -a ivanova
smbpasswd -a petrov
И включим эти учетные записи
smbpasswd -e ivanova
smbpasswd -e petrov
Если все сделано правильно, то пользователь будет иметь доступ к своим ресурсам и не иметь к чужим.
Также обратите внимание, что несмотря на то, что общий ресурс с именем пользователя создан, доступ он к нему получить не сможет, так как физически его домашняя директория не существует.
Чтобы подключиться к общему каталогу, необходимо установить клиент для подключения:
sudo apt-get install smbclient
Для подключения используйте следующий формат команды:
smbclient -U <пользователь> \<общий каталог=””>
Также можно выполнить монтирование общего каталога, для этого установите дополнительный пакет утилит:
sudo apt-get install cifs-utils
Для монтирования используйте следующий формат команды:
mount -t cifs -o username=<пользователь>,password= ///<общий каталог=””> <точка монтирования=””>
Где – адрес машины, на которой расположена общая директория, а <общий каталог=””> – путь до общей директории.
Например:
mount -t cifs -o username=Everyone,password= //10.0.1.2/Win /root/shares/public
Если общий каталог находится на Linux?
Для подключения к публичной папке не требуется вводить логин или пароль, достаточно в адресную строку ввести нужный ip-адрес без ввода дополнительной информации. Для подключения к приватному каталогу введите логин и пароль пользователя в появившееся окно.
P. S. Другие инструкции:
- Маршрутизация внутри локальной сети на pfSense
- Настройка site-to-site VPN сети с помощью VyOS
- Чек-лист параметров безопасности сервера Windows/Linux
- Как настроить vsftpd на Ubuntu
- Настройка FTP-сервера на Windows Server 2016
Как установить и настроить Samba в Ubuntu
Установка 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 либо с использованием проводника
Редактирование файла конфигурации
Там только один конфигурационный файл , который необходимо отредактировать: /etc/samba/smb.conf.
sudo nano /etc/samba/smb.conf
В разделе [global], убедитесь, что значение workgroup относиться к рабочей группе компьютеров Windows.
workgroup = WORKGROUP
Прокрутите вниз к нижней части файла. (В текстовом редакторе nano, нажмите CTRL+W а затем CTRL+V.) Включите новый раздел, как показано ниже. Замените username на необходимое имя пользователя.
[Home Share ] comment = Home Public Folder path = /home/username/ writable = yes valid users = username
Home Share это имя папки , которое будет отображаться в сети Windows. Комментарием является описание общей папки. Следующие 3 строки указывают, что только указанный пользователь valid users имеет право доступа к каталогу /home/username/, который также доступен для записи. Вышеуказанная конфигурация отключит анонимный доступ.
Сохраните и закройте файл, а затем выполните следующую команду, чтобы проверить, если есть синтаксические ошибки.
testparm
Создание пользователя
Samba содержит по умолчанию user в качестве режима защиты, означает, что клиенты должны ввести имя пользователя и пароль для доступа к общей папке. Чтобы добавить пользователя в Ubuntu, выполните следующую команду:
sudo adduser username
Вам будет предложено установить пароль Unix. Кроме того, необходимо установить отдельный Samba пароль для пользователя с помощью следующей команды:
sudo smbpasswd -a username
Теперь все, что осталось сделать, это перезапустить демон smbd.
sudo systemctl restart smbd
Доступ Samba к общей папки из Windows
На компьютере Windows, который находится в той же сети, откройте проводник и нажмите Сеть на левой панели. Вы увидите сервер самбы. Дважды щелкните общую папку и введите имя пользователя и пароль.
Доступ Samba к ресурсу папке с компьютера Ubuntu
В диспетчере файлов, перейдите на вкладку Сеть на левой панели и выберите Сеть Windows.
Выберите рабочую группу, сервер Samba и общую папку, а затем введите имя пользователя и пароль Samba.
Добавление нескольких пользователей или групп
Если нескольким учетным записям необходимо получение доступа к общей папке, то необходимо изменить правомерных пользователей, как показано ниже в файле /etc/samba/smb.conf.
valid users = user1, user2, user3
Также используйте smbpasswd для установки пароля Samba для каждого из этих пользователей.
sudo smbpasswd -a user1 sudo smbpasswd -a user2 sudo smbpasswd -a user3
Для того, чтобы разрешить группе пользователей получить доступ к общей папке, используйте следующую конфигурацию /etc/samba/smb.conf.
valid users = @sambashare
Создайте группу.
sudo groupadd sambashare
Затем добавьте в эту группу пользователей
sudo gpasswd -a user1 sambashare sudo gpasswd -a user2 sambashare sudo gpasswd -a user3 sambashare
Группа должна иметь разрешение на запись в общую папку, которая может быть достигнута при следующих двух команд.
Набор sambashare как владельца группы общей папки:
sudo chgrp sambashare /path/to/shared/folder -R
Предоставить право на запись в группе.
sudo chmod g+w /path/to/shared/folder/ -R
Все!
Настройка общих ресурсов Samba
У каждого ресурса есть свой раздел в файле конфигурации /etc/samba/smb.conf. Разделы ресурсов расположены после глобальных параметров и имеют следующий вид
[имя_ресурса] path = browseable = read only = force create mode = force directory mode = valid users =
share_name — имя ресурса, используемое при доступе.
path — полный путь к ресурсу в файловой системе.
browsable — опоеделяет видимость ресурса для других пользователей, но не дает им прав доступа.
read only — определяет возможность доступа на запись для пользователей, указанных в параметре valid users.
force create mode — задает указанные права доступа к любому файлу, создаваемому в ресурсе.
force directory mode — задает указанные права доступа к любой директории, создаваемой в ресурсе
valid users — список пользователей, имеющих доступ к ресурсу. Здесь можно указывать имена или группы, перед группами нужно указывать символ @, например, @admins.
Для настройки конфигурации ресурса нужно в любом текстовом редакторе добавить в файл конфигурации блоки следующего вида для каждого пользователя:
[ivan] path = /samba/ivan browseable = no read only = no force create mode = 0660 force directory mode = 2770 valid users = ivan @admins
Для ресурса everyone блок будет выглядеть следующим образом:
[everyone] path = /samba/everyone browseable = yes read only = no force create mode = 0660 force directory mode = 2770 valid users = @sambashare @admins
Все пользователи будут иметь доступ на чтение и запись, так как были добавлены в группу sambashare при создании. Теперь нужно протестировать параметры
$testparm
Если все настроено корректно, результат будет следующим:
После проверки конфигурации запустим сервер и добавим его в автозагрузку командой systemctl:
$sudo systemctl start smbd.service $sudo systemctl enable smbd.service
Сервер работает и готов принимать пользователей.
Настройка клиентов Samba
Для доступа к ресурсам из командной строки в Linux используется утилита smbclient. В большинстве дистрибутивов она не установлена по умолчанию, если нет то нужно воспользоваться менеджером пакетов:
$sudo apt-get install smbclient
В некоторых дистрибутивах может потребоваться создать файл /etc/samba/smb.conf, так как при его отсутствии будет выводиться сообщение об ошибке. Для доступа к ресурсу нужно выполнить следующую команду:
$smbclient //имя_или_адрес_сервера/ресурс -U пользователь
Например, для доступа к ресурсу ivan на сервере samba.example.com нужно ввести:
$smbclient //samba.example.com/ivan -U ivan
Далее потребуется ввести пароль, после чего появится интерфейс командной строки, похожий на интерфейс FTP:
Например, можно создать директорию:
smb: > mkdir test smb: > ls
Доступ из командной строки используется в основном для тестирования, на практике доступ чаще всего осуществляется из графических оболочек, например, KDE. Возможен также доступ из других платформ (Windows, MacOS).
Например для доступа с windows наберите в строке поиска samba.example.comivan. И введите логин пароль
После чего вы сможете получить доступ к сетевым ресурсам.
Заключение
При помощи Samba мы создали мультиплатформенные сетевые ресурсы и протестировали доступ к ним. Ресурсы Samba очень распространены и могут использоваться различными приложениями. Например, VLC Player может проигрывать музыку и видео из ваших ресурсов Samba, а утилита резервного копирования BackupPC — записывать туда резервные копии.
- https://1cloud.ru/help/network/nastroika-samba-v-lokalnoj-seti
- https://interface31.ru/tech_it/2019/06/nastroyka-faylovogo-servera-samba-na-platforme-debian-ubuntu.html
- https://admin812.ru/kak-ustanovit-i-nastroit-samba-v-ubuntu.html
- https://andreyex.ru/ubuntu/kak-ustanovit-i-nastroit-server-samba-na-ubuntu-16-04-dlya-obshhego-dostupa-k-fajlam/
- https://ITProffi.ru/ustanovka-i-nastrojka-samba-servera-i-klientov/
Содержание
В этой статье мы расскажем как установить и настроить файловое хранилище на операционной системе Linux, а точнее будет использована серверная Ubuntu 16.04 LTS. Аналогичным образом настраивается большинство deb-based дистрибутивов.
Такой сервер можно использовать для сетевой установки файловой базы 1С:Предприятие — это гораздо надежнее, чем хранить ее на одном из рабочих компьютеров пользователей. Или такой сервер можно приспособить под сетевое хранилище резервных копий.
Только не используйте один и тот же сервер для установки информационной базы и хранения ее резервных копий.
Почему Linux? Во-первых это бесплатно и при этом совершенно легально. Во-вторых Linux потребляет гораздо меньше аппаратных ресурсов, и даже старая, списанная в утиль техника отлично справится с задачей файлового хранилища. В-третьих, хорошо настроенный Linux практически не нуждается во вмешательстве системного администратора, эксплуатируются по принципу «настроил и забыл».
И так, начнем…
Выбор оборудования
Как я уже написал, оборудование нам подойдет практически любое, но все же кое-какие пожелания у нас есть. Поскольку сервер будет файловый, то и пожелания наши будут касаться дисковой системы. Было бы неплохо найти машину с RAID контроллером на борту. Если мы делаем сервер для размещения рабочей файловой базы, было бы неплохо разместить ее на RAID-5, если хранилище резервных копий, отличным вариантом будет RAID-1.
При этом у нас нет особых требований к оперативной памяти, хватит и 1 Гбайта. К процессору тоже нет особых требований, Linux будет работать на всем, что еще живо.
Пожалуй, самый оптимальный вариант — приобрести восстановленный сервер «с пробегом». Берите самый дешевый, какой найдете, главное, что бы перед этим он прошел профилактику, его очистили от пыли и прогнали все системные тесты.
За неимением лучшего, можно использовать любой старый компьютер, но помните, что Вы это делаете на свой страх и риск. Самое уязвимое место файлового сервера — дисковая подсистема. Если она у Вас будет состоять из одного единственного старого диска, Вы очень сильно рискуете.
Если не удалось найти RAID-контроллер, можно настроить программный RAID средствами операционной системы. Учтите, что это повысит требования к процессору и оперативной памяти, зато Вам будет не страшен выход из строя контроллера.
Установка операционной системы
Сначала определимся с архитектурой сервера. Если Вам известна марка процессора, установленного в сервер, ознакомившись с его спецификацией Вы узнаете, совместим ли он с архитектурой x86-64 (64 бит) или только i386 (32 бит). Косвенный признак — размер оперативной памяти, 32-битная архитектура не может работать с оперативной памятью объемом более 3 Гбайт, иногда в эту архитектуру устанавливали 4 Гбайт памяти, но в системе было видно только 3 Гбайт.
Идем на страницу загрузки Ubuntu Server и скачиваем дистрибутив, соответствующей архитектуры. Дистрибутивы Ubuntu распространяются в виде образов загрузочных DVD дисков.
Для установки Вам потребуется записать загрузочный DVD диск из скачанного образа, или, что как правило удобнее, подготовить загрузочную флешку специальной утилитой. Вставляйте диск или флешку в сервер и загружайтесь с нее.
Выбирайте русский язык и в меню Установить Ubuntu Server
.
Далее Вам предложат указать страну, выбрать раскладку клавиатуры, дать имя серверу, указать имя и пароль суперпользователя (аналог администратора в Ubuntu) и подтвердить временную зону.
Некоторое затруднение может вызвать разметка диска. Если сомневаетесь, выбирайте автоматическую разметку и использовать весь диск. Но лучше выделить домашние папки пользователей в отдельные логические диски.
Так будет удобнее обновлять операционную систему, когда выйдет новая LTS версия 18.04.
Создавать или нет раздел подкачки зависит от объема оперативной памяти. Если у Вас ее немного, создайте раздел подкачки с таким же объемом. Впрочем, это не обязательно, можно после установки создать файл подкачки.
Далее в процессе установки Вам нужно будет выбрать каким образом Вы хотите управлять обновлением системы. Рекомендую устанавливать обновления безопасности автоматически.
И ближе к концу установки Вам предложат выбрать готовые наборы серверного программного обеспечения. Нам понадобятся:
-
Samba file server
-
Standart system utilites
-
OpenSSH server
Инсталлятор завершит свою работу, перезапустит сервер, Вы увидите протокол загрузки операционной системы, который завершится приглашением ввести логин и пароль пользователя в консоль.
Добро пожаловать в Linux!
Настройка сервера
Вводите логин и пароль суперпользователя, созданного при установке операционной системы. Ввод пароля никак не отображается в командной консоли — это нормально.
Первым делом настроем сетевое подключение.
Во время установки инсталлятор продиагностировал установленное оборудование и определил имеющиеся в системе адаптеры. По умолчанию Ethernet адаптер настраивается на получение IP адреса через DHCP, нас это не устраивает, т.к. у нас не будет возможности обращаться к серверу по его логическому имени, мы настроим статический IP адрес.
Откройте конфигурационный файл сетевых интерфейсов командой
$ sudo nano /etc/network/interfaces
Здесь использована команда sudo
— специальная конструкция deb-based дистрибутивов Linux для выполнения команд с правами root. Когда Вы делаете это первый раз система попросит Вас ввести пароль и на какое-то время запомнит его.
и приведите его к такому виду
# The loopback network interface - этот раздел не трогаем, оставляем как есть auto lo iface lo inet loopback # The primary network interface - этот раздел настраивает Ethernet адаптер auto enp0s3 # имя интерфейса оставляем без изменений iface enp0s3 inet static # меняем опцию dhcp на static address 192.168.1.9 # укажите свободный IP адрес в Вашей сети # за пределами диапазона адресов, выдаваемых DHCP сервером, # если таковой используется netmask 255.255.255.0 # маска подсети gateway 192.168.1.1 # шлюз по умолчанию, обычно IP адрес сетевого маршрутизатора
Сохраните файл нажав Ctrl-O и закройте редактор Ctrl-X. После редактирования перезапустим сеть:
$ sudo /etc/init.d/networking restart
и проверим что у нас получилось
$ ifconfig
В выдаче этой команды внимательно смотрим на значения inet addr
— в нашем примере там должен быть статический адрес 192.168.1.9.
Дальнейшую настройку удобнее производить с рабочей станции, подключившись по протоколу SSH. От сервера можно отключить монитор, клавиатуру и разместить его там, где он не будет никому мешать.
Для дистанционного управления сервером с рабочей станции Windows мы будем использовать PuTTy. Скачайте, установите и подключайтесь. Адрес сервера в нашем примере указывается так user@192.168.1.9
, где user
— имя суперпользователя, порт по умолчанию 22
.
Мы не будем использовать анонимный доступ к нашему файловому серверу, для того, что бы что-то записать или прочитать с сервера потребуется указать логин и пароль. И нам потребуется создать пользователя на сервере, от имени которого будут производиться все соответствующие файловые операции в хранилище.
$ sudo adduser storageuser
При создании пользователя так же будут созданы одноименные группа и домашняя папка. В домашней папке этого пользователя мы и организуем сетевое файловое хранилище
$ sudo -u storageuser mkdir /home/storageuser/nas
Пакет samba мы уже установили вместе с системой, дополнительно что-либо устанавливать не требуется.
Добавим пользователя в Samba
$ sudo smbpasswd -a storageuser
— тут нужно указать пароль пользователя Samba, и включим пользователя
$ sudo smbpasswd -e storageuser
Сделаем на всякий случай копию файла настроек и приступим к настройкам файлового сервера Samba.
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.bak $ sudo nano /etc/samba/smb.conf
Конфигурационный файл сопровождается подробными комментариями, можете пройтись по настройкам самостоятельно, а можете скопировать рекомендуемые настройки полностью
[global] workgroup = WORKGROUP # Здесь укажите имя рабочей группы одноранговой сети server string = %h server (Samba, Ubuntu) name resolve order = wins lmhosts hosts bcast dns proxy = no wins support = yes # только если в сети нет Wins сервера (он может быть, например, в роутере) ;wins server = 192.168.1.1 # только если wins support = no и по указанному адресу действительно есть Wins сервер log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d server role = standalone server passdb backend = tdbsam obey pam restrictions = no unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* . pam password change = yes security = user username map = /etc/samba/smbusers map to guest = bad user usershare allow guests = yes [storage] comment = nas storage writable = yes browseable = yes public = yes path = /home/storageuser/nas guest ok = no directory mask = 755 create mask = 644 valid users = @storageuser
Перезапустим службу
$ sudo service smbd restart
Пробуем зайти с какой-либо рабочей станции Windows, указав в проводнике путь \192.168.1.9
.
В сетевом окружении сервер появится через какое-то время, когда служба Wins обновит свои данные.
Windows сначала попробует открыть папку под своей локальной учетной записью, у нее это не получится и она запросит логин и пароль для доступа к сетевому ресурсу — это как раз тот пользователь, которого мы создали специально для доступа к сетевому хранилищу.
Готово!
При необходимости можно добавить новых пользователей и новые разделы. Разграничение доступа к разделам производится через опцию valid users
в соответствующем блоке конфигурационного файла Samba.
Антивирус
Операционные системы на базе Linux практически не подвержены риску заражения компьютерными вирусами, от части потому, что вирусов способных им навредить крайне мало, а в основном потому, что без получения привилегий суперпользователя эти вирусы ничем не могут навредить операционной системе.
Но эти вирусы могут использовать файловый сервер Samba для распространения от одной Windows системы на другие. Что бы поддерживать наше файловое хранилище в чистоте, мы установим антивирус и настроим автоматическое сканирование.
Установим антивирус ClamAV
$ sudo apt install clamav
Сразу же после установки в фоновом режиме запуститься обновление сигнатур, в дальнейшем мы настроим автоматическое обновление сигнатур по расписанию.
Удалять подозрительные файлы мы сразу не будем, мы их будем перемещать в карантин, где они никому не навредят. Если среди этих файлов было что-то важное, администратор сможет найти их в карантине и что-то сделать. Создадим папку карантина и ограничим доступ к ней
$ sudo mkdir /quarantine $ sudo chmod 600 /quarantine
Попробуем просканировать домашние папки пользователей
$ sudo clamscan -i -r --move=/quarantine /home
После сканирования получим протокол
----------- SCAN SUMMARY ----------- Known viruses: 6278963 Engine version: 0.99.2 Scanned directories: 13 Scanned files: 13 Infected files: 0 Data scanned: 4.79 MB Data read: 1.59 MB (ratio 3.00:1) Time: 22.176 sec (0 m 22 s)
Все хорошо, вирусов не обнаружено. Если бы нашлось что-то подозрительное, оно было бы перемещено в папку карантина.
Нам остается настроить автоматическое расписание обновления сигнатур и сканирования домашних папок. Редактируем файл расписания демона cron
$ sudo crontab -e
Для обновления сигнатур и сканирования нам потребуются привилегии суперпользователя, поэтому crontab запускается через sudo, сами команды в файле расписания нужно указывать без sudo.
Добавьте две строчки
0 1 * * * freshclam 0 2 * * * clamscan -i -r --move=/quarantine /home
Каждый день в 1:00 ночи будет автоматически запускаться обновление сигнатур, а в 2:00 ночи будет запущено сканирование всех домашних папок пользователей, инфицированные файлы будут перемещены в папку карантина.
Мониторинг
Регулярность резервного копирования
Если Вы пользуетесь мессенджером Telergam, у нас для Вас есть утилита мониторинга резервного копирования. Она умеет сканировать папки сетевого хранилища и сообщать о наличии или отсутствии новых файлов. Например, если резервное копирование запланировано на ночь, а утром в сетевом хранилище нет новых файлов, значит что-то пошло не так и нужно с этим разобраться.
Утилита написана на Python, сам Python в Ubuntu установлен по-умолчанию, нужно установить дополнительный модуль.
$ sudo apt install python-pip $ sudo pip install --upgrade pip $ sudo pip install python-telegram-bot
Сама утилита устанавливается из репозитория GitHib
$ cd ~ $ git clone https://github.com/kuleshovdv/backtracker.wiki.git $ cd backtracker
Создайте для себя нового Telegram бота. Подробная инструкция как это сделать приведена тут (англ).
Свяжитесь с Отцом Ботов, отправьте ему сначала команду /start
, затем /newbot
. Далее отвечайте на вопросы Отца Ботов, в итоге Вы получите от него токен и ссылку на Вашего бота.
Открываем конфигурационный файл
$ nano backtracker.conf
и настраиваем
[Telegram] token = # Тут нужно указать токен telegram-бота, полученный от Отца Ботов failonly = # False если хотите получать сообщения о наличии новых файлов или True если только об их отсутствии [Scan] path = # Укажите путь к сканируемым папкам hours = # Укажите "свежесть" файлов в часах, например 8
Запускайте утилиту
$ ./backtracker.ry
Первый запуск нужен для того, что бы автоматически определить ID абонента Telegram, который будет получать сообщения (это не номер его телефона). Подключайтесь к своему боту по ссылке, которую Вам дал Отец Ботов и отправляйте ему команду /start
. В ответ Вы получите сообщение, что Ваш ID определен, а утилита самонастроится и закроется. Запустите ее повторно для выполнения сканирования.
После настройки и проверки работы утилиты, добавьте ее в расписание демона cron
$ crontab -e
Добавьте строчку
0 8 * * * ~/backtracker/backtracker.py
Проверка будет запускаться каждый день в 8 утра. Если ночью что-то пошло не так, Вы узнаете об этом.
Системные ресурсы
Мониторить ресурсы сервера можно консольной утилитой top
или ее более красочной версией htop
. Установим и запустим ее
$ sudo apt install htop $ htop
Периодически контролируйте использование оперативной памяти. Если часто наблюдается загруженность около 100%, настройте файл подкачки.
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 $ sudo chmod 600 /swapfile && sudo mkswap /swapfile $ sudo swapoff -a $ sudo swapon /swapfile $ echo "/swapfile swap swap defaults 0 0"| sudo tee -a /etc/fstab
Здесь count=1024
— размер файла подкачки в мегабайтах.
Дисковое пространство
Для мониторинга файловой системы удобно пользоваться файловым менеджером Midnight Commander. Если Вы застали времена MS DOS и Notron Commander, то объяснять ничего не нужно.
Устанавливаем и запускаем
$ sudo apt install mc $ mc
Так удобно наблюдать за файловым хранилищем, карантином, свободным дисковым пространством.
Для того, чтобы создать файловый сервер, интегрированный в домен Active Directory, вам в первую очередь потребуется ввести вашу машину с Ubuntu в домен. Этому посвящена отдельная статья:
Для создания файлового сервера вам не нужно настраивать PAM, достаточно добавить доменных пользователей и группы через Winbind в систему.
После успешного входа в домен вам останется всего лишь настроить расшаренные ресурсы на вашем компьютере.
Тут стоит сразу обратить внимание на одну очень важную вещь: Samba пытается спроецировать права на файлы Windows на права Unix, однако из-за кардинальных различий в механизмах присвоения прав сделать это не всегда возможно. Учтите, что права на файлы всегда и в любом случае контролируются вашей файловой ситемой на компьютере с Ubuntu, самба может лишь подстраиваться под них, но не менять их поведение.
Поэтому по умолчанию на расшаренных ресурсах будут весьма скудные возможности контроля доступа — назначение разных прав для пользователя, группы и всех остальных. Однако это легко исправить, добавив в вашу ФС поддержку POSIX ACL. В этом случае можно будет назначать различные права различным пользователям и группам практически как в Windows.
Поддержка POSIX ACL есть как минимум в ext3/4, для её активирования вам необходимо просто добавить к опциям монтирования нужного раздела параметр acl
.
Важно, чтобы каталог, который вы хотите расшарить через Samba, лежал на диске, смонтированном с опцией acl. Иначе вы не сможете нормально использовать механизм разграничения прав доступа к файлам на шарах.
Есть и ещё один весьма немаловажный момент: POSIX ACL не поддерживают наследование прав доступа от родительских каталогов, а в Windows эта возможность присутствует. Поэтому в Samba реализован дополнительный механизм сохранения информации о наследовании прав доступа, который использует расширенные атрибуты файловой системы. Поэтому чтобы Samba могла корректно обрабатывать наследование прав кроме acl
к опциям монтирования файловой системы необходимо добавлять параметр user_xattr
, который как раз и отвечает за включение поддержки расширенных атрибутов.
Например, я всегда использую для организации расшаренных ресурсов отдельные LVM диски и у меня строчки в fstab для них выглядят примерно так:
/dev/mapper/data-profiles /var/data/profiles ext3 defaults,noexec,acl,user_xattr 0 2
Опция noexec
нужна потому, что на шарах для Windows 100% не должно быть исполняемых файлов Linux, и лишний раз перестраховаться не помешает.
Для работы с acl на Ubuntu необходимо установить пакет соответствующих утилит:
sudo aptitude install acl
После чего посмотреть расширенные права (т.е. ACL) на файл или каталог можно будет командой
getfacl file
А установить командой
setfacl [options] file
На всякий случай хочу обратить внимание на то, что механизм POSIX ACL не имеет никакого отношения к Samba — это просто надстройка над стандартным механизмом разграничения прав в Linux. Соответственно Samba может его использовать, но не может как-либо изменить или обойти.
Для работы с расширенными атрибутами ФС потребуется очень похожий на acl
пакет утилит — attr
, поставить который можно командой
sudo aptitude install attr
Для просмотра расширенных атрибутов можно использовать команду
getfattr file
А для установки
setfattr [options] file
Однако тут есть одна небольшая загвоздка. Дело в том, что Samba хранит всю информацию о наследовании в бинарном виде в единственном расширенном атрибуте user.SAMBA_PAI
. Поэтому поменять что-то с помощью setfattr
вам не удастся, только разве что полностью удалить расширенные атрибуты (иногда такое может потребоваться сделать).
Ну а управлять наследованием прав вам придётся с Windows машины с помощью штатных инструментов этой системы. Либо же с помощью утилиты smbcacls
, если вы разберётесь, как ей пользоваться.
Существует так же экспериментальный VFS модуль acl_xattr, который позволяет хранить NT ACL полностью в расширенных атрибутах. К сожалению, документации по нему нет, поэтому что-то вразумительное сказать по его поводу сложно. Ожидается, что в Samba 4 будет полная интегрированная поддержка NT ACL, а пока что можно пользоваться тем, что есть.
Если вам есть что добавить по поводу расширенных атрибутов в Samba и методах работы с ними — обязательно напишите в эту тему на форуме. Буду благодарен за любые ссылки, статьи и комментарии по теме.
Кроме того, расширенные атрибуты файловой системы позволяют включить в Samba полную поддержку файловых атрибутов DOS, таких как скрытый, архивный и пр.
Итак, будем считать что у вас есть в системе каталог, который вы хотите расшарить через Samba (и он находится на диске, подмонтированном с поддержкой acl и user_xattr). Теперь необходимо собственно настроить его расшаривание. Для этого нужно внести соответствующую информацию в файл /etc/samba/smb.conf
.
Начнём с общих настроек, которые можно добавить в секцию [global]
этого файла (это далеко не все возможные параметры, просто несколько достаточно полезных из них):
# Отключить расшаривание принтеров. Если вы конечно и вправду не хотите их расшаривать. # Для полного отключения нужно указывать все 4 строки, приведённых ниже load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes # Сделать скрытыми при просмотре с Windows файлы со следующими именами hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/ # Использовать для шар с публичным доступом следующего UNIX пользователя в качестве Guest guest account = nobody # Воспринимать как guest незарегистрированных пользователей map to guest = Bad User ## Настройки, использующие расширенные атрибуты файловой системы # Обрабатывать наследования прав с помощью расширенных атрибутов ФС map acl inherit = yes # Использовать расширенные атрибуты ФС для хранения атрибутов DOS store dos attributes = yes # Отключить маппинг DOS атрибутов на UNIX права, включённый по умолчанию # Согласно man smb.conf при использовании расширенных атрибутов эти опции обязаны быть отключены map archive = no map system = no map hidden = no map readonly = no
Теперь настройки непосредственно расшаренного ресурса. У меня он называется profiles, а физически на Ubuntu машине находится по адресу /var/data/profiles:
[profiles] # Комментарий comment = User Profiles # Путь до папки, которую расшариваем path = /var/data/profiles/ # Пользователи с неограниченными правами доступа к шаре # У меня стоит группа администраторов домена. # Эти пользователи при работе с файлами воспринимаются как локальный root admin users = "@DOMAINАдминистраторы домена" # Скрыть папки, к которым у пользователя нет доступа hide unreadable = yes # Доступ не только на чтение read only = no # Маски для создаваемых файлов - можно задать по желанию #create mask = 0600 #directory mask = 0700 # Отключение блокировок - лучше отключить locking = no
Есть множество других опций — за подробностями стоит обратиться к документации по Samba.
Не забудьте поставить правильного владельца и права доступа на папку, которую вы расшариваете, а то несмотря на любые настройки самбы в неё может быть запрещена запись на уровне прав Linux. Я делаю обычно так:
sudo chmod ug+rwx /var/data/profiles sudo chown root:"пользователи домена" /var/data/profiles
Обратите внимание, так как ваша Ubuntu машина введена в домен, то вы можете использовать пользователей и группы домена в качестве владельцев файлов прямо в Ubuntu.
Проверьте правильность конфигурации Samba командой
testparm
После чего перезапустите Samba:
sudo /etc/init.d/samba restart
Теперь вы можете с любой машины домена получить доступ к расшаренному ресурсу.
Кстати, не забывайте про SGID и Sticky биты для каталогов. Они позволят вам наследовать группу-владельца и запрещать пользователям удаление не своих файлов — это может быть очень удобно для многопользовательских хранилищ. Однако в отличие от редактирования прав из Windows поменять эти биты на папках на расшаренном ресурсе не получится — только вручную непосредственно на Ubuntu компьютере.
Кроме всего прочего Samba позволяет организовывать хранение предыдущих версий файлов, что бывает иногда полезно при создании общих ресурсов с пользовательскими данными. Подробности в соответствующей статье:
Домен Active Directory есть далеко не у всех. Поэтому часто возникает необходимость организовать на Linux машине автономное файловое хранилище со своей собственной системой авторизации. Это сделать очень просто.
Основной особенностью такой организации файлового хранилища будет то, что вся информация о пользователях будет храниться в базе данных Samba, соответственно добавлять и удалять пользователей на самбу надо будет вручную.
Самое главное — определиться с используемым способом доступа к ресурсу. Для его изменения надо правильно установить значение параметра security
в секции [global]
файла /etc/samba/smb.conf
. Подробней об этом параметре можно почитать тут или же в официальной документации.
Обычно используется значение share
или user
.
Далее не забудьте поменять значение параметра workgroup
на нужное, а все остальные настройки сильно зависят от ваших целей.
Подробнее настройка простого файлового сервера описана в основной статье про Samba.
Для дома удобно чтобы все видели всех. Это можно сделать если добавить 4 строчки в секцию [global] файла /etc/samba/smb.conf. Некоторые могут уже существовать.
[global] workgroup = WORKGROUP map to guest = Bad User netbios name = NOTEBOOK security = user
NOTEBOOK — имя компьютера которое будет в сети.
Кроме этого надо установить дополнительные программы :
sudo apt-get install samba
Для kubuntu надо еще установить smb4k .
После редактирования конфигов надо перезапустить службы. В systemd (начиная с 15.04) перезапуск выглядит так:
sudo systemctl restart smbd.service nmbd.service
Посмотреть «шары» можно через файловый броузер nautilus, konkueror или так:
smbclient -L 127.0.0.1
. Официальная документация на английском.
Файловый сервер можно без преувеличения назвать средством первой необходимости, даже в сетях без выделенного сервера вы всегда обнаружите папки с общим доступом, но по мере роста объемов данных появляется потребность в отдельном решении. Вариантов его организации множество, одним из которых является служба Samba на Linux-сервере, это простое, недорогое, но в то же время мощное решение по организации общего доступа к файлам и папкам в Windows сетях. В данной статье мы рассмотрим настройку простого сервера на основе Samba 4 работающего в ОС Debian / Ubuntu.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Несмотря на то, что в данной статье в качестве ОС мы использовали Debain 9, все сказанное будет справедливо для любой ОС на базе Debian или Ubuntu, а с поправкой на работу пакетного менеджера — для любого Linux-дистрибутива. Также мы предполагаем, что читатель имеет базовые навыки работы с Linux-системами на базе Debian.
Подготовка системы
Прежде чем приступать к работе продумайте схему хранения данных и доступа к ним. Существую разные типы данных, которые мы будем характеризовать по интенсивности доступа к ним, скажем «холодные данные» отличаются тем, что обращения к ним происходят крайне редко (а к некоторым вообще никогда), но при этом они могут занимать значительные объемы. Это прежде всего резервные копии, инсталляционные пакеты, образа дисков и т.д. и т.п.
Противоположность им «горячие данные» — это данные которые интенсивно используются и изменяются, для файлового сервера примером таких данных может служить файловая информационная база 1С:Предприятия. Между ними находятся обычные данные, характер доступа к которым не имеет каких-либо особенностей.
Исходя из типа данных следует выбирать диски для хранения, для «горячих данных» это должны быть быстрые диски или SSD, а для «холодных» подойдут экономичные модели с упором на большой объем. Также не забывайте про RAID, для защиты данных от аппаратного выхода дисков из строя.
Продумайте структуру директорий и прав доступа к ним. Разумно будет исходить из следующих соображений: разделяйте диски с данными и системой, чтобы при необходимости можно было заменить их без лишних затруднений или перенести на другой сервер. Храните разные типы данных на разных дисках или разделах, скажем, если на разделе для резервных копий закончится свободное место, то это никак не повлияет на работу баз 1С.
В нашем примере мы будем использовать виртуальную машину с двумя жесткими дисками, один для системы, второй для данных, точку монтирования диска для данных мы указали как /samba, вы можете использовать другое имя и расположение.
Также обратите внимание на имя компьютера, Samba 4 будет использовать его в качестве NetBIOS имени.
После установки ОС следует изменить настройку лимита на количество одновременно открытых файлов, в Linux это 1024, а в Windows 16384. Для этого откройте файл /etc/security/limits.conf и добавьте в конце две строки:
* - nofile 16384
root - nofile 16384
После чего сервер следует перезагрузить.
Установка и базовая настройка Samba 4
Установка Samba предельно проста:
apt install samba
После чего откроем файл /etc/samba/smb.conf и выполним общие настройки. Большинство указанных опций в файле уже есть, многие из них даже не потребуется менять, но их назначение будет полезно знать, поэтому мы прокомментируем наиболее важные из них.
За общие настройки сервера отвечает секция [global], которая, кстати, прекрасно прокомментирована. Обратите внимание на два вида комментариев опций, если для этого используется символ # — то указанное значение применяется по умолчанию, а символ ; обозначает предлагаемый вариант настройки.
Начнем, опции перечисляются в порядке их следования в файле:
workgroup = WORKGROUP
Обозначает рабочую группу Windows, по умолчанию WORKGROUP.
; interfaces = 127.0.0.0/8 eth0
Следующая опция определяет интерфейсы или подсети, с которыми будет работать Samba. Допускается смешанная запись, как в примере выше, либо можно указать только интерфейсы:
interfaces = lo ens33
Или только подсети:
interfaces = 127.0.0.0/8 192.168.16.0/24
Но само по себе указание интерфейсов не ограничивает Samba, для того чтобы ограничения начали действовать нужно включить следующую опцию:
bind interfaces only = yes
Следующая опция указывает расположение логов:
log file = /var/log/samba/log.%m
По умолчанию лог выключен, для того чтобы его включить добавьте в файл опцию:
log level = 1
Если вам нужен более подробный лог — установите более высокий уровень, минимальное значение — 1, максимальное — 5.
Также закомментируйте опцию:
# syslog = 0
В настоящий момент она является не рекомендованной (deprecated).
server role = standalone server
Обозначает простой файловый сервер, не требующий подключения к домену.
map to guest = bad user
Определяет способ определения гостевого доступа, при указанном значении гостем будет считаться любой пользователь, который отсутствует в базе Samba. Также могут использоваться значения never — не использовать гостевой доступ и bad password — в этом случае гостем будет считаться, в том числе, и существующий пользователь если он неправильно введет пароль. Данное значение использовать не рекомендуется, так как при ошибке в пароле пользователь все равно получит доступ, но с гостевыми правами.
На этом общая настройка сервера закончена. Проверим конфигурацию на ошибки:
testparm
И перезапустим сервер
service smbd restart
Настройка общего ресурса с гостевым доступом
Начнем с самого простого варианта — создадим общий ресурс, доступ к которому может иметь любой пользователь. Для этого добавим в конец файла /etc/samba/smb.conf следующие строки.
[public]
comment = Shared for all
path = /samba/public
read only = no
guest ok = yes
В квадратных скобках задаем имя ресурса, все что ниже скобок — секция этого ресурса. В ней мы указали следующие опции:
- comment — описание ресурса, необязательный параметр;
- path — путь к директории;
- read only — режим только чтения, указываем no;
- guest ok — разрешен ли гостевой доступ, указываем yes;
Теперь создадим саму директорию:
mkdir /samba/public
и установим на нее необходимые права, для гостевого ресурса это 777:
chmod 777 /samba/public
Если у вас предполагается только гостевой доступ на этом можно остановиться, в случае наличия ресурсов с требованием аутентификации могут возникнуть проблемы. Дело в том с какими правами будут записаны файлы на общий ресурс, если не указано иного, то по умолчанию Samba использует 0744 для файлов и 0755 для директорий. Т.е. полный доступ остается только у владельца файла, остальные получают права только на чтение. Чтобы исправить это следует явно указать режим для новых файлов и папок, для этого добавим в секцию еще две строки:
create mode = 0777
directory mode = 0777
В этом случае итоговые права будут рассчитаны с учетом отображения прав доступа DOS в разрешения UNIX, что имеет некоторые особенности, в частности права на файлы будут установлены как 766 или rwx-rw-rw. Это значит, что запустить исполняемый файл сможет только тот, кто является его владельцем. Остальные получат сообщение об отсутствии прав доступа:
На файлы не являющиеся исполняемыми это никак не влияет, но оставлять этот момент без внимания тоже не следует. Вообще к возможности запускать файлы непосредственно с общего ресурса нужно относиться с осторожностью и в целях безопасности неплохо было бы вообще запретить эту возможность, для этого установите:
create mode = 0666
Это полностью снимет права на выполнение для всех, но оставит полный доступ к исполняемым файлам. Если же требуется разрешить возможность запуска, то вместо create mode следует использовать опцию force create mode, которая будет устанавливать разрешения без учета прав доступа DOS:
force create mode = 0777
Теперь перезапускаем Samba и пробуем получить доступ с любого Windows-клиента.
Если все сделано правильно, то сервер появится в сетевом окружении, и вы без проблем получите доступ к созданной нами общей папке.
Настройка общего ресурса с парольным доступом
Гостевой доступ это просто и удобно, но не всегда приемлемо. Существуют ситуации, когда доступ к общему ресурсу должны иметь только определенные пользователи. В нашем примере создадим два таких ресурса: для бухгалтерии и для IT-отдела.
Снова откроем конфигурационный файл и добавим в него две секции:
[buch]
path = /samba/buch
read only = no
guest ok = no[adm]
path = /samba/adm
read only = no
guest ok = no
Они предельно просты и отличаются запретом гостевого доступа — guest ok = no. Для того, чтобы разделить доступ к ресурсам будем использовать группы пользователей, создадим две новые группы для наших подразделений:
groupadd smbbuch
groupadd smbadm
Теперь создадим каталоги:
mkdir /samba/buch
mkdir /samba/adm
и изменим группу владельца:
chgrp smbbuch /samba/buch
chgrp smbadm /samba/adm
Затем установим права:
chmod 2770 /samba/buch
chmod 2770 /samba/adm
Значение 2770 обозначает что мы предоставляем полные права владельцу и группе, для остальных доступ запрещен. А первая двойка устанавливает SGID для каталога, что обеспечивает присвоение группы каталога каждому создаваемому в нем файлу.
В некоторых случаях определенный интерес представляет выставление для каталога sticky bit, который означает, что удалить или переименовать файл может только его владелец, но работать с ним, в том числе изменять, может любой пользователь, имеющий права записи в каталог. Для этого вместо набора прав 2770 используйте права 3770.
Не забываем указать права для вновь создаваемых файлов и директорий, здесь справедливо остается все то, о чем мы говорили выше. Например, можно использовать такой набор опций (с правом запуска исполняемых файлов):
force create mode = 0770
directory mode = 2770
Обратите внимание, что мы устанавливаем SGID только для каталогов, для файлов в данной схеме выставлять его не имеет смысла. А вот если вы установили sticky bit, то его нужно указать в обоих случаях:
force create mode = 1770
directory mode = 3770
Не забываем, что данные опции следует добавить в каждую секцию.
На этом настройки закончены, после чего следует сохранить конфигурационный файл и перезапустить Samba. Но в наших группах пока нет пользователей, давайте добавим их туда.
Начнем с уже существующих пользователей, в нашем случае это пользователь andrey, который является главным администратором и должен иметь доступ к обоим ресурсам. Поэтому добавим его в обе группы:
usermod -aG smbbuch andrey
usermod -aG smbadm andrey
Затем добавим его в базу Samba:
smbpasswd -a andrey
При этом потребуется установить пароль для доступа к Samba-ресурсам, он должен совпадать с основным паролем пользователя. После чего включим эту учетную запись:
smbpasswd -e andrey
Проверяем, после ввода пароля мы должны получить доступ к созданным нам ресурсам. Также обратите внимание, после аутентификации в списке общих ресурсов появилась папка с именем пользователя, подключенная только на чтение.
С настройками по умолчанию Samba предоставляет каждому существующему пользователю доступ только на чтение к его домашнему каталогу. На наш взгляд это довольно удобно и безопасно. Если вас не устраивает такое поведение — удалите из конфигурационного файла секцию [homes].
Теперь о других пользователях. Скажем у нас есть бухгалтер Иванова и админ Петров, каждый из которых должен иметь доступ к своему ресурсу. В то же время иметь доступ к самому Samba-серверу им необязательно, поэтому создадим новых пользователей следующей командой:
useradd -M -s /sbin/nologin ivanova
useradd -M -s /sbin/nologin petrov
Ключ -M заводит пользователя без создания домашнего каталога, а -s /sbin/nologin исключает возможность входа такого пользователя в систему.
Поместим каждого в свою группу:
usermod -aG smbbuch ivanova
usermod -aG smbadm petrov
Затем добавим их в базу Samba, при этом потребуется установить им пароли:
smbpasswd -a ivanova
smbpasswd -a petrov
И включим эти учетные записи
smbpasswd -e ivanova
smbpasswd -e petrov
Если все сделано правильно, то пользователь будет иметь доступ к своим ресурсам и не иметь к чужим.
Также обратите внимание, что несмотря на то, что общий ресурс с именем пользователя создан, доступ он к нему получить не сможет, так как физически его домашняя директория не существует.
Настройка общего ресурса со смешанным доступом
Теперь рассмотрим более сложную схему, ресурс со смешанным доступом. Например, вы хотите организовать общую папку с инсталляционными пакетами программ, которые может запустить каждый, но не хотите, чтобы кто-либо мог изменять его содержимое, оставив эту привилегию только участникам группы smbadm.
Добавим в конфигурационный файл следующую секцию:
[distr 1C]
path = /samba/distr-1c
read only = no
guest ok = yes
Здесь все понятно, стандартное описание ресурса. Теперь создадим директорию и изменим группового владельца:
mkdir /samba/distr-1c
chgrp smbadm /samba/distr-1c
Теперь подумаем о правах, владелец и группа adm должны иметь полный доступ — rwx (7) плюс установленный SGID для директорий, а остальные должны иметь право чтения и выполнения, т.е. r-x (5), для файлов следует использовать force create mode, иначе вместо желаемых 0775 вы получите 0764, все тоже самое, только без права выполнения для группы и остальных.
force create mode = 0775
directory mode = 2775
Перезапускаем Samba и проверяем, без аутентификации пользователь может только копировать и запускать файлы, а прошедшие проверку подлинности пользователи могут изменять и удалять содержимое общего ресурса.
Настройка скрытого общего ресурса
Еще одна часто встречающаяся задача — скрыть общий ресурс из отображаемого списка. Например, служебные ресурсы, используемые в административных целях. Нет ничего проще, достаточно добавить в секцию ресурса еще одну опцию:
browseable = no
После чего ресурс будет скрыт из отображения, но попасть в него можно будет явно указав путь к нему:
Во всем остальном такие ресурсы ничем не отличаются от обычных и к ним применимо все вышесказанное.
Настройка корзины для общего ресурса
Полезность корзины на файловом сервере, пожалуй, не будет отрицать никто. Человеку свойственно ошибаться и будет очень обидно, если ценой ошибки окажется несколько часов работы, но, к счастью, Samba позволяет помещать удаленные файлы в корзину.
Для активации корзины добавьте в секцию к общему ресурсу следующие строки:
vfs objects = recycle
recycle:repository = .recycle
recycle:versions = yes
recycle:keeptree = yes
Первая опция добавит в общий ресурс новый объект — корзину, вторая укажет ее расположение — скрытая папка в корне. Две следующих включают сохранение структуры папок при удалении и сохранение нескольких версий файла с одним и тем же именем. Это позволяет максимально обезопасить себя от ситуаций, когда в разных папках лежали одноименные файлы с разным содержимым или на место удаленного файла скопировали еще один такой же и тоже удалили.
Выше мы везде говорили о правах, корзина не исключение, если у вас включено сохранение структуры папок, то по умолчанию она будет создана с правами 0700, т.е. восстановить файл сможет только тот, кто его удалил. Рекомендуется изменить это поведение и установить права аналогичные указанным в directory mode, для этого добавим еще одну опцию (права указаны для директории buch):
recycle:directory_mode = 2770
Перезапустим Samba и попробуем что-нибудь удалить.
Несмотря на грозное предупреждение Проводника удаляемые файлы перемещаются в корзину, откуда мы их можем восстановить.
Как видим, работать с Samba не просто, а очень просто, при том, что мы оставили за кадром многие возможности тонкой настройки, многие из которых требуют отдельных статей. Надеемся, что данный материал окажется вам полезным и поможет быстро и без проблем развернуть файловый сервер на Linux.
Также рекомендуем ознакомиться со статьей Linux — начинающим. Часть 4. Работаем с файловой системой. Теория для более подробного ознакомления с системой прав файловой системы Linux.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Обновлено: 30.01.2022
Опубликовано: 13.03.2021
Используемые термины: Samba, Ubuntu, SMB.
Samba позволяет настроить файловое хранилище различных масштабов — от малых офисов для крупных организаций. В данной инструкции мы рассмотрим процесс настройки файлового сервера. Сначала мы выполним установку и базовую настройку с предоставлением гостевого доступа. После будет приведены примеры разграничения доступа по пользователям, группам и пользователям Active Directory.
Подготовка сервера к работе
Настройка времени
Брандмауэр
Установка и запуск сервиса Samba
Создание первой шары с гостевым доступом
Настройка доступа к папке по логину и паролю
Доступ к папке для пользователей и групп
Помещение удаленных файлов в сетевую корзину
Настройка клиентов для подключения к шаре
Windows
Linux
Некоторые полезные опции Samba
hosts allow
hosts deny
interfaces
force user/group
include
Читайте также
Подготовка сервера
1. Время
Для корректного отображения дат, необходимо позаботиться о синхронизации времени. Для этого будем использовать демон chrony. Установим его:
apt-get install chrony
Разрешим автозапуск сервиса:
systemctl enable chrony
2. Брандмауэр
По умолчанию, в системах на базе Debian брандмауэр разрешает все соединения. Но если в нашем случае мы используем брандмауэр, необходимо открыть порты:
iptables -I INPUT -p tcp —dport 445 -j ACCEPT
iptables -I INPUT -p udp —dport 137:138 -j ACCEPT
iptables -I INPUT -p tcp —dport 139 -j ACCEPT
* где порт 445 используется для samba, а порты 137, 138 и 139 — для работы NetBIOS (использование имени компьютера для доступа).
Применяем настройки:
apt-get install iptables-persistent
netfilter-persistent save
Установка и запуск Samba
Установка выполняется из репозитория одной командой:
apt-get install samba
Разрешаем автостарт сервиса:
systemctl enable smbd
И проверим, что сервис запустился:
systemctl status smbd
Проверяем, что сервер самба позволяет к себе подключиться. Для этого можно с компьютера обратиться к серверу по SMB, например, на компьютере с Windows это можно сделать из проводника, прописав путь к серверу с двух слэшей:
* в данном примере мы подключаемся к серверу Samba с IP-адресом 192.168.1.15.
Если мы настроили сервер правильно, система откроет пустую папку. На данном этапе проверка закончена и мы можем переходить к созданию первой шары.
Разберем самый простой пример предоставления доступа к папке — анонимный доступ всем пользователям без запроса пароля.
Открываем на редактирование конфигурационный файл samba:
vi /etc/samba/smb.conf
И добавляем настройку для общей папки:
[Общая папка]
comment = Public Folder
path = /data/public
public = yes
writable = yes
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
* где:
- [Общая папка] — имя общей папки, которое увидят пользователи, подключившись к серверу.
- comment — свой комментарий для удобства.
- path — путь на сервере, где будут храниться данные.
- public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
- writable — разрешает запись в сетевую папку.
- read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
- guest ok — разрешает доступ к папке гостевой учетной записи.
- create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются указанные права. В нашем примере права будут полные.
Создаем каталог на сервере и назначим права:
mkdir -p /data/public
chmod 777 /data/public
Применяем настройки samba, перезагрузив сервис:
systemctl restart smbd
Пробуем подключиться к папке. Мы должны зайти в нее без необходимости ввода логина и пароля.
Теперь создадим каталог, в который вход будет разрешен только авторизованным пользователям.
Открываем конфигурационный файл samba:
vi /etc/samba/smb.conf
Добавляем настройку для новой папки:
[Папка сотрудников]
comment = Staff Folder
path = /data/staff
public = no
writable = yes
read only = no
guest ok = no
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
* эти настройки, во многом, похожи на те, что использовались в примере выше. Вот основные различия:
- path = /data/staff — используем новый путь до папки.
- public = no — запрещаем публичный доступ.
- guest ok = no — не разрешаем гостевое подключение.
Создаем каталог для новой папки:
mkdir /data/staff
Задаем права на созданный каталог:
chmod 777 /data/staff
Создаем пользователя в системе Linux:
useradd staff1
* где staff1 — имя пользователя.
Задаем пароль для пользователя:
passwd staff1
Теперь создадим пользователя в samba:
smbpasswd -a staff1
Перезапускаем samba:
systemctl restart smbd
Пробуем зайти на сервер — общую папку мы должны открыть без авторизации, а при попытке открыть папку сотрудников должно появиться окно ввода логина и пароля.
Если мы авторизованы на компьютере, с которого пытаемся подключиться к серверу, под той же учетной записью, что создали для доступа к папке, samba может и не потребовать аутентификации.
Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей.
Открываем конфигурационный файл samba:
vi /etc/samba/smb.conf
Добавляем настройку для новой папки:
[Приватная папка]
comment = Private Folder
path = /data/private
public = no
writable = no
read only = yes
guest ok = no
valid users = admin, staff2, staff3, @privateusers
write list = admin, staff2
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
inherit owner = yes
* стоит обратить внимание на следующие настройки:
- path = /data/private — используем новый путь до папки.
- writable = no и read only = yes — в данном примере мы разрешим запись в каталог только некоторым пользователям. Поэтому общие настройки, разрешающие запись в папку, должны быть запрещены.
- valid users — список пользователей, которым разрешено подключаться к каталогу. В данном примере разрешения работают для пользователей admin, staff2 и staff3, а также для всех, кто входим в группу privateusers.
- write list — список пользователей, которые имеют доступ к папке на чтение и запись. В данном примере мы разрешаем это только для пользователей admin и staff2.
- inherit owner — опция позволяем включить наследование владельца при создании папок и файлов.
* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.
Создаем каталог для новой папки:
mkdir /data/private
Задаем права на созданный каталог:
chmod 777 /data/private
Для применения настроек перезапускаем samba:
systemctl restart smbd
Создать группу пользователей можно командой:
groupadd privateusers
Добавить ранее созданного пользователя в эту группу:
usermod -a -G privateusers staff1
Подробнее о работе с учетными записями в Linux.
Проверяем возможность работы с новым каталогом.
Сетевая корзина
При удалении файлов из общей папки, данные удаляются навсегда. Но мы можем настроить сетевую корзину — скрытый каталог, в который будут перемещаться удаляемые с самбы объекты.
Открываем конфигурационный файл:
vi /etc/samba/smb.conf
Создаем шару:
[Recycle]
comment = Snap Directories
path = /data/recycle
public = yes
browseable = yes
writable = yes
vfs objects = recycle
recycle:repository = .recycle/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 0
recycle:exclude = *.tmp, ~$*
recycle:exclude_dir = /tmp
* где:
- vfs objects = recycle — использовать подсистему recycle.
- recycle:repository — где хранить удаленные объекты. В данном примере удаленные файлы попадут в скрытый каталог .recycle к котором создастся каталог с именем пользователя, удалившего файл или папку.
- recycle:keeptree — удалять объекты с сохранение дерева каталогов.
- recycle:touch — изменить ли дату изменения файла при его перемещении в корзину.
- recycle:versions — при удалении файлов с совпадающими именами, добавлять номер версии.
- recycle:maxsize — не помещать в корзину файлы, размер которых больше заданного параметра (в байтах). В данном примере, помещать файлы любого размера.
- recycle:exclude — исключить файлы.
- recycle:exclude_dir — исключить каталог.
Создаем каталог и задаем права:
mkdir /data/recycle
chmod 777 /data/recycle
Перезапускаем самбу:
systemctl restart smbd
Пробуем зайти в сетевой каталог Recycle и создать, а после удалить файл. Он должен оказаться к скрытой папке .recycle.
Для автоматической чистки сетевой корзины можно создать скрипт:
mkdir /scripts
vi /scripts/cleanrecycle.sh
#!/bin/bash
recyclePath=»/data/recycle/.recycle»
maxStoreDays=»30″
/usr/bin/find $recyclePath -name «*» -ctime +$maxStoreDays -exec rm {} ;
* в данном скрипте мы ищем все файлы в каталоге /data/recycle/.recycle, которые старше 30 дней и удаляем их.
Разрешаем запуск скрипта:
chmod +x /scripts/cleanrecycle.sh
Создаем задание в планировщике:
crontab -e
0 5 * * * /scripts/cleanrecycle.sh
* в данном примере мы будем запускать скрипт по очистке сетевой корзины каждый день в 05:00.
Подключение к шаре
Теперь разберем примеры подключения к нашим шарам из разных систем.
Windows
Для разового подключения можно использовать проводник, прописав в нем адрес сервера через косые линии:
Для подключения сетевого диска, который будет автоматически создаваться при запуске системы, в проводнике сверху нажимаем Простой доступ — Подключить как диск:
В открывшемся окне прописываем путь до сетевой папки и выбираем имя диска:
Сетевой диск настроен.
Но мы может сделать те же действия из командной строки:
net use x: \samba.dmosk.localAD ACL /persistent:yes
* где x: — имя сетевого диска; \samba.dmosk.localAD ACL — путь до сетевого каталога; persistent:yes — указывает на то, что нужно восстанавливать данный диск каждый раз при входе в систему.
Linux
Монтирование
В Linux мы можем монтировать удаленный каталог с помощью команды mount, например:
mount -t cifs «//192.168.1.15/ad» /mnt -o user=dmosk
* где 192.168.1.15 — IP-адрес сервера; mnt — каталог, куда монтируем сетевую шару; dmosk — пользователь, под которым выполняем подключение к сетевому каталогу.
** в систему должен быть установлен пакет cifs-utils.
Подробнее, процесс монтирования описан в инструкции Как в Linux монтировать шару CIFS.
SMB Browser
Также мы можем увидеть содержимое удаленных папок на samba при помощи клиента smb. Для начала установим данного клиента:
а) на Red Hat / CentOS / Fedora:
yum install samba-client
б) на Debian / Ubuntu / Mint:
apt-get install samba-client
После вводим команду:
smbclient -L 192.168.1.15 -U staff@dmosk.local
* где 192.168.1.15 — сервер samba, к которому мы пытаемся подключиться; staff@dmosk.local — учетная запись, под которой выполняется подключение.
… мы получим список каталогов, которые расшарены на сервере.
Также мы можем подключиться к конкретной папке, например:
smbclient \\192.168.1.15\ad -U staff@dmosk.local
Мы подключимся клиентом samba — можно выполнить запрос на показ содержимого:
smb: > ls
Или полный список возможных команд:
smb: > help
Некоторые опции Samba
Рассмотрим некоторые полезные опции, которые могут пригодится при настройке Samba.
1. hosts allow
Параметр задает список разрешенных хостов или сетей, с которых можно подключаться к серверу. Если его прописать в секцию с настройкой шары, то он будет действовать только для нее, если прописать в [global], то для всех общих папок.
Пример использования параметра.
hosts allow = comp1, 192.168.1., 192.168.160.0/255.255.252.0
* в нашем примере мы разрешим доступ только для компьютера comp1, компьютеров из сетей 192.168.1.0/24 и 192.168.160.0/22.
2. hosts deny
Параметр аналогичный hosts allow, только он наоборот — запрещает доступ для хостов и сетей. Например:
hosts deny = comp2, 192.168.2., 192.168.164.0/255.255.252.0
hosts deny = ALL EXCEPT 192.168.3.
3. interfaces
По умолчанию samba использует все сетевые интерфейсы, кроме локальной петли (127.0.0.1). Параметр interfaces позволит указать, на каком сетевом адаптере файловый сервер должен принимать запросы. Пример:
interfaces = ens32 192.168.1.15/24 192.168.2.15/255.255.255.0
4. Force User/Group
Опции force user и force group позволяют задать пользователя и группу, от которых будет работать подключение пользователя к samba. Параметр может оказаться полезным для создания шары из каталога с уже назначенным владельцем, которого мы не хотим менять.
Прописывается для шары:
force user = apache
force group = apache
* данная настройка позволит подключаться к шаре под пользователем apache.
5. Include
Позволяет подключить дополнительный файл с конфигурацией.
include = /etc/samba/conf.d/shares.conf
* данная опция будет дополнительно подключать конфигурацию из файла /etc/samba/conf.d/shares.conf (прописывается полный путь).
Читайте также
Возможно, эти инструкции будут также Вам полезны:
1. Установка и настройка samba в Linux CentOS.
2. Как настроить автоматическое монтирование дисков в Linux.
3. Настройка дисковых квот в Linux.
В данной статье будет рассмотрен вариант развёртывания файлового сервера Samba на базе операционной системы UBUNTU и организация его взаимодействия с доменов Windows.
Для примера использован следующие исходные данные:
дистрибутив: UBUNTU 16.04.4
имя сервера Linux: 2UBUNTU-16
домен Windows: TESTDOMAIN.LOCAL
контроллеры домена: 2SRV1.TESTDOMAIN.LOCAL, 2SRV2.TESTDOMAIN.LOCAL
администратор контроллера домена: adm
Подготовка
После установки дистрибутива выполняем обновление информации о пакетах и сами пакеты:
sudo apt-get update
sudo apt-get upgrade
Для удобства работы с сервером можно дополнительно установить Webmin (систему управления сервером LINUX через web-интерфейс).
Если есть необходимость, то меняем имя сервера:
hostnamectl set-hostname 2UBUNTU-16
Добавляем доменное имя сервера в файл hosts
sudo nano /etc/hosts
127.0.0.1 localhost
127.0.1.1 2ubuntu-16 2ubuntu-16.testdomain.local
После этого перезагружаем сервер:
sudo reboot
Установка Samba
Помимо установки Samba, так же устанавливаем пакеты Kerberos и Winbind (для возможности подключения и взаимодействия с доменом на Windows):
sudo apt install krb5-user winbind samba libnss-winbind libpam-winbind
При установке Kerberos будет запрошена область по умолчанию — нужно указать адрес домена (в нашем случае TESTDOMAIN.LOCAL)
Проверяем доступность контроллера домена:
ping -c 5 TESTDOMAIN.LOCAL
Для успешной работы с доменом нужно установить синхронизацию времени с контроллером домена.
Устанавливаем пакет:
sudo apt install ntp
Настраиваем файл конфигурации службы ntp
sudo nano /etc/ntp.conf
Нужно закомментировать все текущие указанные серверы проверки время и добавить свой домен ( pool TESTDOMAIN.LOCAL)
Перезапускаем службу времени и проверяем статус синхронизации:
sudo systemctl restart ntp
ntpq -p
Запрашиваем тикет у Kerberos у контроллера домена:
kinit Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Если не отобразилась информация об ошибке, то запрос прошёл верно и можно проверить результат:
klist
Настройка Samba
Сохраним резервную копию файла конфигурации:
sudo cp /etc/samba/smb.conf /etc/samba/smb.default.conf
Далее редактируем файл конфигурации:
sudo nano /etc/samba/smb.conf
Пример заполнения раздела [global]
[global]
security = ADS
workgroup = TESTDOMAIN
realm = TESTDOMAIN.LOCAL
encrypt passwords = yes
# Default idmap config for local BUILTIN accounts and groups
idmap config * : backend = tdb
idmap config * : range = 3000-7999
# idmap config for the TESTDOMAIN domain
idmap config TESTDOMAIN : backend = rid
idmap config TESTDOMAIN : range = 10000-999999
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
После сохранения изменений в файле smb.conf выполняем проверку:
testparm
Взаимодействие Samba с доменом Windows
Если ошибок не обнаружено, то подключаем сервер к домену:
sudo net ads join -U Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
В случае отсутствия ошибок проверяем наличия сервера в списке компьютеров домена на стороне контроллера.
Перезагружаем сервис Winbind:
service winbind restart
Проверяем связь с контроллером домена, а затем список пользователей и групп домена Windows:
wbinfo --ping-dc
wbinfo -u
wbinfo -g
Чтобы UBUNTU могла использовать не только локальные группы и пользователей, но и доменные данные, нужно отредактировать настройки диспетчера службы имен NSS (Name Services Switch)
sudo nano /etc/nsswitch.conf
Необходимо дописать следующие значения:
passwd: compat winbind
group: compat winbind
После этого можно проверить возможность просмотра пользователей и групп:
getent passwd adm
getent group "пользователи домена"
Добавляем папку общего ресурса:
sudo mkdir -p /srv/samba/public
Назначаем имя владельца и группу для созданной папки:
sudo chown "adm":"пользователи домена" /srv/samba/public
Редактируем файл конфигурации Samba, чтобы добавить поддержку Windows ACLs и сетевую папку public
sudo nano /etc/samba/smb.conf
[global]
# Windows ACLs Support
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
[Public]
path = /srv/samba/public/
read only = no
Перезапустим службу Samba (чтобы применить изменения):
service smbd restart && service nmbd restart
Для удобства удалённой настройки разрешений сетевых ресурсов добавим администраторам домена привилегию SeDiskOperatorPrivilege:
net rpc rights grant "TESTDOMAINадминистраторы домена" SeDiskOperatorPrivilege -U "TESTDOMAINadm"
Проверяем подключение привилегий:
net rpc rights list privileges SeDiskOperatorPrivilege -U "TESTDOMAINadm"
Теперь управлять разрешениями для общих ресурсов можно удалённо с сервера Windows. Для этого запускаем оснастку «Управление компьютером» от имени администратора домена, выбираем «Подключиться к другому компьютеру…» и выбираем имя сервера Linux ( 2UBUNTU-16.TESTDOMAIN.LOCAL)
В разделе «Служебные программы» — «Общие папки» — «Общие ресурсы» будут отображаться сетевые ресурсы, доступные на сервере Linux.
Дополнительно:
Дополнительно можно подключать «корзину» для отдельных ресурсов (чтобы сохранять удалённые файлы и папки).
Проверяем наличие соответствующего модуля:
dpkg -l |grep samba-vfs-modules
Устанавливаем, если он отсутствует:
apt install samba-vfs-modules
Добавляем поддержку корзины для общего ресурса Public
sudo nano /etc/samba/smb.conf
[Public]
path = /srv/samba/public/
read only = no
vfs object = recycle
recycle: repository = .recycle/%U
recycle: touch = yes
recycle: keeptree = yes
recycle: versions = yes
«vfs object = recycle» – включение корзины для общего ресурса;
«recycle: repository = .recycle/%U» – папка, куда будут перемещаться удаленные файлы;
«recycle: touch = yes» – обновлять дату при перемещении файла в корзину;
«recycle: keeptree = yes» – сохранять структуру каталогов удаленного файла;
«recycle: versions = yes» – при перемещении в корзину файла с существующим именем, добавлять к началу имени файла префикс «Copy #».
Для создания статьи использовались следующие материалы:
http://www.linuxrussia.com/samba-as-domain-controller.html
https://4skill.ru/fajlovyj-server-samba-v-domene-windows/
One of the most common ways to network Ubuntu and Windows computers is to configure Samba as a File Server. This section covers setting up a Samba server to share files with Windows clients.
The server will be configured to share files with any client on the network without prompting for a password. If your environment requires stricter Access Controls see Share Access Control.
Installation
The first step is to install the samba package. From a terminal prompt enter:
$ sudo apt install samba
That’s all there is to it; you are now ready to configure Samba to share files.
Configuration
The main Samba configuration file is located in /etc/samba/smb.conf
. The default configuration file has a significant number of comments in order to document various configuration directives.
Note
Not all the available options are included in the default configuration file. See the
smb.conf
man page or the Samba HOWTO Collection for more details.
First, edit the workgroup
parameter in the [global] section of /etc/samba/smb.conf
and change it to better match your environment:
workgroup = EXAMPLE
Create a new section at the bottom of the file, or uncomment one of the examples, for the directory to be shared:
[share]
comment = Ubuntu File Server Share
path = /srv/samba/share
browsable = yes
guest ok = yes
read only = no
create mask = 0755
-
comment: a short description of the share. Adjust to fit your needs.
-
path: the path to the directory to share.
This example uses
/srv/samba/sharename
because, according to the Filesystem Hierarchy Standard (FHS),/srv
is where site-specific data should be served. Technically Samba shares can be placed anywhere on the filesystem as long as the permissions are correct, but adhering to standards is recommended. -
browsable: enables Windows clients to browse the shared directory using Windows Explorer.
-
guest ok: allows clients to connect to the share without supplying a password.
-
read only: determines if the share is read only or if write privileges are granted. Write privileges are allowed only when the value is no, as is seen in this example. If the value is yes, then access to the share is read only.
-
create mask: determines the permissions new files will have when created.
Now that Samba is configured, the directory needs to be created and the permissions changed. From a terminal enter:
$ sudo mkdir -p /srv/samba/share
$ sudo chown nobody:nogroup /srv/samba/share/
Note
The -p switch tells mkdir to create the entire directory tree if it doesn’t exist.
Finally, restart the samba services to enable the new configuration:
$ sudo systemctl restart smbd.service nmbd.service
Warning
Once again, the above configuration gives all access to any client on the local network. For a more secure configuration see Share Access Control.
From a Windows client you should now be able to browse to the Ubuntu file server and see the shared directory. If your client doesn’t show your share automatically, try to access your server by its IP address, e.g. \192.168.1.1
, in a Windows Explorer window. To check that everything is working try creating a directory from Windows.
To create additional shares simply create new [sharename] sections in /etc/samba/smb.conf
, and restart Samba. Just make sure that the directory you want to share actually exists and the permissions are correct.
Note
The file share named “[share]” and the path
/srv/samba/share
are just examples. Adjust the share and path names to fit your environment. It is a good idea to name a share after a directory on the file system. Another example would be a share name of [qa] with a path of/srv/samba/qa
.
Resources
-
For in depth Samba configurations see the Samba HOWTO Collection
-
The guide is also available in printed format.
-
O’Reilly’s Using Samba is another good reference.
-
The Ubuntu Wiki Samba page.