Файловый сервер ubuntu для windows

Для того, чтобы создать файловый сервер, интегрированный в домен Active Directory, вам в первую очередь потребуется ввести вашу машину с Ubuntu в домен. Этому посвящена отдельная статья:

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

После успешного входа в домен вам останется всего лишь настроить расшаренные ресурсы на вашем компьютере.

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

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

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

Для работы с расширенными атрибутами ФС потребуется очень похожий на acl пакет утилит — attr, поставить который можно командой

sudo aptitude install attr

Для просмотра расширенных атрибутов можно использовать команду

getfattr file

А для установки

setfattr [options] file

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

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

Существует так же экспериментальный VFS модуль acl_xattr, который позволяет хранить NT ACL полностью в расширенных атрибутах. К сожалению, документации по нему нет, поэтому что-то вразумительное сказать по его поводу сложно. Ожидается, что в Samba 4 будет полная интегрированная поддержка NT ACL, а пока что можно пользоваться тем, что есть.

Если вам есть что добавить по поводу расширенных атрибутов в Samba и методах работы с ними — обязательно напишите в эту тему на форуме. Буду благодарен за любые ссылки, статьи и комментарии по теме.

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

Итак, будем считать что у вас есть в системе каталог, который вы хотите расшарить через Samba (и он находится на диске, подмонтированном с поддержкой acl и user_xattr). Теперь необходимо собственно настроить его расшаривание. Для этого нужно внести соответствующую информацию в файл /etc/samba/smb.conf.

Начнём с общих настроек, которые можно добавить в секцию [global] этого файла (это далеко не все возможные параметры, просто несколько достаточно полезных из них):

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

