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


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



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


Настройка samba сервера


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

В рамках статьи будет рассмотрен пример построения файлового хранилища с использованием 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 сервера в базовой конфигурации


Функция 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


Создадим файлы, которые владельцем которых будет 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 сервера на этом завершена.


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




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


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


mcedit /etc/samba/smb.conf

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

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



/etc/init.d/samba reload


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

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


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

Далее:

[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 и видим, что открытый, но не сохраненный документ находится в том же состоянии в котором мы его оставили, его можно продолжить редактировать, затем сохранить.

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



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

Сказать спасибо