Создание файлового сервера на ubuntu. Поднимаем файловый сервер на Samba под CentOS. Практическое задание: настройка файлового сервера с доступом только для чтения
Samba — это открытый пакет программ для nix-систем, в которых реализованы некоторые фичи, предоставляемые Windows Server. Samba может выступать в качестве контроллера домена, сервиса Active Directory, может шарить принтеры и директории по сети. В рамках этой заметки мы рассмотрим использование Samba в качестве файлового сервера. Мотивация для использования именно Samba, а не, скажем, FTP , может быть разная. Как минимум, с ее помощью и вправду очень удобно перекидывать файлы между Windows- и Linux-машинами. Просто монтируешь каталог и вперед.
Ниже будет рассмотрена установка Samba под CentOS. Установка под другие дистрибутивы Linux практически ничем не отличается. Далее по тексту предполагается, что Samba поднимается на машине с адресом 10.24.5.42.
Шарим каталог всем
Установка Samba:
sudo yum install samba
Проверяем, что в /etc/samba/smb.conf в секции не закомментирована строчка:
Также можно поменять название workgroup. У меня было написано так:
workgroup = MYGROUP
В конце файла дописываем:
comment = Samba File Server Share
path = /srv/samba/share
browsable = yes
guest ok = yes
read only = no
create mask = 0755
sudo
mkdir
-p
/
srv/
samba/
share
sudo
chown
nobody:nobody /
srv/
samba/
share/
sudo
service
smb start
sudo
service
nmb start
# запуск сервисов при старте системы
sudo
chkconfig nmb on
sudo
chkconfig smb on
Теперь, скажем, в дэфолтном файловом менеджере Unity можно прицепиться к smb://10.24.5.42/share , создать там каталогов и залить в них файлов. А также проверить, что эти изменения происходят не только локально, но и на сервере.
Логи Samba лежат в /var/log/samba/. Используемые Samba порты — 139 и 445. Их можно пробрасывать через SSH или с помощью Ncat . Это работает, я проверял.
Доступ по логину и паролю
Давать доступ к каталогу всем подряд небезопасно. Давайте исправим эту ситуацию:
sudo
adduser
smbuser
sudo
smbpasswd -a
smbuser
sudo
mkdir
-p
/
srv/
samba/
smbuser
sudo
chown
smbuser:smbuser /
srv/
samba/
smbuser
В /etc/samba/smb.conf дописываем:
path = /srv/samba/smbuser
available = yes
valid users = smbuser
read only = no
browsable = yes
public = yes
writable = yes
sudo
service
smb restart
sudo
service
nmb restart
Монтируем каталог в Linux и Windows:
Ура, файлы успешно шарятся между Windows и Linux!
Монтирование через CLI
Если GUI недоступен, примонтировать каталог можно так:
sudo
yum install
samba-client samba-common cifs-utils
mkdir
smbuser
sudo
mount.cifs //
10.24.5.42/
smbuser /
home/
eax/
smbuser \
-o
user
=smbuser,password
=PASSWORD,uid
=1000
# 1000 - uid нашего юзера
Если каталог стал больше не нужен, говорим.
Один из наиболее стандартных способов взаимодействия по сети между компьютерами Ubuntu и Windows — это настройка Samba в качестве файлового сервера. Эта глава рассказывает как настроить Samba сервер для разделения файлов с клиентами Windows.
Сервер будет настроен на доступ к файлам для любого клиента в сети без запроса пароля. Если ваше окружение требует более строгого контроля доступа, смотрите раздел Защита серверов Samba.
Установка
Настройка
Основной файл настройки Samba — /etc/samba/smb.conf. Изначальный файл конфигурации имеет значительное количество комментариев для документирования различных директив настройки.
Не все возможные опции включены в файле настроек по умолчанию. Смотрите руководство man smb.conf или Сборник ЧаВо по Samba для уточнения деталей.
1. Сначала измените следующие пары ключ/значение в секции файла /etc/samba/smb.conf:
Workgroup = EXAMPLE ... security = user
Параметр security находится значительно ниже в секции и по умолчанию закомментирован. Также замените EXAMPLE на что-то более соответствующее вашему окружению.
2. Создайте новую секцию в конце файла или раскомментируйте один из примеров для каталога, который нужно настроить на общий доступ:
Comment = Ubuntu File Server Share path = /srv/samba/share browsable = yes guest ok = yes read only = no create mask = 0755
comment : короткое описание разделяемого ресурса. Используется для вашего удобства.
path : путь до разделяемого каталога.
Этот пример использует /srv/samba/sharename поскольку, в соответствии со стандартом иерархии файловых систем (FHS), каталог /srv — это место, где должны находится все данные, относящиеся к данному сайту. Технически разделяемый ресурс Samba может быть размещен в любом месте файловой системы, где позволяют файловые ограничения доступа, но следование стандартам рекомендуется.
browsable : позволяет клиентам Windows просматривать содержимое разделяемого каталога с помощью проводника Windows.
guest ok : позволяет клиентам подключаться к разделяемому ресурсу без указания пароля.
read only : определяет доступность ресурса только на чтение или с привилегиями на запись. Привилегии на запись доступны только при указании no , как показано в данном примере. Если значение yes , то доступ к ресурсу будет только на чтение.
create mask : определяет какие права доступа будут установлены для создаваемых новых файлов.
3. Теперь, поскольку Samba настроена, требуется создать каталог и установить на него права доступа. Введите в терминале:
Sudo mkdir -p /srv/samba/share sudo chown nobody.nogroup /srv/samba/share/
параметр -p говорит mkdir создать полное дерево каталога, если оно не существует.
4. Наконец, перезапустите сервисы samba для применения новых настроек:
Sudo restart smbd sudo restart nmbd
Еще раз : данная конфигурация предоставляет полный доступ любому клиенту в локальной сети. Для более безопасной настройки смотрите раздел Защита серверов Samba.
Теперь вы можете находить Ubuntu файл сервер с помощью клиента Windows и просматривать его разделяемые каталоги. Если ваш клиент не показывает ваши разделяемые ресурсы автоматически, попробуйте обратиться к вашему серверу по его IP адресу, например, \\192.168.1.1, из окна проводника Windows. Для проверки, что все работает, попробуйте создать каталог внутри вашего разделяемого ресурса из Windows.
Для создания дополнительных разделяемых ресурсов создайте новую секцию в /etc/samba/smb.conf и перезапустите Samba. Просто убедитесь, что разделяемый каталог создан и у него корректные права доступа.
Разделяемый ресурс «» и путь /srv/samba/share — это просто примеры. Установите название ресурса и имя каталога в соответствии с вашим окружением. Хорошей идеей является использование в качестве названия ресурса имени его каталога в файловой системе. Другими словами ресурс можно указать как для каталога /srv/samba/qa.
- 30.03.2010
Файловый сервер, наряду с роутером, можно без преувеличения назвать предметом первой необходимости для любой организации. Использование ОС Linux для такого сервера выглядит весьма привлекательно, во всяком случае в небольших организациях, где не требуется тесной интеграции с AD. А сэкономленные на стоимости Windows Server и клиентских лицензий к нему деньги будут весьма кстати в наши кризисные времена.
Мы будем рассматривать настройку файлового сервера на примере нашей условной сети, в которой уже присутствует роутер, настройку которого мы , хотя никто не мешает объединить эти функции на одном сервере.
Теперь перейдем непосредственно к настройке роли файлового сервера. Для ее реализации нам потребуется Samba , этот пакет предоставляет общий доступ к файлам и принтерам клиентам сетей Microsoft.
Sudo apt-get install samba
Для настройки отредактируем файл /etc/samba/smb.conf , начнем с глобальной секции, параметры которой применяются для всех сервисов. Зададим имя рабочей группы:
workgroup = WORKGROUP
Для доступа к ресурсам файлового сервера без авторизации на нем зададим следующий параметр:
Security = share
Если сервер имеет несколько сетевых интерфейсов, например совмещен с роутером, то можно (и нужно) ограничить доступ к файловому серверу внутренней сетью. Допустим у нас eth0 - внешняя сеть, eth1 - внутренняя, для работы только с внутренним интерфейсом укажем:
Interfaces = lo, eth1
bind interfaces only = true
Первоначально этих настроек достаточно, не забываем сохранить изменения. Рассмотрим настройки сервисных секций, допустим нам нужен общий ресурс 1CBases для размещения баз 1C:Предприятие. Создадим новый каталог /data/1CBases , и установим полные права на него для всех:
Sudo mkdir /data/1CBases
sudo chmod 777 /data/1CBases
В самом конце smb.conf добавляем следующую секцию:
path = /data/1CBases
guest ok = yes
writeable = yes
С параметрами секции все предельно понятно, название секции (в квадратных скобках) определяет имя общего ресурса. Первый параметр указывает путь к нему, второй и третий разрешают гостевой доступ и запись соответственно. Сохраняем файл конфигурации и перезапускаем Samba :
Sudo /etc/init.d/samba restart
После чего наш сервер должен быть виден в сетевом окружении Windows и на нем будет доступна общая папка 1СBases .
Для удаленного администрирования Samba рекомендуем установить предоставляющий web-интерфейс пакет Swat :
Sudo apt-get install swat
Для того, чтобы воспользоваться всеми возможностями пакета необходимо будет авторизоваться под root"ом. Но по умолчанию в Ubuntu root не имеет пароля, поэтому зададим его (и не забудьте, что теперь для выполнения административных задач вам нужно вводить именно его) и перезагрузимся:
Sudo passwd root
sudo reboot
Теперь в любом браузере достаточно набрать http://имя_сервера:901 и, после авторизации, получить полный доступ к настройкам Samba .
Авторами Swat являются разработчики Samba , поэтому можно расценивать это решение как "родное". Действительно Swat предоставляет полный доступ ко всем настройкам Samba и позволяет выполнять практически любые задачи без ручной правки smb.conf .
Одно из самых частых применений серверов в целом — файловые хранилища. В подобных хранилищах могут находиться резервные копии пользовательских файлов и баз данных, также хранилища применяются для хранения информации, к которой необходимо обеспечить общий доступ сотрудников компании или определенного подразделения компании. В рамках данного материала — настройка Samba сервера.
Samba является самым популярным программным пакетом, используемым для создания файловых хранилищ, (SMB/CIFS хранилище, позволяющее организовать файловый сервер, к которому будут иметь доступ клиенты использующие машины основанные как на ОС Linux, так и на ОС Windows).
Также применяются NFS («Network File Systems») и iSCSI хранилища, в основе которых лежат блоки данных (партиции, LVM), к которым предоставляется удаленный доступ. iSCSI «экспортирует» не файловую систему, а само устройство, удаленно с ним можно работать как с локальным диском.
В рамках статьи будет рассмотрен пример построения файлового хранилища с использованием Samba.
Настройка Samba сервера на Ubuntu
Samba широко применяется именно из за возможности работы с клиентами, использующими разные ОС. Она может быть интегрирована с Active Directory, что, тем не менее, распространенной практикой не является.
Файловый сервер, который будет настраиваться, предназначен для обслуживания 30-50 клиентов.
Будет последовательно настроено две базовые конфигурации: файловое хранилище, доступ к которому имеют все пользователи организации («файлопомойка «) и хранилище, имеющее определенные разграничения доступа.
Читаем описание пакета и проверяем зависимости:
apt-cache show samba | less
Если в процессе установки возникает ошибка 404 — это означает, что каких-либо файлов, необходимых для корректной установки в репозиториях найдено не было.
Обновляем списки репозиториев (при необходимости заранее добавив нужные и устанавливаем пакет; && означает, что выполняться вторая часть команды будет только в случае если успешно будет выполнена первая).
apt-get update && apt-get install samba
workgroup = remote-tech-support
Значение параметра workgroup приводим в соответствие с рекомендациями, содержащимися в закомментированных строках конфига — указываем свой домен — настройка данного параметра, к слову, вовсе не обязательна.
Пакет будет работать при использовании опций по-умолчанию, однако чтобы обеспечить минимальный уровень безопасности одно значение необходимо скорректировать:
Убираем знак комментария перед параметром
security = user
Настройка базовой конфигурации файлового сервера
Функция Samba сейчас — обеспечивать минимальный функционал — возможность свободного обмена файлами.
Переходим к нижней части конфига и добавляем «шару»:
read only = no
path = /mnt/fileserver
guest ok = no
Принципиальными являются директивы с названием шары, уровнем доступа и путем к каталогу, к которому предоставляется общий доступ.
read only определяет возможность писать в расшаренные файлы
Перезагружаем сервис
/etc/init.d/smbd restart
Создает каталог для файлового сервера
Теперь логический том размеров 10 Гб, называем его vg0
lvcreate -L 10G -n samba vg0
Добавляем в fstab чтобы том монтировался каждый раз при перезагрузке компьютера
/dev/vg0/samba /mnt/fileserver ext4 defaults 0 0
Обновляем информацию о примонтированных устройствах
Проверяем, отображается ли шара в файловой системе
Пароли для доступа к файловому серверу
Пароли пользователей для работы с smbd отличаются от паролей системных пользователей (которые задаются в /etc/passwd).
Пароли для работы с Samba задаются при помощи команды smbpasswd
Создаем тестовые директории
Видим, что владелец TestA student
Владелец TestB — root
Сейчас целью является обеспечить возможность всем пользователям записывать информацию в файлы в обеих директориях.
Создаем новую группу fileserver и добавляем в нее пользователя student
adduser student fileserver
Видим, что тестовые директории имеют группу владельца root.
Удаляем директории
Устанавливаем на директорию шары group ID bit.
chgrp fileserver fileserver/
chmod g+rws fileserver/
За счет +s права (принадлежность пользователю) будут наследоваться всеми файлами, создаваемыми внутри расшаренного
каталога.
Проверяем, что значится группа пользователя fileserver
Добавляем в конфиг строку, за счет которой все пользователи, получающие доступ к шаре, будут временно добавляться в группу fileserver
mcedit /etc/samba/smb.conf
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
Открываем другой терминал и логинмся от имени пользователя student
ALT + F2
Создадим файлы, которые владельцем которых будет student
drwxr-sr-x student fileserver TestA
drwxr-sr-x student fileserver TestB
Владелец каталогов student, группа владельца — fileserver. Присутствует security bit (s), установленный ранее.
Включаем ПК с ОС Windows, находящийся в той же подсети. авторизуемся с реквизитами пользователя student.
В командной строке набираем //server01 (или любое другое имя, данное ранее серверу)
Видим каталог Public share, в котором находятся директории TestA и TestB
Создаем текстовый документ в Public share — убеждаемся в том, что никаких ошибок не возникает.
Смотрим свойства TestB — видим, что владелец каталога root, группа — fileserver. Для TestA — fileserver и student соответственно.
В TestA можно создавать и редактировать любые файлы, TestB можно просматривать за счет группы fileserver, создавать и изменять файлы здесь нельзя.
Прав пользователя или прав группы на запись достаточно. Необходимости использовать и пользователя и группу для одного каталога нет.
Настройка более безопасной конфигурации и разграничение прав
Сейчас мы изменим конфигурацию Samba предоставив каждому пользователю каталог для хранения персональной информации
mcedit /etc/samba/smb.conf
снимаем знаки комментария со строк, относящихся к секции . После перезапуска 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
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, он должен уже состоять в ней.
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 чувствительны к регистру.
Считываем конфигурацию
Задаем пользователей и группы пользователей:
chmod root.fileserver fileserver
chmod root.accounting Accounting
Проверям корректно ли настроена принадлежность каталогов
Удаляем тестовые каталоги:
Возвращаемся в Windows . Поскольку student является членом группы IT — он должен иметь доступ только в каталог, относящийся к департаменту IT. Доступ в другие каталоги для него должен отстутсвовать (он может просматривать содержимое директории Accounting, однако создавать и редактировать файлы не может). Убеждаемся в том, что это действительно так.
Произведем настройки согласно последнему сценарию. Создадим группу с ограниченным доступом.
adduser student internet_dev
chown www-data.internet_dev internet/
mcedit /etc/samba/smb.conf
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
В Windows обновим информацию на экране (F5) и попытаемся открыть каталог internet. Если выполненные настройки корректны — успеха данные попытки иметь не будут — будет бесконечно выводиться окно ввода пароля.
adduser student internet_dev
Создадим и откроем документ в Windows — сохранение не выполняем.
В Linux выполняем smbstatus
smbstatus — команда, показывающая испольуземые шары, открытые в них файлы и использующих их пользователей.
Находим ID процесса, отвечающего за поддержание соединения с шарой (допустим, 2456) и убиваем его
Делаем ps aux и среди процессов видим вновь породившийся процесс того же рода, но с другим ID — его восстоздала Samba
Вновь идем в Windows и видим, что открытый, но не сохраненный документ находится в том же состоянии в котором мы его оставили, его можно продолжить редактировать, затем сохранить.
Проделанный опыт подтверждает, что при перебоях в работе файлового серевера данные, с которыми производится работа, потеряны не будут.