[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 командой

testparm

После чего перезапустите Samba:

sudo /etc/init.d/samba restart

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

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

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

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

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

Самое главное — определиться с используемым способом доступа к ресурсу. Для его изменения надо правильно установить значение параметра security в секции [global] файла /etc/samba/smb.conf. Подробней об этом параметре можно почитать тут или же в официальной документации.

Обычно используется значение share или user.

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

Подробнее настройка простого файлового сервера описана в основной статье про Samba.

Для дома удобно чтобы все видели всех. Это можно сделать если добавить 4 строчки в секцию [global] файла /etc/samba/smb.conf. Некоторые могут уже существовать.

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

NOTEBOOK — имя компьютера которое будет в сети.
Кроме этого надо установить дополнительные программы :

sudo apt-get install samba 

Для kubuntu надо еще установить smb4k .
После редактирования конфигов надо перезапустить службы. В systemd (начиная с 15.04) перезапуск выглядит так:

sudo systemctl restart smbd.service nmbd.service

Посмотреть «шары» можно через файловый броузер nautilus, konkueror или так:

smbclient -L 127.0.0.1

. Официальная документация на английском.

Обновлено Обновлено:
Опубликовано Опубликовано:

Используемые термины: Samba, Ubuntu, SMB.

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

Подготовка сервера к работе
    Настройка времени
    Брандмауэр
Установка и запуск сервиса Samba
Создание первой шары с гостевым доступом
Настройка доступа к папке по логину и паролю
Доступ к папке для пользователей и групп
Помещение удаленных файлов в сетевую корзину
Настройка клиентов для подключения к шаре
    Windows
    Linux
Некоторые полезные опции Samba
    hosts allow
    hosts deny
    interfaces
    force user/group
    include
Читайте также

Подготовка сервера

1. Время

Для корректного отображения дат, необходимо позаботиться о синхронизации времени. Для этого будем использовать демон chrony. Установим его:

apt-get install chrony

Разрешим автозапуск сервиса:

systemctl enable chrony

2. Брандмауэр

По умолчанию, в системах на базе Debian брандмауэр разрешает все соединения. Но если в нашем случае мы используем брандмауэр, необходимо открыть порты:

iptables -I INPUT -p tcp —dport 445 -j ACCEPT

iptables -I INPUT -p udp —dport 137:138 -j ACCEPT

iptables -I INPUT -p tcp —dport 139 -j ACCEPT

* где порт 445 используется для samba, а порты 137, 138 и 139 — для работы NetBIOS (использование имени компьютера для доступа).

Применяем настройки:

apt-get install iptables-persistent

netfilter-persistent save

Установка и запуск Samba

Установка выполняется из репозитория одной командой:

apt-get install samba

Разрешаем автостарт сервиса:

systemctl enable smbd

И проверим, что сервис запустился: 

systemctl status smbd

Проверяем, что сервер самба позволяет к себе подключиться. Для этого можно с компьютера обратиться к серверу по SMB, например, на компьютере с Windows это можно сделать из проводника, прописав путь к серверу с двух слэшей:

Пример подключения к SMB шаре с компьютера на Windows

* в данном примере мы подключаемся к серверу Samba с IP-адресом 192.168.1.15.

Если мы настроили сервер правильно, система откроет пустую папку. На данном этапе проверка закончена и мы можем переходить к созданию первой шары.

Разберем самый простой пример предоставления доступа к папке — анонимный доступ всем пользователям без запроса пароля.

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

vi /etc/samba/smb.conf

И добавляем настройку для общей папки:

[Общая папка]
    comment = Public Folder
    path = /data/public
    public = yes
    writable = yes
    read only = no
    guest ok = yes
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777

* где: 

  • [Общая папка] — имя общей папки, которое увидят пользователи, подключившись к серверу.
  • comment — свой комментарий для удобства.
  • path — путь на сервере, где будут храниться данные.
  • public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
  • writable — разрешает запись в сетевую папку.
  • read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
  • guest ok — разрешает доступ к папке гостевой учетной записи.
  • create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются указанные права. В нашем примере права будут полные.

Создаем каталог на сервере и назначим права:

mkdir -p /data/public

chmod 777 /data/public

Применяем настройки samba, перезагрузив сервис:

systemctl restart smbd

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

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

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

vi /etc/samba/smb.conf

Добавляем настройку для новой папки:

[Папка сотрудников]
    comment = Staff Folder
    path = /data/staff
    public = no
    writable = yes
    read only = no
    guest ok = no
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777

* эти настройки, во многом, похожи на те, что использовались в примере выше. Вот основные различия:

  • path = /data/staff — используем новый путь до папки.
  • public = no — запрещаем публичный доступ.
  • guest ok = no — не разрешаем гостевое подключение.

Создаем каталог для новой папки:

mkdir /data/staff

Задаем права на созданный каталог:

chmod 777 /data/staff

Создаем пользователя в системе Linux:

useradd staff1

* где staff1 — имя пользователя.

Задаем пароль для пользователя:

passwd staff1

Теперь создадим пользователя в samba:

smbpasswd -a staff1

Перезапускаем samba:

systemctl restart smbd

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

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

Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей.

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

vi /etc/samba/smb.conf

Добавляем настройку для новой папки:

[Приватная папка]
    comment = Private Folder
    path = /data/private
    public = no
    writable = no
    read only = yes
    guest ok = no
    valid users = admin, staff2, staff3, @privateusers
    write list = admin, staff2
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777
    inherit owner = yes

* стоит обратить внимание на следующие настройки:

  • path = /data/private — используем новый путь до папки.
  • writable = no и read only = yes — в данном примере мы разрешим запись в каталог только некоторым пользователям. Поэтому общие настройки, разрешающие запись в папку, должны быть запрещены.
  • valid users — список пользователей, которым разрешено подключаться к каталогу. В данном примере разрешения работают для пользователей admin, staff2 и staff3, а также для всех, кто входим в группу privateusers.
  • write list — список пользователей, которые имеют доступ к папке на чтение и запись. В данном примере мы разрешаем это только для пользователей admin и staff2.
  • inherit owner — опция позволяем включить наследование владельца при создании папок и файлов.

* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.

Создаем каталог для новой папки:

mkdir /data/private

Задаем права на созданный каталог:

chmod 777 /data/private

Для применения настроек перезапускаем samba:

systemctl restart smbd

Создать группу пользователей можно командой:

groupadd privateusers

Добавить ранее созданного пользователя в эту группу:

usermod -a -G privateusers staff1

Подробнее о работе с учетными записями в Linux.

Проверяем возможность работы с новым каталогом.

Сетевая корзина

При удалении файлов из общей папки, данные удаляются навсегда. Но мы можем настроить сетевую корзину — скрытый каталог, в который будут перемещаться удаляемые с самбы объекты.

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

vi /etc/samba/smb.conf

Создаем шару:

[Recycle]
    comment = Snap Directories
    path = /data/recycle
    public = yes
    browseable = yes
    writable = yes
    vfs objects = recycle
    recycle:repository = .recycle/%U
    recycle:keeptree = Yes
    recycle:touch = Yes
    recycle:versions = Yes
    recycle:maxsize = 0
    recycle:exclude = *.tmp, ~$*
    recycle:exclude_dir = /tmp

* где:

  • vfs objects = recycle — использовать подсистему recycle.
  • recycle:repository — где хранить удаленные объекты. В данном примере удаленные файлы попадут в скрытый каталог .recycle к котором создастся каталог с именем пользователя, удалившего файл или папку.
  • recycle:keeptree — удалять объекты с сохранение дерева каталогов.
  • recycle:touch — изменить ли дату изменения файла при его перемещении в корзину.
  • recycle:versions — при удалении файлов с совпадающими именами, добавлять номер версии.
  • recycle:maxsize — не помещать в корзину файлы, размер которых больше заданного параметра (в байтах). В данном примере, помещать файлы любого размера.
  • recycle:exclude — исключить файлы.
  • recycle:exclude_dir — исключить каталог.

Создаем каталог и задаем права:

mkdir /data/recycle

chmod 777 /data/recycle

Перезапускаем самбу:

systemctl restart smbd

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

Для автоматической чистки сетевой корзины можно создать скрипт:

mkdir /scripts

vi /scripts/cleanrecycle.sh

#!/bin/bash

recyclePath=»/data/recycle/.recycle»
maxStoreDays=»30″

/usr/bin/find $recyclePath -name «*» -ctime +$maxStoreDays -exec rm {} \;

* в данном скрипте мы ищем все файлы в каталоге /data/recycle/.recycle, которые старше 30 дней и удаляем их.

Разрешаем запуск скрипта:

chmod +x /scripts/cleanrecycle.sh

Создаем задание в планировщике:

crontab -e

0 5 * * * /scripts/cleanrecycle.sh

* в данном примере мы будем запускать скрипт по очистке сетевой корзины каждый день в 05:00.

Подключение к шаре

Теперь разберем примеры подключения к нашим шарам из разных систем.

Windows

Для разового подключения можно использовать проводник, прописав в нем адрес сервера через косые линии:

Пример подключения к SMB шаре с компьютера на Windows

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

Подключение сетевого диска в Windows

В открывшемся окне прописываем путь до сетевой папки и выбираем имя диска:

Прописываем путь до сетевой папки, на которую хотим сделать сетевой диск

Сетевой диск настроен.

Но мы может сделать те же действия из командной строки:

net use x: \\samba.dmosk.local\AD ACL /persistent:yes

* где x: — имя сетевого диска; \\samba.dmosk.local\AD ACL — путь до сетевого каталога; persistent:yes — указывает на то, что нужно восстанавливать данный диск каждый раз при входе в систему.

Linux

Монтирование

В Linux мы можем монтировать удаленный каталог с помощью команды mount, например:

mount -t cifs «//192.168.1.15/ad» /mnt -o user=dmosk

* где 192.168.1.15 — IP-адрес сервера; mnt — каталог, куда монтируем сетевую шару; dmosk — пользователь, под которым выполняем подключение к сетевому каталогу.
** в систему должен быть установлен пакет cifs-utils.

Подробнее, процесс монтирования описан в инструкции Как в Linux монтировать шару CIFS.

SMB Browser

Также мы можем увидеть содержимое удаленных папок на samba при помощи клиента smb. Для начала установим данного клиента:

а) на Red Hat / CentOS / Fedora:

