Настройка файлового сервера Ubuntu Debian

Одно из самых частых применений серверов в целом — файловые хранилища. В подобных хранилищах могут находиться резервные копии пользовательских файлов и баз данных, также хранилища применяются для хранения информации, к которой необходимо обеспечить общий доступ сотрудников компании или определенного подразделения компании. В рамках данного материала — настройка Samba сервера.


Samba является самым популярным программным пакетом, используемым для создания файловых хранилищ, (SMB/CIFS хранилище, позволяющее организовать файловый сервер, к которому будут иметь доступ клиенты использующие машины основанные как на ОС Linux, так и на ОС Windows).

Настройка файлового сервера Ubuntu Debian

Также применяются NFS («Network File Systems») и iSCSI хранилища, в основе которых лежат блоки данных (партиции, LVM), к которым предоставляется удаленный доступ. iSCSI «экспортирует» не файловую систему, а само устройство, удаленно с ним можно работать как с локальным диском.

В рамках статьи будет рассмотрен пример построения файлового хранилища с использованием Samba.

 

 

Настройка Samba сервера на Ubuntu

Samba широко применяется именно из за возможности работы с клиентами, использующими разные ОС. Она может быть интегрирована с Active Directory, что, тем не менее, распространенной практикой не является.

Файловый сервер, который будет настраиваться, предназначен для обслуживания 30-50 клиентов.

Будет последовательно настроено две базовые конфигурации: файловое хранилище, доступ к которому имеют все пользователи организации («файлопомойка«) и хранилище, имеющее определенные разграничения доступа.



Читаем описание пакета и проверяем зависимости:

apt-cache show samba | less

apt-get install samba

 

Если в процессе установки возникает ошибка 404 — это означает, что каких-либо файлов, необходимых для корректной установки в репозиториях найдено не было.

Обновляем списки репозиториев (при необходимости заранее добавив нужные и устанавливаем пакет; && означает, что выполняться вторая часть команды будет только в случае если успешно будет выполнена первая).

 

apt-get update && apt-get install samba

cd /etc/samba

mcedit smb.conf

workgroup = remote-tech-support

 

Значение параметра workgroup приводим в соответствие с рекомендациями, содержащимися в закомментированных строках конфига — указываем свой домен — настройка данного параметра, к слову, вовсе не обязательна.

 

Пакет будет работать при использовании опций по-умолчанию, однако чтобы обеспечить минимальный уровень безопасности одно значение необходимо скорректировать:

Убираем знак комментария перед параметром

security = user

 

 

Настройка базовой конфигурации файлового сервера

Функция Samba сейчас — обеспечивать минимальный функционал — возможность свободного обмена файлами.

Переходим к нижней части конфига и добавляем «шару»:

[Public Share]
comment = Everybody can use that share
read only = no
path = /mnt/fileserver
guest ok = no

 

Принципиальными являются директивы с названием шары, уровнем доступа и путем к каталогу, к которому предоставляется общий доступ.

read only определяет возможность писать в расшаренные файлы

guest ok позволяет или не позволяет неавторизованным пользователям использовать файловый сервер

Перезагружаем сервис

/etc/init.d/smbd restart

или

service smbd restart

 

Создает каталог для файлового сервера

mkdir /mnt/fileserver

 

Теперь логический том размеров 10 Гб, называем его vg0

lvcreate -L 10G -n samba vg0

 

Добавляем в fstab чтобы том монтировался каждый раз при перезагрузке компьютера

mcedit /etc/fstab

/dev/vg0/samba    /mnt/fileserver    ext4    defaults    0    0

 

Обновляем информацию о примонтированных устройствах

mount -a

Проверяем, отображается ли шара в файловой системе

df |grep fileserver

service smbd restart

 

Пароли для доступа к файловому серверу

Пароли пользователей для работы с smbd отличаются от паролей системных пользователей (которые задаются в /etc/passwd).

Пароли для работы с Samba задаются при помощи команды smbpasswd

smbpasswd student

Создаем тестовые директории

cd /mnt/fileserver

mkdir TestA

chown student TestA

ls -l

Видим, что владелец TestA student

mkdir TestB

ls -l

Владелец TestB — root

 

Сейчас целью является обеспечить возможность всем пользователям записывать информацию в файлы в обеих директориях.

Создаем новую группу fileserver и добавляем в нее пользователя student

addgroup fileserver

adduser student fileserver

ls -l

Видим, что тестовые директории имеют группу владельца root.

 

Удаляем директории

rm -R Test*

 

Устанавливаем на директорию шары group ID bit.

chgrp fileserver fileserver/

chmod g+rws fileserver/

За счет +s права (принадлежность пользователю) будут наследоваться всеми файлами, создаваемыми внутри расшаренного

каталога.

Проверяем, что значится группа пользователя fileserver

 

 

Добавляем в конфиг строку, за счет которой все пользователи, получающие доступ к шаре, будут временно добавляться в группу fileserver

mcedit /etc/samba/smb.conf

 

[Public Share]
comment = Everybody can use that share
read only = no
path = /mnt/fileserver
guest ok = no
force group = fileserver
force create mode = 666
force create mode = 777

 

service smbd restart

Открываем другой терминал и логинмся от имени пользователя student

ALT + F2

 

Создадим файлы, которые владельцем которых будет student

cd /mnt/fileserver

mkdir TestA TestB

ls -l

Видим:

drwxr-sr-x student fileserver TestA
drwxr-sr-x student fileserver TestB

 

Владелец каталогов student, группа владельца — fileserver. Присутствует security bit (s), установленный ранее.

