Развернуть файловый сервер для Windows машин на Ubuntu достаточно просто. Обычно такой сервер используется для организации файловых хранилищ в рамках Active Directory домена.
В то же время можно без труда создавать файловые сервера и в бездоменной сети, в том числе для домашнего применения.
В любом случае воспользуйтесь Samba – установите ее с помощью менеджера пакетов Synaptic или следующей командой:
sudo apt-get install samba
Файловый сервер в составе домена Active Directory
Для создания файлового сервера, интегрированного в домен Active Directory, сначала необходимо ввести Вашу машину с Ubuntu в домен.
Чтобы создать файловый сервер, настройка PAM не потребуется, достаточно добавить доменных пользователей и группы через Winbind в систему.
Войдя в домен, настройте расшаренные ресурсы на компьютере. Учтите, что Samba будет проецировать права на файлы Windows на права Unix, однако принципиальные различия в механизмах присвоения прав скорее всего не дадут ей это сделать. Права на файлы всегда и в любом случае управляются Вашей файловой системой на компьютере с Ubuntu, а Samba может только адаптироваться под них, а менять их поведение - нет.
Так что по умолчанию расшаренные ресурсы будут располагать скромными возможностями контроля доступа, включая назначение разных прав для пользователя, группы и всех остальных. Но Вы можете это без труда исправить, добавив в ФС поддержку POSIX ACL. Тогда можно будет назначать различные права различным пользователям и группам почти как в Windows.
Поддержку POSIX ACL можно найти в ext3/4, и для её активации нужно только добавить к опциям монтирования нужного раздела параметр acl.
Важно! Каталог, который нужно расшарить через Samba, должен лежать на диске, смонтированном с опцией acl. В противном случае будет невозможно нормально применять механизм разграничения прав доступа к файлам на шарах.
Помните еще вот о чем: POSIX ACL не поддерживают наследование прав доступа от родительских каталогов, в то время как в Windows эта возможность есть. Так что в Samba существует дополнительный механизм сохранения информации о наследовании прав доступа, использующий расширенные атрибуты файловой системы. Чтобы Samba корректно обрабатывала наследование прав, кроме acl к опциям монтирования файловой системы добавьте параметр user_xattr, ответственный за включение поддержки расширенных атрибутов.
Например, удобно использовать для организации расшаренных ресурсов отдельные LVM диски. В этом случае строчки в fstab для них выглядят так:
/dev/mapper/data-profiles /var/data/profiles ext3
defaults,noexec,acl,user_xattr 0 2
Опция noexec нужна для перестраховки: что на шарах для Windows 100% не должно быть исполняемых файлов Linux.
Установите пакет необходимх утилит для работы с acl на Ubuntu:
sudo aptitude install acl
Теперь просмотрите расширенные права (т.е. ACL) на файл или каталог следующей командой:
getfacl file
Установите такой командой:
setfacl [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.
Расширенные атрибуты файловой системы позволяют включить в 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 на соответствующее, причем все остальные настройки напрямую будут зависеть от конкретных целей.
Автономный файловый сервер без авторизации
В домашних условиях удобно, когда все видят всех. Для этого просто добавьте 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
Нужно создать папку для обмена файлов.
mkdir ~/share
Затем добавить в конец файла /etc/samba/smb.conf такие строки, а «yuraku1504» в них замените на имя пользователя компьютера с Samba:
[MyShareWork]
comment = Anonymous Samba Share
path = /home/yuraku1504/share
guest ok = yes
browsable =yes
writable = yes
read only = no
force user = yuraku1504
force group = yuraku1504
Папка будет открыта для чтения и записи.
techsupport@cloudlite.ru - служба техподдержки
sales@cloudlite.ru - вопросы по услугам, оплате, документам и партнерству
partner@cloudlite.ru - партнерская программа