yum install samba-client

б) на Debian / Ubuntu / Mint:

apt-get install samba-client

После вводим команду:

smbclient -L 192.168.1.15 -U staff@dmosk.local

* где 192.168.1.15 — сервер samba, к которому мы пытаемся подключиться; staff@dmosk.local — учетная запись, под которой выполняется подключение.

… мы получим список каталогов, которые расшарены на сервере.

Также мы можем подключиться к конкретной папке, например:

smbclient \\\\192.168.1.15\\ad -U staff@dmosk.local

Мы подключимся клиентом samba — можно выполнить запрос на показ содержимого:

smb: \> ls

Или полный список возможных команд:

smb: \> help

Некоторые опции Samba

Рассмотрим некоторые полезные опции, которые могут пригодится при настройке Samba.

1. hosts allow

Параметр задает список разрешенных хостов или сетей, с которых можно подключаться к серверу. Если его прописать в секцию с настройкой шары, то он будет действовать только для нее, если прописать в [global], то для всех общих папок.

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

hosts allow = comp1, 192.168.1., 192.168.160.0/255.255.252.0

* в нашем примере мы разрешим доступ только для компьютера comp1, компьютеров из сетей 192.168.1.0/24 и 192.168.160.0/22.

2. hosts deny

Параметр аналогичный hosts allow, только он наоборот — запрещает доступ для хостов и сетей. Например:

