Корпоративный файловый сервер на linux. Файловый сервер. Какую ОС и файловую систему выбрать? Подключение RAM диска

В этой статье мы расскажем как установить и настроить файловое хранилище на операционной системе 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 Гбайт.

Свяжитесь с Отцом Ботов , отправьте ему сначала команду /start , затем /newbot . Далее отвечайте на вопросы Отца Ботов, в итоге Вы получите от него токен и ссылку на Вашего бота.

Открываем конфигурационный файл

$ nano backtracker.conf

и настраиваем

Token = # Тут нужно указать токен telegram-бота, полученный от Отца Ботов failonly = # False если хотите получать сообщения о наличии новых файлов или True если только об их отсутствии 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

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

Развернуть файловый сервер для Windows машин на Ubuntu достаточно просто. Обычно такой сервер используется для организации файловых хранилищ в рамках Active Directory домена.

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

В любом случае воспользуйтесь Samba – установите ее с помощью менеджера пакетов Synaptic или следующей командой:

sudo apt-get install samba

Файловый сервер в составе домена Active Directory

Для создания файлового сервера, интегрированного в домен Active Directory, сначала необходимо ввести Вашу машину с Ubuntu в домен.

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

Войдя в домен, настройте расшаренные ресурсы на компьютере. Учтите, что Samba будет проецировать права на файлы Windows на права Unix, однако принципиальные различия в механизмах присвоения прав скорее всего не дадут ей это сделать. Права на файлы всегда и в любом случае управляются Вашей файловой системой на компьютере с Ubuntu, а Samba может только адаптироваться под них, а менять их поведение - нет.

Так что по умолчанию расшаренные ресурсы будут располагать скромными возможностями контроля доступа, включая назначение разных прав для пользователя, группы и всех остальных. Но Вы можете это без труда исправить, добавив в ФС поддержку 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 file


Не забывайте, что механизм POSIX ACL никак не связан с Samba - это только надстройка над стандартным механизмом разграничения прав в Linux. Так что Samba может его использовать, но не способна как-либо изменить или обойти.

Для использования расширенных атрибутов ФС пригодится похожий на acl пакет утилит - attr, поставьте его следующей командой:

Sudo aptitude install attr


Чтобы просмотреть расширенные атрибуты, используйте команду:

Getfattr file


А для установки выполните:

Setfattr file


Следует помнить, что Samba хранит всю информацию о наследовании в бинарном виде в единственном расширенном атрибуте user.SAMBA_PAI. Так что поменять что-то с помощью setfattr не получится, возможно только полное удаление расширенных атрибутов (в некоторых случаях необходимость в этом возникает).

Контролировать наследование прав с Windows машины возможно с помощью штатных инструментов этой системы, или утилитой smbcacls.

Расширенные атрибуты файловой системы позволяют включить в Samba полную поддержку файловых атрибутов DOS (например скрытого, архивного и пр.).

Если в Вашей системе есть каталог, который нужно расшарить через Samba (и он расположен на диске, подмонтированном с поддержкой acl и user_xattr), настройте его расшаривание – введите нужную информацию в файл /etc/samba/smb.conf.

В первую очередь займитесь общими настройками для добавления в секцию этого файла:


# Отключить расшаривание принтеров. Если вы конечно и вправду не хотите их расшаривать. # Для полного отключения нужно указывать все 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:


# Комментарий 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 командой:

Sudo / etc / init . d / samba restart


Теперь получить доступ к расшаренному ресурсу Вы можете с любой машины домена. Но не забывайте про SGID и Sticky биты для каталогов, предназначенные для наследования группы-владельца и запрещения пользователям удаления не своих файлов - это особенно актуально для многопользовательских хранилищ. При этом, в отличие от редактирования прав из Windows, поменять эти биты на папках на расшаренном ресурсе невозможно - только вручную прямо на Ubuntu компьютере.

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

Автономный файловый сервер

Далеко не все располагают доменом Active Directory. Поэтому часто появляется необходимость организовать на Linux машине независимое файловое хранилище с собственной системой авторизации. Это несложно.

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

Главное – нужно определиться с используемым способом доступа к ресурсу. Следует корректно установить значение параметра security в секции файла /etc/samba/smb.conf.

