В статье рассматривается настройка samba сервера Ubuntu и организация совместной работы Linux и Windows клиентов. В подобных хранилищах могут находиться резервные копии пользовательских файлов и баз данных, также хранилища применяются для хранения информации, к которой необходимо обеспечить общий доступ сотрудников компании или определенного подразделения компании.
Samba является самым популярным программным пакетом, используемым для создания файловых хранилищ, (SMB/CIFS хранилище, позволяющее организовать файловый сервер, к которому будут иметь доступ клиенты использующие машины основанные как на ОС Linux, так и на ОС Windows).
Также применяются 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