hosts deny = comp2, 192.168.2., 192.168.164.0/255.255.252.0

hosts deny = ALL EXCEPT 192.168.3.

3. interfaces

По умолчанию samba использует все сетевые интерфейсы, кроме локальной петли (127.0.0.1). Параметр interfaces позволит указать, на каком сетевом адаптере файловый сервер должен принимать запросы. Пример:

interfaces = ens32 192.168.1.15/24 192.168.2.15/255.255.255.0

4. Force User/Group

Опции force user и force group позволяют задать пользователя и группу, от которых будет работать подключение пользователя к samba. Параметр может оказаться полезным для создания шары из каталога с уже назначенным владельцем, которого мы не хотим менять.

Прописывается для шары:

force user = apache
force group = apache

* данная настройка позволит подключаться к шаре под пользователем apache.

5. Include

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

include = /etc/samba/conf.d/shares.conf

* данная опция будет дополнительно подключать конфигурацию из файла /etc/samba/conf.d/shares.conf (прописывается полный путь).

Читайте также

Возможно, эти инструкции будут также Вам полезны:

1. Установка и настройка samba в Linux CentOS.

2. Как настроить автоматическое монтирование дисков в Linux.

3. Настройка дисковых квот в Linux.

One of the most common ways to network Ubuntu and Windows computers is to configure Samba as a file server. It can be set up to share files with Windows clients, as we’ll see in this section.

The server will be configured to share files with any client on the network without prompting for a password. If your environment requires stricter Access Controls see Share Access Control.

Install Samba

The first step is to install the samba package. From a terminal prompt enter:

sudo apt install samba

That’s all there is to it; you are now ready to configure Samba to share files.

Configure Samba as a file server

The main Samba configuration file is located in /etc/samba/smb.conf. The default configuration file contains a significant number of comments, which document various configuration directives.

Note:
Not all available options are included in the default configuration file. See the smb.conf man page or the Samba HOWTO Collection for more details.

First, edit the workgroup parameter in the [global] section of /etc/samba/smb.conf and change it to better match your environment:

workgroup = EXAMPLE

Create a new section at the bottom of the file, or uncomment one of the examples, for the directory you want to share:

[share]
    comment = Ubuntu File Server Share
    path = /srv/samba/share
    browsable = yes
    guest ok = yes
    read only = no
    create mask = 0755
  • comment
    A short description of the share. Adjust to fit your needs.

  • path
    The path to the directory you want to share.

    Note:
    This example uses /srv/samba/sharename because, according to the Filesystem Hierarchy Standard (FHS), /srv is where site-specific data should be served. Technically, Samba shares can be placed anywhere on the filesystem as long as the permissions are correct, but adhering to standards is recommended.

  • browsable
    Enables Windows clients to browse the shared directory using Windows Explorer.

  • guest ok
    Allows clients to connect to the share without supplying a password.

  • read only: determines if the share is read only or if write privileges are granted. Write privileges are allowed only when the value is no, as is seen in this example. If the value is yes, then access to the share is read only.

  • create mask
    Determines the permissions that new files will have when created.

Create the directory

Now that Samba is configured, the directory needs to be created and the permissions changed. From a terminal, run the following commands:

sudo mkdir -p /srv/samba/share
sudo chown nobody:nogroup /srv/samba/share/

The -p switch tells mkdir to create the entire directory tree if it doesn’t already exist.

Enable the new configuration

Finally, restart the Samba services to enable the new configuration by running the following command:

sudo systemctl restart smbd.service nmbd.service

Warning:
Once again, the above configuration gives full access to any client on the local network. For a more secure configuration see Share Access Control.

