Файловый сервер для Windows на Ubuntu. Файловый сервер для Windows Установка файлового сервера на ubuntu
в первую очередь, статья для меня самого и для таких же дурачков начинающих сисадминов или им сочувствующих. так сказать, пошаговая инструкция.
сервер на линуксе можно сделать практически из любого старого компа. серверная версия линукса не прихотлива, а работает на отличненько. в вашем распоряжении может быть: файл-сервер (хранилище файлов), принтер-сервер (центролизованное управление принтером или принтерами), мэйл-сервер (почтовик), гейм-сервер (свой собственный игровой сервак. обязательно с блэкджэком и шлюхами), можно просто как шлюз в интернет использовать. много возможностей (я тут далеко не всё перечислил).
на сегодняшний день меня интересует 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 и видим, что открытый, но не сохраненный документ находится в том же состоянии в котором мы его оставили, его можно продолжить редактировать, затем сохранить.
Проделанный опыт подтверждает, что при перебоях в работе файлового серевера данные, с которыми производится работа, потеряны не будут.
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 нашего юзера
Если каталог стал больше не нужен, говорим.
Глава 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
Для того, чтобы просто удостовериться в безопасности использования сервера 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 ).
Доступ к ресурсу может быть по паролю или анонимный. Для первого способа есть пара моментов:
- пользователь должен существовать в системе (создан с помощью команды и установлен пароль);
- пользователь должен быть добавлен как пользователь 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 , который может принимать пять различных значений
Привет Хабр!
После активности шифровальщика Petya 27.06.2017, я отключил SMB1 он же CIFS, и получил производственное оборудование и сетевые МФУ которые не умеют работать на «новых» версиях SMB протокола.
Как тогда получать данные с «старых» устройств? Как показала практика, отдельная «машина» с Windows не выход, во время атаки кроме доменных «машин» пострадали также не включенные в домен, по этому, а также по лицензионным соображениям я решил использовать Linux.
Под катом находится пошаговая инструкция по установке и настройке файлового сервера SAMBA на базе CentOS 7:
Анонимный доступ
- Аутентификация и авторизация
- Интеграция с Active Directory
Установка CentOS 7
Сервера работают под управлением VMware ESXi, и по этому я установил CentOS 7 1611 на VM, выделив 1 CPU, 1GB RAM и 3GB HDD.LVM я не использую, SWAP раздел не создаю, на загрузочный раздел выделяю 500MB, а все остальное отдаю под корень файловой системы. В качестве файловой системы использую ext4.
Процесс установки описывать я не буду, даже если вы этого никогда не делали, это не сложно, у вас все получится. Предполагаю что вы уже все установили, тогда можно приступать.
Если вы новичок в линукс, делайте копии оригинальных файлов с конфигами, используйте команду cp .
Cp /etc/somefile.conf /etc/somefile.conf.bak
Получение ip адреса по DHCP
Если по какой-то причине в сети нету DHCP сервера, вам стоит его поднять. Работать с большим количеством VM без DHCP не удобно.Для принудительного обновления или получения ip адреса выполните команду
Dhclient
Показать ip адрес
ifconfig
или
nmcli device show
YUM
CentOS 7 использует пакетный менеджер YUM. Шпаргалка по yum находится .Если выход в интернет организован через прокси сервер, добавьте адрес прокси в файл конфигурации /etc/yum.conf , используйте редактор vi или следующую команду
Echo proxy=http://your.proxy:8888 >> /etc/yum.conf
В случае использования логина и пароля для доступа к прокси серверу, добавьте следующие параметры:
proxy_username=yum-user
proxy_password=qwerty
Установка на VM агентов для взаимодействия с хост сервером
Для VMware ESXi необходимо установить open-vm-toolsYum install open-vm-tools
Для Hyper-V, hyperv-daemons
Yum install hyperv-daemons
Установка обновлений
Очень важно установить все доступные обновленияYum update
Midnight Commander
Редактировать файлы без нормального редактора очень не удобно, и я предлагаю использовать mc и mceditYum install mc
Настройка сети
Для настройки статического ip адреса и имени хоста можно использовать утилиту nmtuiВ командной строке список сетевых адаптеров можно получить командой
Nmcli device status
Статический ip и gateway задается следующей командой, где «ens192» это имя сетевого адаптера
Nmcli connection modify “ens192” ipv4.addresses “192.168.1.100/24 192.168.1.1”
Настройка FQDN
Пусть полное имя хоста будет ls01.fqdn.com , выполняем командуHostnamectl set-hostname ls01.fqdn.com
Перезагружаем службу имен
Systemctl restart systemd-hostnamed
Проверить результат можно следующими командами
Hostnamectl status hostname hostname -s hostname -f
ipv6
Если протокол ipv6 не используется, логично его отключить, для этого нужно добавить два параметра в файл /etc/sysctl.conf , выполните следующие команды или используйте редактор mceditEcho net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf
echo net.ipv6.conf.default.disable_ipv6 = 1 >> /etc/sysctl.conf
Перезагрузите службу сети
Service network restart
SELINUX
На данном этапе службу SELINUX необходимо отключить, проверить статус службы SELINUX можно командойSestatus
Измените значение SELINUX в файле /etc/selinux/config
на SELINUX=disabled
затем перезагрузите сервер.
Reboot
Вернусь к SELINUX в конце статьи.
SAMBA
УстановкаYum install samba
Добавление службы в автоматический запуск
Chkconfig smb on
Запуск службы и проверка состояния
Service smb start smbstatus
firewallD
По умолчанию CentOS 7 использует брандмауэр firewallD, состояние службы можно узнать командойFirewall-cmd --state
Для получения списка правил и сервисов используйте
Firewall-cmd --list-all
firewall-cmd --list-services
Обратите внимание на список сервисов, если вы отключили протокол ipv6, логично также поступить и с dhcpv6-client
Firewall-cmd -–permanent -–remove-service=dhcpv6-client
Создаем правило для SAMBA и перезагружаем
Firewall-cmd --permanent --add-service=samba firewall-cmd --reload
Общий ресурс с анонимным доступом
Создаем папку для ресурса /samba/guestMkdir /samba
mkdir /samba/guest
Меняем владельца и назначаем права
Chown nobody:nobody /samba/guest
chmod 777 /samba/guest
Редактируем файл конфигурации SAMBA /etc/samba/smb.conf
Mcedit /etc/samba/smb.conf
Меняем содержание оригинального файла на следующее
На всякий случай я указал минимальную версию протокола SMB=NT1 . Если вы укажите SMB2 или SMB3, клиенты с Windows XP и ниже не смогут получить доступ к ресурсам.
workgroup = WORKGROUP
security = user
map to guest = bad user
min protocol = NT1
path = /samba/guest
guest ok = Yes
writable = Yes
Testparm service smb restart smbstatus
Поздравляю вас, достигнут первый уровень посвящения. Общий ресурс с анонимным доступом настроен, будет работать долго и надежно. Но можно и нужно настроить еще несколько вещей.
Бантики
По умолчанию лог файлы находятся в папке /var/log/samba . При необходимости получить подробные логи, в раздел необходимо добавить параметр log level = 2 или 3. По умолчанию используется значение 1, значение 0 отключает ведение логов.Как вы можете знаете, предоставление доступа к файлам это только часть функционала SAMBA. Если на сервере будут только файловые ресурсы, службу печати логично отключить. В разделе добавьте следующие параметры
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
Конфигурация SAMBA находиться в каталоге /etc/samba , а логи в каталоге /var/log/samba
Мне удобней все инструменты держать по рукой, по этому я монтирую необходимые мне каталоги в /samba
Создаем каталоги, в которые будет все монтироваться
Mkdir /samba/smbconf
mkdir /samba/smblogs
Редактируем конфиг файл /etc/fstab
, я предполагаю что вы знаете за что отвечает fstab .
Mcedit /etc/fstab
Добавляем следующие строки
/etc/samba /samba/smbconf none bind 0 0
/var/log/samba /samba/smblogs none bind 0 0
Монтируем без перезагрузки
mount -a
Подключение диска
Держать ресурс с общим доступом на системном диске без квоты, не лучший выбор. С квотами я решил не связываться, мне проще подключить отдельный «физический» диск.Для получения списка устройств можно использовать команду lsblk
Lsblk
Создание таблицы разделов на диске /dev/sdb
Parted /dev/sdb mklabel msdos
или
Parted /dev/sdb mklabel gpt
Подробную информация про gpt можно прочитать
Создание раздела на весь диск sdb, в лучших традициях жанра я решил сделать отступ 1MiB в начале диска.
Parted /dev/sdb mkpart primary ext4 1MiB 100%
Создаем файловую систему ext4
Mkfs.ext4 /dev/sdb1
Редактируем fstab
Mcedit /etc/fstab
Добавляем еще одну строку
/dev/sdb1 /samba/guest ext4 defaults 0 0
Монтирование
Mount –a
Проверяем результат
Df -h
Назначение прав
Chmod 777 /samba/guest
Подключение образа диска
Если вам не нужны большие объемы, и достаточно ресурса размером ххх мб, можно подключить образ диска из файла.Создаем каталог для хранения образов
Mkdir /samba/smbimg
Создаем файл образа размером 100 мб
Dd if=/dev/zero of=/samba/smbimg/100M.img bs=100 count=1M
Про команду dd много интересного можно прочитать
В варианте с образом я решил не создавать таблицу разделов, просто создаем файловую систему ext4.
Mkfs.ext4 /samba/smbimg/100M.img
Редактируем fstab
Mcedit /etc/fstab
Конфиг для монтирования образа
/samba/smbimg/100M.img /samba/guest ext4 defaults 0 0
Монтирование
Mount -a
Проверяем результат
Df -h
Назначение прав
Chmod 777 /samba/guest
Подключение RAM диска
Для временных ресурсов где не нужен большой объем, как мне кажется RAM диск это наилучший вариант, очень быстро и просто настраивается, а скорость работы поражает воображение.Редактируем fstab
Mcedit /etc/fstab
Конфиг для RAM диска
none /samba/guest tmpfs defaults,size=100M 0 0
Монтирование
Mount -a
Проверяем результат
Удаление старых файлов
В случае «файлопомойки» ресурсы нужно как-то освобождать, для этого можно использовать планировщик задач crontabПросмотр заданий
Crontab –l
Редактирование заданий
Crontab –e
Пример конфига:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=“”
HOME=/#удалять файлы и каталоги каждый час
* 0-23 * * * rm –R /samba/guest/*#Удалить только файлы старше 1 дня, запуск команды каждые 10 минут
0-59/10 * * * * find /samba/guest/* -type f -mtime +1 -exec rm –f {} \;#удалить файлы старше 50 минут, запуск команды каждые 10 минут
0-59/10 * * * * find /samba/guest/* -type f -mmin +50 -exec rm -f {} \;
Выход из vi
Логи службы crontab находятся в файле /var/log/cron
Ограничение доступа к SAMBA по ip адресам
Если вам нужно ограничить доступ ко всем ресурсам SAMBA, добавьте ваши списки доступа в разделе global, а если необходимо ограничить только на определенный ресурс, в разделе этого ресурса.Пример:
hosts allow = 192.168.1.100, 192.168.1.101
hosts deny = ALL
hosts allow = 192.168.0.0/255.255.0.0
hosts deny = 10. except 10.1.1.1
Аутентификация и авторизация пользователей
Ограничение доступа по ip адресам не всегда удобно или возможно, тогда можно использовать логины и пароли.Сначала необходимо создать локального пользователя в системе
Adduser user1
Если пользователь будет работать только с SAMBA ресурсами, задавать ему пароль для системы нет необходимости. Пароль для системы и для SAMBA хранятся в разных файлах и могут отличаться.
Затем необходимо добавить системного пользователя в пользователи самбы и задать ему пароль
Smbpasswd -a user1
По умолчанию для хранения паролей используется файл формата tdb, которые расположен в каталоге /var/lib/samba/private/
Изменить каталог расположения файла можно глобальным параметром passdb backend
passdb backend=tdbsam:/etc/samba/smbpassdb.tdb
tdb файлы были созданы для замены «устаревших» текстовых, если вы хотите использовать текстовые файлы, для этого используйте параметр passdb backend=smbpasswd в разделе global
passdb backend=smbpasswd:/etc/samba/smbpasswd
Затем укажите списки пользователей и групп для доступа к ресурсам
path = /samba/guest
writable = no
read list = user1, @group2
write list = user2, user3
Интеграция с Active Directory
Также есть возможность получать информацию о пользователей из LDAP, но мне этот вариант не интересен и я сразу перехожу к AD. Подробная инструкция от Microsoft находится .Для AD очень важна синхронизация времени, по этому стоит начать с этого.
Установка соответствующей службы
Yum install ntp
Добавляем в конфиг файл /etc/ntp.conf сервера выполняющих роль домен контроллеров
Mcedit /etc/ntp.conf
Пример:
server 192.168.1.10
server 192.168.1.20
server someserver.contoso.com
Добавляем службу ntp в автоматический запуск
Chkconfig ntpd on
Запускаем службу
Service ntpd start
Проверяем синхронизацию времени
Ntpq –p
winbind
Для получения информации о пользователях из AD необходимо установить пакет samba-winbindYum install samba-winbind
Добавляем службу в автоматический запуск
Chkconfig winbind on
Запускаем службу
Service winbind start
Добавление хоста в AD
Напомню что в начале даной инструкции задали имя хоста ls01.fqdn.com . Будем считать что полное имя домена fqdn.com , а короткое пусть будет fqdn_comДля внесения всех необходимых параметров в конфигурационные файлы можно воспользоваться утилитой authconfig-tui , установите флажок Use Winbind, затем перейдите на следующее окно
Выберите модель безопасности ADS и укажите имена вашего домена. В поле домен контролер укажите “*”, это необходимо для автоматического поиска доступного домен контроллера. Затем нажмите ОК и закройте утилиту.
Для добавления хоста в AD используйте команду net ads join –U %username% , пользователь должен обладать правами на создание учетной записи ПК в домене
Net ads join –U youruser
Если машина не добавляется в домен, добавьте FQDN имя хоста в файл /etc/hosts
.
Я несколько раз все проверял, и в файл hosts я вносил изменения когда на этапе настройки сети задавал не полное имя хоста.
Для того чтобы вывести хост из домена используйте команду net ads leave –U %username%
Что делает утилита authconfig-tui?
Утилита добавляет параметры для подключения к AD в следующие файлы, параметров не много и при желании можно забить все руками./etc/krb5.conf
Default_realm = FQDN.COM
FQDN.COM = {
kdc = *
}
/etc/nsswitch.conf
passwd: files sss winbind
shadow: files sss winbind
group: files sss winbind
/etc/samba/smb.conf
workgroup = FQDN_COM
password server = *
realm = FQDN.COM
security = ads
idmap config *: range = 16777216-33554431
template shell = /sbin/nologin
kerberos method = secrets only
winbind use default domain = false
winbind pffline logon = false
Вы могли заметить что данная утилита вносит заметно меньше параметров чем написано в инструкции от Microsoft или других инструкциях, но если так работать – то почему бы и нет?
Из инструкции Microsoft я добавляю следующие параметры в конфиг
domain master = no
local master = no
preferred master = no
os level = 0
domain logons = no
Настройка прав доступа на ресурс
В качестве примера и для наглядности рекомендую настроить ресурсы с разными правами на одну папку
path = /samba/guest
force create mode = 777
directory mask = 777
path = /samba/guest
read list = "@fqdn_com\domain users"
write list = "@fqdn_com\domain users"
force create mode = 777
directory mask = 777
Перезапускаем службу samba
Service smb restart
Проверяем
Smbstatus
На скриншоте видно пользователя домена который находится в одной из общих папок
Список полезных ссылок.