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

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

sudo apt-get install samba
Основная статья о настройке и параметрах Samba находится здесь.

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

Для того, чтобы создать файловый сервер, интегрированный в домен 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

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

Расшаривание папки на ubuntu

Cоздайте папку для обмена файлов.

mkdir ~/share

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

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

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

Расшаривание папки в windows 8 для ubuntu

FIXME

Ссылки