From a Windows client you should now be able to browse to the Ubuntu file server and see the shared directory. If your client doesn’t show your share automatically, try to access your server by its IP address, e.g. \\192.168.1.1, in a Windows Explorer window. To check that everything is working try creating a directory from Windows.

To create additional shares simply create new [sharename] sections in /etc/samba/smb.conf, and restart Samba. Just make sure that the directory you want to share actually exists and the permissions are correct.

The file share named [share] and the path /srv/samba/share used in this example can be adjusted to fit your environment. It is a good idea to name a share after a directory on the file system. Another example would be a share name of [qa] with a path of /srv/samba/qa.

Further reading

  • For in-depth Samba configurations see the Samba HOWTO Collection

  • The guide is also available in printed format.

  • O’Reilly’s Using Samba is another good reference.

  • The Ubuntu Wiki Samba page.

Содержание

  • Устанавливаем и настраиваем файловый сервер в Linux
    • Шаг 1: Предварительная настройка Windows
    • Шаг 2: Установка Samba в Linux
    • Шаг 3: Создание глобальных настроек
    • Шаг 4: Создание общедоступной папки
    • Шаг 5: Создание защищенной общедоступной папки
  • Вопросы и ответы

Файловый сервер на Linux

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

Хоть сегодняшний материал и будет сосредоточен на управлении дистрибутивами Linux, не обойдем стороной и Виндовс, поскольку для начала вам придется выполнить простейшие манипуляции в этой ОС, чтобы в будущем настройка прошла успешно и не возникло никаких проблем с подключением к группе. За пример мы взяли связку Windows 10 и Ubuntu. Если вы используете другие ОС, просто придерживайтесь особенностей их реализации, которые не должны значительно отличаться от того, что вы увидите далее.

Шаг 1: Предварительная настройка Windows

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

  1. Откройте «Пуск» и запустите оттуда «Командную строку», найдя приложение через поиск.
  2. Переход к командной строке в Windows для определения параметров общего доступа с Linux

  3. Здесь вам потребуется ввести простую команду net config workstation и нажать на клавишу Enter.
  4. Команда для определения имени рабочей группы в Windows для дальнейшей настройки Linux

  5. В отобразившемся списке отыщите строку «Домен рабочей станции» и запомните ее значение.
  6. Поиск строки названия рабочей группы в Windows

  7. Снова в консоли введите notepad C:\Windows\System32\drivers\etc\hosts для открытия известного файла hosts через стандартный «Блокнот».
  8. Команда для запуска файла hosts в Windows для разрешения доступа к Linux

  9. Здесь в конце вставьте строку 192.168.0.1 srvr1.domain.com srvr1, заменив IP на адрес компьютера с Samba, и сохраните все изменения.
  10. Настройка файла hosts для предоставления доступа к Linux

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

Шаг 2: Установка Samba в Linux

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

  1. Откройте меню приложений и запустите «Терминал».
  2. Переход к терминалу для дальнейшей установки Samba Linux

  3. Здесь потребуется ввести команду sudo apt-get install -y samba samba-common python-glade2 system-config-samba. Она отвечает за инсталляцию дополнительных компонентов вместе с файловым сервером.
  4. Ввод команды для установки Samba в Linux включая все дополнительные компоненты

  5. Подтвердите подлинность учетной записи суперпользователя, написав пароль. Символы, вводимые в эту строку, на экране не отображаются, поэтому не стоит переживать из-за того, что букв или цифр не видно.
  6. Подтверждение установки Samba в Linux путем ввода пароля суперпользователя

  7. Затем начнется процедура получения и распаковки архивов. Она может занять несколько минут, во время этой операции лучше не выполнять других действий и не закрывать консоль. Если появилась новая строка ввода, значит, инсталляция успешно завершена.
  8. Ожидание завершения установки Samba в Linux через терминал

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