Стандартно применяется значение share или user.

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

В домашних условиях удобно, когда все видят всех. Для этого просто добавьте 4 строчки в секцию файла /etc/samba/smb.conf (некоторые могут уже быть в наличии):

[ global ] workgroup = WORKGROUP map to guest = Bad User netbios name = NOTEBOOK security = user


NOTEBOOK - имя компьютера, которое будет в сети. Также установите дополнительные программы:

share

Затем добавить в конец файла /etc/samba/smb.conf такие строки, а «yuraku1504» в них замените на имя пользователя компьютера с Samba:


[ MyShareWork ] comment = Anonymous Samba Share path = / home / yuraku1504 / share guest ok = yes browsable = yes writable = yes read only = no force user = yuraku1504 force group = yuraku1504

Папка будет открыта для чтения и записи.


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

на сегодняшний день меня интересует file-сервер и web-сервер (для сайта-поддержки игры). об них и будет данный псто.


1. установка дистрибутива linux. создание пользователей.
за основу была взята, уже полюбившаяся, Ubuntu. конктретно в данном случае была использована свеженькая Ubuntu 9.10 server i386 .
бесплатно скачать исошник можно с официального сайта Canonical.

после загрузки рабочей консоли, я установил Midnight Commander . это псевдографическая оболочка, похожая на Norton Commander (ставился, в своё время, на безгуёвый MS DOS). очень удобна в работе.
$ sudo apt-get install mc
$ mc

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

2. настраиваем samba и поднимаем file-сервер.
для начала настроим сетевую карту сервера. выбираем свободный ip-адрес (у меня был свободен 192.168.1.4).
сетку настраиваем путем редактирования файла: /etc/network/interfaces :
$ sudo nano -w etc/network/interfaces
содержимое файла interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.4
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

[обратите внимание, что "address" написано с двумя "d" и двумя "s". у меня здесь были ошибки. скорее всего из-за невнимательности ]

затем:
# echo server.home.net > /etc/hostname

И еще:
$ hostname
$ hostname -f
эти две команды должны вывести на экран имя server.home.net .

теперь, собственно, самба. если вы в самом начале (в время установки дистрибутива) не выделили Samba file server, то ничего страшного. мы можем сейчас все нужные пакеты установить:
$ sudo apt-get install samba smbclient smbfs ntp ntpdate

мы установили программы: Samba, SMBlient и SMBFS, которые являются основой для нашего файлового сервера.
последние пакеты - NTP и NTPDate - я установил, чтобы сервер мог синхронизировать свои системные часы, через Интернет.

выполним команду, которая сделает наш диск доступным для всех пользователей сети (дадим им полные права на этот диск).:
$ sudo mkdir /media/multimedia
$ sudo chmod 777 /media/multimedia

теперь сконфигурируем Samba.
это нужно для того, чтобы наш файловый сервер был виден в домашней сети.
по умолчанию в Windows все сетевые компьютеры попадают в рабочую группу с названием MSHOME.
проверим чтобы samba имела в конфигурационном файле то же название рабочей группы:
$ sudo nano -w /etc/samba/smb.conf

находим и правим строчку:
workgroup = MSHOME

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

что бы диск был виден, а так же читался и писался для всех пользователей сети, добавим в конец конфига:
comment = Public Folder
path = media/multimedia
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup

[обратите внимание, что "nogroup" пишется слитно . во многих описаниях настройки написано раздельно. у меня, при раздельном написании, не работало ]

сохраняем изменения в файле и перезагружаем пакет Samba:
$ sudo /etc/init.d/samba force-reload

3. устанавливаем apache и поднимаем web-сервер.
для web-сервера много не надо. тут всё совсем просто. нужно установить apache (что такое апач) и владеть навыками htmlя.
$ sudo apt-get install apache2