chown root TestB

Включаем ПК с ОС Windows, находящийся в той же подсети. авторизуемся с реквизитами пользователя student.

 

В командной строке набираем //server01 (или любое другое имя, данное ранее серверу)
Видим каталог Public share, в котором находятся директории TestA и TestB

 

Создаем текстовый документ в Public share — убеждаемся в том, что никаких ошибок не возникает.
Смотрим свойства TestB — видим, что владелец каталога root, группа — fileserver. Для TestA — fileserver и student соответственно.

В TestA можно создавать и редактировать любые файлы, TestB можно просматривать за счет группы fileserver, создавать и изменять файлы здесь нельзя.

 

Прав пользователя или прав группы на запись достаточно. Необходимости использовать и пользователя и группу для одного каталога нет.

 

 

Настройка более безопасной конфигурации и разграничение прав

Сейчас мы изменим конфигурацию Samba предоставив каждому пользователю каталог для хранения персональной информации

mcedit /etc/samba/smb.conf

снимаем знаки комментария со строк, относящихся к секции [Home]. После перезапуска Samba при авторизациии каждый пользователь будет видеть каталог имя которого будет совпадать с именем пользователя, в данном каталоге могут храниться персональные данные, дсотуп к которым будет только у пользователя-владельца каталога (и у root-а).

 

Устанавливаем значение параметра read only в секции в no, также редактируем значения других параметров:

read only = no
create mask = 0700
directory mask = 0700
valid users = %S

 

/etc/init.d/samba reload

 

Идем в Windows. Необходимо обновить список расшаренных каталогов поскольку ОС кэширует данные — один из способов — перейти непосредственно в каталог пользователя, в командной строке набираем \\server01, затем в поле адреса \\server01\student

Оказываемся в домашнем каталоге пользователя, где можем создавать файлы и директории. Создаем каталог

 

Обратно в Linux. Смотрим права и видим, что владелец и группа владельца student

ls-l

[Accounting]
comment = Share for accounting department
read only = no
path = /mnt/fileserver/Accounting
guest ok = no
force group = +accounting
force create mode = 660
force directory mode = 770

 

Здесь добавляем безопасности за счет выставления +accounting, в отличие от настроенной ранее конфигурации пользователи не добавляются в группу, а только используют ее для получения доступа к шаре. За счет выставления прав достигается невозможность пользователей не входящих в группу владельца даже читать файлы, созданные Samba.

 

Соответственно чтобы пользователю назначались права группы пользователей accounting, он должен уже состоять в ней.

[IT]
comment = IT department
read only = no
path = /mnt/fileserver/IT
guest ok = no
force group = +IT
force create mode = 660
force directory mode = 770

 

Создаем каталоги:

mkdir /mnt/fileserver/Accounting

mkdir /mnt/fileserver/IT

Добавляем группы и существующего пользователя в одну из групп. Все имена пользователей и групп в Linux чувствительны к регистру.

groupadd IT

groupadd accounting

adduser student IT

Считываем конфигурацию

reload smbd

cd /mnt

Задаем пользователей и группы пользователей:

chmod root.fileserver fileserver

chmod g+wrs fileserver

chmod root.IT IT

chmod g+wrs IT

chmod root.accounting Accounting

chmod g+wrs Accounting

Проверям корректно ли настроена принадлежность каталогов

ls -l

Удаляем тестовые каталоги:

rm -R TestA TestB

Возвращаемся в Windows. Поскольку student является членом группы IT — он должен иметь доступ только в каталог, относящийся к департаменту IT. Доступ в другие каталоги для него должен отстутсвовать (он может просматривать содержимое директории Accounting, однако создавать и редактировать файлы не может). Убеждаемся в том, что это действительно так.

 

 

Произведем настройки согласно последнему сценарию. Создадим группу с ограниченным доступом.

mkdir internet

addgroup internet_dev

adduser student internet_dev

ls -l

chown www-data.internet_dev internet/

chmod g+rws internet/

ls -l

mcedit /etc/samba/smb.conf

[internet]
comment = IT department
read only = no
path = /var/www/internet
guest ok = no
valid users = @internet_dev
force group = internet_dev
force create mode = 664
force directory mode = 775

 

Значение valid users здесь предполагает присутствие пользователей в группе internet_dev, также здесь можно задать список пользователей.
Иные права устанавливаются потому, что с каталогом /var/www/internet будут работать не только пользователи, но и, в данном случае, Apache

reload smbd

 

В Windows обновим информацию на экране (F5) и попытаемся открыть каталог internet. Если выполненные настройки корректны — успеха данные попытки иметь не будут — будет бесконечно выводиться окно ввода пароля.

adduser student internet_dev

 

Создадим и откроем документ в Windows — сохранение не выполняем.

 

В Linux выполняем smbstatus

smbstatus — команда, показывающая испольуземые шары, открытые в них файлы и использующих их пользователей.

Находим ID процесса, отвечающего за поддержание соединения с шарой (допустим, 2456) и убиваем его

kill -9 2456

 

Делаем ps aux и среди процессов видим вновь породившийся процесс того же рода, но с другим ID — его восстоздала Samba

 

Вновь идем в Windows и видим, что открытый, но не сохраненный документ находится в том же состоянии в котором мы его оставили, его можно продолжить редактировать, затем сохранить.

 

Проделанный опыт подтверждает, что при перебоях в работе файлового серевера данные, с которыми производится работа, потеряны не будут.

 

Читайте также про LVM — логические разделы, которые использовались при настройке Samba