Шаг 3: Создание глобальных настроек

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

  1. Иногда какие-то важные параметры в конфигурационном файле все же присутствуют по умолчанию, из-за чего возникает надобность создать его резервную копию, чтобы восстановить ее при возникновении случайных сбоев. Осуществляется это путем ввода всего одной команды sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak.
  2. Команда для создания резервной копии конфигурационного файла Samba в Linux

  3. Все остальные действия будут производиться через текстовый редактор. Оптимальным вариантом в этом случае является nano. Если данное приложение отсутствует в вашем дистрибутиве, добавьте его через sudo apt install nano.
  4. Команда для установки кастомного текстового редактора при настройке Samba в Linux

  5. После переходите к конфигурационному файлу, используя sudo nano /etc/samba/smb.conf.
  6. Запуск конфигурационного файла Samba в Linux через текстовый редактор

  7. В открывшемся окне вставьте приведенные ниже строки.

    [global]
    workgroup = WORKGROUP
    server string = %h server (Samba, Ubuntu)
    netbios name = Ubuntu Share
    dns proxy = no
    log file = /var/log/samba/log.%m
    max log size = 1000
    passdb backend = tdbsam
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    pam password change = yes
    map to guest = bad user
    usershare allow guests = yes

  8. Вставка глобальных настроек в конфигурационный файл Samba в Linux

  9. Используйте комбинацию Ctrl + O, чтобы сохранить изменения.
  10. Сохранение настроек конфигурационного файла Samba в Linux

  11. Название файла менять не нужно, достаточно будет просто нажать на клавишу Enter.
  12. Отказ от изменения имени при глобальной настройке конфигурационного файла Samba в Linux

  13. По завершении выйдите из текстового редактора, зажав Ctrl + X.
  14. Выход из текстового редактора после глобальной настройки конфигурационного файла Samba в Linux

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

  1. workgroup — отвечает за имя рабочей группы. Ее мы уже узнавали в Windows, и здесь требуется задать точно такое же название, поскольку оно должно быть одинаковым абсолютно на всех соединенных устройствах.
  2. netbios name — используется для отображения имени текущего компьютера на устройстве под управлением Windows. Задайте оптимальное для себя значение.
  3. log file — указывается путь к файлу, куда будут сохраняться отчеты. Создать подобную запись нужно обязательно, чтобы всегда быть в курсе возможных ошибок и других сведений.
  4. passdb backend — определяет способ хранения паролей учетных записей. Без надобности лучше не изменять и оставить в состоянии по умолчанию.
  5. unix password sync — при активации выполняет синхронизацию паролей.
  6. map to guest — отвечает за предоставление гостевого уровня доступа определенным профилям. Если значение установлено в состояние bad user, то такая настройка применяется для несуществующих пользователей, bad password — при неправильном вводе паролей, а never — никогда.

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

Шаг 4: Создание общедоступной папки

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

  1. Запустите «Терминал» и введите там sudo mkdir -p /samba/allaccess для создания новой папки. Ее имя вы можете поменять на любое удобное.
  2. Команда для создания незащищенной папки общего доступа Samba в Linux

  3. Данное действие выполняется вместе с аргументом sudo, а это значит, что придется ввести пароль для подтверждения учетной записи.
  4. Подтверждение создания незащищенной папки Samba в Linux

  5. После переходите к настройке общего доступа для созданной директории. Для начала переместимся в корень Samba через cd /samba.
  6. Переход к корню Samba в Linux для изменения доступа к созданной папке

  7. Теперь вставьте команду sudo chmod -R 0755 allaccess и нажмите на Enter.
  8. Первая команда изменения доступа к общей незащищенной папке Samba в Linux

  9. Потребуется указать еще одну опцию sudo chown -R nobody:nogroup allaccess/, которая отвечает за предоставление доступа абсолютно всем учетным записям.
  10. Вторая команда для изменения доступа к общей незащищенной папке Samba в Linux

  11. Осталось внести все изменения в конфигурационный файл. Запустите его через текстовый редактор, используя уже знакомую команду sudo nano /etc/samba/smb.conf.
  12. Запуск конфигурационного файла для внесения изменений после создания общей незащищенной папки Samba в Linux

  13. Здесь вставьте указанный ниже блок, отвечающий за определение правил поведения сервера. О значении каждой строки мы также поговорим немного позже.

    [allaccess]
    path = /samba/allaccess
    browsable = yes
    writable = yes
    guest ok = yes
    read only = no

  14. Внесения изменений в Samba в Linux после создания общей незащищенной папки

  15. Сохраните изменения и закройте текстовый редактор, используя специально отведенные горячие клавиши.
  16. Сохранение конфигурационного файла после создания незащищенной папки Samba в Linux

  17. Перезапустите сервер через sudo systemctl restart samba, чтобы текущие настройки вступили в силу.
  18. Перезапуск файлового сервера после создания незащищенной общей папки Samba в Linux