после установки апача, можно приступать к созданию сайта. по-умолчанию адрес вашего сайта будет тот же, что и ip-адрес вашего сервера в локалке (например, http://192.168.1.4). это никуда не годится. нужен человеческий адрес (доменное имя, читать про домены). тут варианта два.
1. купить. нормальный домен второго уровня (типа httр://mysеrver.соm).
2. взять бесплатный, но третьего уровня (вида httр://gаme.myserver.соm).

платный стóит порядка 6ОО рублей за пол-года. бесплатный - нихрена не стóит.

я использовал для своего сервера бесплатный домен третьего уровня на http://dynDNS.com . там нужно зарегестрироваться, выбрать доменное имя (при условии, что оно свободное), указать свой реальный ip (). на своём интернет-шлюзе (или роутере) настроить переадресацию по 80 порту (port forwarding) с HTTP на свой внутренний ip сервера.

в итоге (если всё правильно настроить), при обращении по зарегестрированному вами адресу, пользователь попадает на главную web-страницу сайта на вашем сервере.

как настроить свой сайт.
все настройки сайта лежат в /var/www . по умолчанию в этой директории лежит один скромный index.html с надписью It works! , который нам кагбе намекает на нормальную работу.
вот этот файл можно/нужно править под себя, под создание своего сайта.

перезапускаем сервер командой:
$ sudo shutdown -r now

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

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

Глава 11. Настройка файлового сервера с доступом только для чтения

11.1. Создание разделяемой директории

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

Первым шагом является создание директории и размещение в ней нескольких тестовых файлов.

# mkdir -p /srv/samba/readonly # cd /srv/samba/readonly/ # echo "Сегодня холодно." > winter.txt # echo "Сегодня жарко." > summer.txt # ls -l итого 8 -rw-r—r— 1 root root 17 янв 21 05:49 summer.txt -rw-r—r— 1 root root 18 янв 21 05:49 winter.txt #

11.2. Настройка параметров разделяемой директории

11.2.1. Секция глобальных параметров файла конфигурации smb.conf

В данном примере сервер Samba состоит в рабочей группе с именем WORKGROUP (которая является стандартной рабочей группой). Также мы задаем строку описания сервера, которую смогут увидеть пользователи, исследующие сеть с помощью команды net view, проводника Windows или утилиты smbclient.

# head -5 smb.conf workgroup = WORKGROUP server string = Public Anonymous File Server netbios name = TEACHER0 security = share

Вы могли заметить строку в приведенной выше секции файла конфигурации сервера. Данная строка устанавливает стандартный режим ограничения доступа к нашему серверу Samba. Установка режима доступа позволяет клиентам (которыми могут являться утилита smbclient, любая версия ОС Windows, другой сервер Samba,) предоставлять пароль для доступа к каждому из разделяемых ресурсов. Это один из вариантов использования протокола SMB/CIFS. Другой вариант использования данного протокола (называемый режимом пользователя,) позволяет клиенту предоставлять комбинацию из имени пользователя и пароля перед тем, как сервер получит информацию о разделяемом ресурсе, к которому клиент желает получить доступ.

11.2.2. Секция настроек разделяемого ресурса файла конфигурации smb.conf

Наш разделяемый ресурс будет носить имя pubread, причем в качестве пути (задаваемого с помощью параметра path) будет использоваться путь к созданной ранее директории. Каждый пользователь сможет получить доступ к данной директории (благодаря использованию значения параметра) только для чтения (в соответствии со значением параметра).

Path = /srv/samba/readonly comment = files to read read only = yes guest ok = yes

Ниже приведена очень похожая конфигурация, используемая сервером Samba из состава дистрибутива Ubuntu 11.10.

root@ubu1110:~# cat /etc/samba/smb.conf workgroup = LINUXTR netbios name = UBU1110 security = share path = /srv/samba/readonly read only = yes guest ok = yes

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

root@debian6:~# cat /etc/samba/smb.conf workgroup = LINUXTR netbios name = DEBIAN6 security = share path = /srv/samba/readonly read only = yes guest ok = yes

11.3. Перезапуск сервера

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

# service smb restart Shutting down SMB services: [ OK ] Shutting down NMB services: [ OK ] Starting SMB services: [ OK ] Starting NMB services: [ OK ]

11.4. Проверка наличия разделяемого ресурса

11.4.1. Проверка с использованием утилиты smbclient

Теперь вы можете проверить наличие разделяемого ресурса с помощью утилиты. Наш разделяемый ресурс является четвертым разделяемым ресурсом из списка.

# smbclient -NL 127.0.0.1 Domain= OS= Server= Sharename Type Comment ——— —- ——- IPC$ IPC IPC Service (Public Anonymous File Server) global$ Disk pub0 Disk pubread Disk files to read Domain= OS= Server= Server Comment ——— ——- TEACHER0 Samba 3.0.33-3.7.el5 W2003EE Workgroup Master ——— ——- WORKGROUP W2003EE

11.4.2. Проверка с использованием ОС Windows

Последний этап проверки наличия разделяемого ресурса заключается в чтении файла из разделяемой средствами сервера Samba директории с помощью компьютера, работающего под управлением ОС Microsoft Windows. В первую очередь мы должны использовать команду для монтирования разделяемой директории pubread в качестве дискового накопителя, обозначаемого с помощью буквы K:.

C:\>net use K: \\teacher0\pubread The command completed successfully.

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

C:\>dir k: Volume in drive K is pubread Volume Serial Number is 0C82-11F2 Directory of K:\ 21/01/2009 05:49

. 21/01/2009 05:49 .. 21/01/2009 05:49 17 summer.txt 21/01/2009 05:49 18 winter.txt 2 File(s) 35 bytes 2 Dir(s) 13.496.242.176 bytes free

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

K:\>echo очень холодно > winter.txt Access is denied. K:\>

Или же, вы можете использовать проводник ОС Windows.

11.5. Примечание об использовании утилиты netcat

Приведенный выше вывод командной оболочки ОС Windows был получен в консоли Linux благодаря использованию утилиты с целью взаимодействия с командной оболочкой ОС Windows.

Данная утилита работает достаточно просто: она ожидает соединения с определенным портом компьютера, работающего под управлением ОС Windows, и исполняет бинарный файл командной оболочки cmd.exe после приема соединения. Утилита netcat аналогична утилите cat в том смысле, что она, как и утилита cat, не делает ничего, кроме передачи данных, но при этом утилита netcat предназначена для передачи данных по сети.

Для создания условий, необходимых для организации описанного соединения, следует выполнить следующую команду на компьютере, работающем под управлением ОС Windows (после загрузки версии утилиты netcat для ОС Windows).

nc -l -p 23 -t -e cmd.exe

После этого вы сможете установить соединение с данной машиной посредством утилиты netcat с любого компьютера, работающего под управлением Linux. В результате в вашей командной оболочке Linux будет выведено приветствие командной оболочки cmd.exe.

paul@laika:~$ nc 192.168.1.38 23 Microsoft Windows (C) Copyright 1985-2003 Microsoft Corp.

Поднимаем корпоративный файловый сервер на Debian Linux

C:\>net use k: /delete net use k: /delete k: was deleted successfully.

11.6. Практическое задание: настройка файлового сервера с доступом только для чтения

11.7. Корректная процедура выполнения практического задания: настройка файлового сервера с доступом только для чтения

1. Создайте директорию для предоставления каждому клиенту из сети доступа к файлам из нее только для чтения в подходящей для этого директории файловой системы (в соответствии со стандартном иерархии файловой системы FHS).

Выберите один из следующих вариантов:

Директория не должна использоваться!

Директория также не должна использоваться!

Директория также не подходит!

2. Убедитесь в том, что вы установили корректный идентификатор владельца созданной директории и файлы в ней являются общедоступными.

chown root:root /srv/samba/readonly chmod 755 /srv/samba/readonly

3. Разместите текстовый файл в созданной директории.

echo Hello World > hello.txt

4. Предоставьте всем клиентам доступ к созданной директории по сети средствами сервера Samba.

Файл конфигурации вашего сервера Samba smb.conf.readonly может выглядеть следующим образом:

Workgroup = WORKGROUP server string = Read Only File Server netbios name = STUDENTx security = share path = /srv/samba/readonly comment = read only file share read only = yes guest ok = yes

Протестируйте его корректность с помощью утилиты testparm перед использованием!

5. Проверьте с вашего компьютера и отдельного компьютера (с помощью команд smbclient, net use,) доступность для чтения файлов из разделяемой директории.

В случае использования Linux:

В случае использования Проводника Windows: Перейдите в директорию «Мое сетевое окружение».

В случае использования командной оболочки ОС Windows

6. Создайте резервную копию файла конфигурации вашего сервера smb.conf с именем smb.conf.ReadOnlyFileServer.

cp smb.conf smb.conf.ReadOnlyFileServer

Если вам понравилась статья, поделитесь ею с друзьями:

Samba - программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL.

Samba работает на большинстве Unix-подобных систем, таких как GNU/Linux, POSIX-совместимых Solaris и Mac X Server, на различных вариантах BSD, в /2, Windows. Samba включена практически во все дистрибутивы GNU/Linux, в том числе, конечно, и в Ubuntu.

Чтобы сделать общую папку в Ubuntu Desktop достаточно щёлкнуть правой кнопкой мыши на папке и выбрать пункт меню «Опубликовать папку». Никаких конфигурационных файлов при этом править не надо. Всё описанное ниже относится только к ручной настройке, например, в случае создания файлового сервера.

Для установки достаточно открыть терминал и ввести:

sudo apt-get install samba

Приложение будет автоматически загружено и установлено.

При помощи терминала сделаем резервную копию начального файла конфигурации:

sudo cp /etc/samba/smb.conf{,.bak}

Теперь можно отредактировать файл настроек /etc/samba/smb.conf, для этого откройте его в любом текстовом редакторе с правами суперпользователя. Например, так:

sudo nano /etc/samba/smb.conf

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

Пример настройки Samba в качестве автономного файлового сервера с авторизацией:

; Глобальные настройки сервера ; General server settings ; Имя компьютера, которое будет отображаться в сетевом окружении netbios name = main-server server string = ; Рабочая группа клиентов workgroup = WORKGROUP announce version = 5.0 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192 passdb backend = tdbsam security = user null passwords = true ; Файл для альясов имен юзеров username map = /etc/samba/smbusers name resolve order = hosts wins bcast ; wins support устанавливается в yes, если ваш nmbd(8) в Самба является WINS сервером. Не устанавливайте этот параметр в yes если у вас нет нескольких подсетей и вы не хотите чтобы ваш nmbd работал как WINS сервер. Никогда не устанавливайте этот параметр в yes более чем на одной машине в пределах одной подсети. wins support = no ; Поддержка принтеров printing = CUPS printcap name = CUPS ; Логи log file = /var/log/samba/log.%m syslog = 0 syslog only = no ; Настройка привязки к интерфейсам, на каких слушать, если не указано слушает на все интерфейсах; interfaces = lo, eth0 ; bind interfaces only = true ; ; ; path = /var/lib/samba/printers ; browseable = yes ; guest ok = yes ; read only = yes ; write list = root ; create mask = 0664 ; directory mask = 0775 ; ; ; path = /tmp ; printable = yes ; guest ok = yes ; browseable = no ; ; ;path = /media/cdrom ;browseable = yes ;read only = yes ;guest ok = yes ; Шара жесткого диска; Имя шары, видно у клиентов ; Путь к расшариваемому диску path = /media/sda1 ; Можно ли просматривать browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755 ; Привязка к определенному имени пользователя или группе, имена через пробел; force user = user1 user2 ; force group = group1 group2 ; Еще один жесткий диск, по аналогии с тем что выше path = /media/sde1 browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755

Теперь надо разобраться с пользователями.

Samba использует пользователей которые уже есть в системе, возьмем для примера имя user, допустим что он уже есть в системе, надо внести его в базу данных SMB и назначить пароль для доступа к общим ресурсам, сделаем это командой:

smbpasswd -a user

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

smbpasswd -e user

Далее создадим псевдоним для имени пользователя user что бы облегчить себе доступ с Windows машины на которой у нас например пользователь с именем Admin, для этого создадим и отредактируем файл /etc/samba/smbusers:

sudo touch /etc/samba/smbusers sudo gedit /etc/samba/smbusers

Впишите в файл пару строк

# Unix_name = SMB_name1 SMB_name2 user = Admin

На этом настройка закончена, перезапустите Samba.

Для версии Ubuntu 10.04 воспользуйтесь командой:

sudo service smbd restart

Для более ранних версий используйте:

sudo /etc/init.d/samba restart

Теперь можно пользоваться общими ресурсами.

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

Приложения для настройки

Так же существуют приложения, позволяющие производить настройку Samba через графический интерфейс (см. GUI приложения для работы с Samba).

Установить самый простой для Samba можно командой:

sudo apt-get install system-config-samba

Запускается он командой:

sudo system-config-samba

Все изменения он записывает в конфигурационный файл samba.

Для удалённого администрирования Samba в качестве web-интерфейса для Samba отлично подойдёт webmin.

Файловый сервер для Windows сети

Очень часто Samba используют для создания файлового сервера в Windows сети. Описанию такого сценария использования посвящена отдельная статья:

Статьи о Samba

Cсылки

Opening Windows to a Wider World. (слоган на www.samba.org)

Samba — реализация сетевых протоколов Server Message Block (SMB) и Common Internet File System (CIFS) . Основное предназначение — расшаривание файлов и принтеров между Linux и Windows системами.

Samba состоит из нескольких демонов, работающих в фоновом режиме и предоставляющих сервисы и ряд инструментов командной строки для взаимодействия со службами Windows:

  • smbd — демон, являющийся SMB-сервером файловых служб и служб печати;
  • nmbd — демон, предоставляющий службы имен NetBIOS;
  • smblient — утилита предоставляет доступ из командной строки к ресурсам SMB. Она также позволяет получить списки общих ресурсов на удаленных серверах и просматривать сетевое окружение;
  • smb.conf — конфигурационный файл, содержащий настройки для всех инструментов Samba;

Список портов, используемых Samba

Вводная статья про основные принципы расшаривания файлов и принтеров.

Установка и настройка сервера

# под Arch Linux, сервер yaourt -S samba # под Arch Linux, клиент yaourt -S smbclient # под Ubuntu, сервер sudo apt-get install samba samba-common system-config-samba

Скопируем файл с настройками smb.conf

sudo cp /etc/samba/smb.conf.default /etc/samba/smb.conf

По умолчанию создаются ресурсы для домашних каталогов пользователей (раздел homes в smb.conf ) и принтеров (раздел printers ).

Доступ к ресурсу может быть по паролю или анонимный. Для первого способа есть пара моментов:

  1. пользователь должен существовать в системе (создан с помощью команды и установлен пароль);
  2. пользователь должен быть добавлен как пользователь Samba (с помощью команды);

Просмотр пользователей

sudo pdbedit -L -v

Необходимо что-бы компьютеры принадлежали к одной рабочей группе, в Windows по умолчанию это WORKGROUP , вот её и будем использовать.

Ниже приведен пример простого файла smb.conf с настройками для анонимного доступа к директории /srv/samba/public .

sudo mkdir -p /srv/samba/public sudo chmod -R 0777 /srv/samba/public

Имена параметров не чувствительны к регистру. Для некоторых распространенных параметров существуют синонимы, а для некоторых – антонимы. Например, writable и writeable – это синонимы, а read only – антоним для них, т.е. опция read only = yes эквивалентна опции writable = no .

Workgroup = WORKGROUP server string = Samba Server log file = /var/log/samba/%m.log max log size = 50 security = user map to guest = Bad User dns proxy = no # следовать по симлинкам unix extensions = no wide links = yes follow symlinks = yes # utf кодировка dos charset = cp866 unix charset = UTF8 # отключаем принтеры load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes # hosts allow = 127. 192.168.24. # по умолчанию все файлы, начинающиеся с точки будут иметь атрибут «скрытый» hide dot files = yes comment = public folder path = /home/proft/public read only = no locking = no browsable = yes # разрешить гостевой доступ guest ok = yes force user = nobody force group = nobody # guest only = yes # create mode = 0777 # directory mode = 0777 # разрешить доступ только user1, user2 # valid users = user1, user2

Проверим корректность настроек с помощью команды

Опция указывает выводить также значения по умолчанию.

Запустим Samba-сервер

# под Arch Linux sudo systemctl start smbd # под Ubuntu, сервер sudo service start smbd

Проверим подключению к Samba на порт 139 с помощью

telnet 192.168.24.100 139

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

Поделитесь с друзьями или сохраните для себя:

Загрузка...