Проверка доступа к созданной директории в Windows осуществляется путем перехода по \\srvr1\allaccess. Сейчас по тому же примеру, который мы привели в предыдущем этапе, разберем значение каждого устанавливаемого параметра:

  • path. Как вы видите из значения, здесь указывается путь к созданной общедоступной директории.
  • browsable. Этот параметр отвечает за отображение директории в списке разрешенных.
  • writable. Отметьте значение yes, если вы хотите разрешить создание записей в этой папке.
  • guest ok. Данная строка отвечает за гостевой доступ.
  • read only. Если вы знаете перевод этой фразы, то уже догадываетесь, что произойдет, если активировать параметр. Он отвечает за атрибут «Только чтение» для указанной директории.

Шаг 5: Создание защищенной общедоступной папки

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

  1. Создайте директорию по тому же принципу через sudo mkdir -p /samba/allaccess/secured.
  2. Команда для создания общей защищенной папки в Samba в Linux

  3. Как вы могли догадаться, это действие тоже следует подтвердить, введя пароль суперпользователя.
  4. Подтверждение создания общей защищенной папки в Samba в Linux

  5. После этого создайте группу, куда будут входить разрешенные пользователи, написав sudo addgroup securedgroup.
  6. Добавление группы пользователей для доступа к защищенной папке Samba в Linux

  7. Перейдите к расположению защищенной директории, указав cd /samba/allaccess.
  8. Переход к расположению защищенной папки для ее управления в Samba в Linux

  9. Здесь укажите права для пользователей, написав sudo chown -R richard:securedgroup secured. Замените richard на требуемое имя учетной записи.
  10. Добавление группы для доступа к защищенной папке Samba в Linux

  11. Вторая команда для обеспечения безопасности выглядит так: sudo chmod -R 0770 secured/.
  12. Вторая команда общего доступа к защищенной папке Samba в Linux

  13. Переместитесь к текстовому редактору, открыв там конфигурационный файл и написав уже знакомую команду sudo nano /etc/samba/smb.conf.
  14. Запуск конфигурационного файла Samba в Linux для настройки защищенной папки

  15. Вставьте указанный ниже блок и сохраните изменения.

    [secured]
    path = /samba/allaccess/secured
    valid users = @securedgroup
    guest ok = no
    writable = yes
    browsable = yes

  16. Настройка защищенной папки Samba в Linux в конфигурационном файле

  17. Добавьте пользователя в защищенную группу sudo usermod -a -G securedgroup richard. Если указанной учетной записи не существует, вы получите соответствующее уведомление.
  18. Добавление пользователя для доступа к защищенной папке Samba в Linux

  19. Создайте пароль, который будет отвечать за открытие доступа через sudo smbpasswd -a richard.
  20. Переход к добавлению пароля для пользователя Samba в Linux

  21. Введите ключ безопасности в новую строку, а затем подтвердите его.
  22. Добавление пароля для пользователя Samba в Linux

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

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

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

Простыми словами Samba — это программное обеспечение для реализации файлового сервера, а с 4-й версии и контроллера домена (аналог Windows Active Directory). Устанавливается как на Windows, так и Linux/FreeBSD. Также может быть установлена на некоторые модели роутеров для реализации простого домошнего файлового хранилища.

В качестве клиентской части для подключения к файловому серверу Samba может выступать программное обеспечение, работающее по протоколу SMB. В Linux/FreeBSD это samba client, в Windows — проводник.

Samba использует 137-139 порты UDP и Порты TCP. Что такое TCP / IP порт.

В руководстве описана установка и настройка автономного файлового сервера под управлением Samba Ubuntu Server 20.04 для доступа клиентов Windows, Linux, macOS.

Компьютеры под управлением Windows и Ubuntu должны быть членами локального домена или рабочей группы под названием WORKGROUP.

Для проверки в Windows к какой рабочей группе принадлежит компьютер используйте команду:

net config workstation

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

Обновляем пакеты и устанавливаем Samba сервер. Также установим клиента Samba — пригодится для тестирования настроек сервера.

sudo apt update
sudo apt install samba smbclient

Мы начнем со свежего чистого файла конфигурации smb.conf, удалив все закоментированные строки. А также сохраним файл конфигурации по умолчанию в качестве резервной копии для справочных целей. Выполните следующие команды linux, чтобы сделать копию существующего файла конфигурации и создать новый файл конфигурации /etc/samba/smb.conf:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo bash -c 'grep -v -E "^#|^;" /etc/samba/smb.conf_backup | grep . > /etc/samba/smb.conf'

У Samba есть собственная система управления пользователями. Однако любой пользователь, существующий в списке пользователей samba, также должен быть системным, то есть существовать в файле /etc/passwd. Если ваш системный пользователь еще не существует и, следовательно, не может быть расположен в файле /etc/passwd, сначала создайте нового пользователя с помощью команды useradd, прежде чем создавать любого нового пользователя Samba.

Создадим системного пользователя

sudo useradd -m -c "Name_User" -s /bin/bash buhnasmb
sudo passwd buhnasmb

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

$ sudo id buhnasmb
uid=1003(buhnasmb) gid=1003(buhnasmb) groups=1003(buhnasmb)
 
$ sudo smbpasswd -a buhnasmb
 
New SMB password:
Retype new SMB password:
Added user buhna.

Создадим директорию для хранения расшаренных файлов и папок:

mkdir -p /home/hdd2backup/smb/buhnasmb

Добавьте в конец файла /etc/samba/smb.conf следующие строки, buhnasmb замените на имя пользователя компьютера с Samba. Папка будет открыта для чтения и записи.

[BackupWork]
comment = Samba Share
path = /home/hdd2backup/smb/buhnasmb
guest ok = yes
browsable =yes
writable = yes
read only = no
force user = buhnasmb
force group = buhnasmb

Не забудьте поставить правильного владельца и права доступа на папку, которую вы расшариваете, например так:

sudo chmod ug+rwx /home/hdd2backup/smb/buhnasmb
sudo chown root:"пользователи домена" /home/hdd2backup/smb/buhnasmb

Перезапуск Samba:

sudo systemctl restart smbd.service

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

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

То есть настройка идентична ШАГ 4. Хорошо давайте повторю.

И так создаем новую директорию:

mkdir -p /home/hdd2backup/smb/protected

Пользователь тот же buhnasmb, напоминаю, что пароль для доступа к smb- ресурсам мы пользователю buhnasmb задали на ШАГ 3.

Добавьте в конец файла /etc/samba/smb.conf следующие строки, buhnasmb замените на имя пользователя компьютера с Samba. Папка будет доступна по логину и паролю.

[ProtectedSamba]
comment = Samba Protected Share
path = /home/hdd2backup/smb/protected
guest ok = no
browsable =yes
writable = yes
read only = no
force user = buhnasmb
force group = buhnasmb

Задайте права на папку как в ШАГ 4:

sudo chmod ug+rwx /home/hdd2backup/smb/protected
sudo chown root:"пользователи домена" /home/hdd2backup/smb/protected

Перезапуск Samba:

sudo systemctl restart smbd.service
# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
smb.conf
[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   netbios name = back20
   usershare allow guests = yes
 
[PublicSamba]
comment = Samba  Anonymous Share
path = /home/hdd2backup/smb/buhnasmb
guest ok = yes
browsable =yes
writable = yes
read only = no
force user = buhnasmb
force group = buhnasmb
 
[ProtectedSamba]
comment = Samba Protected Share
path = /home/hdd2backup/smb/protected
guest ok = no
browsable =yes
writable = yes
read only = no
force user = buhnasmb
force group = buhnasmb

Проект Samba продолжает активно развиваться. Скорость работы Samba в условиях многопользовательского доступа в качестве ролей файлового и принт-сервера более чем в два раза выше по сравнению с Windows Server.

Начиная с четвёртой версии, Samba может выступать в роли контроллера домена и сервиса Active Directory, совместимого с реализацией Windows 2000, и способна обслуживать все поддерживаемые Microsoft версии Windows-клиентов, в том числе Windows 10.

К сожалению, для более углубленного изучения Samba в интернете практический нет информации.

  • Файловый проводник для windows 10
  • Файлы wsl ubuntu в windows
  • Файлы нужные для правильной работы windows были заменены неизвестными версиями
  • Файловый кластер windows server 2019
  • Файловый сервер samba в домене windows