Н а этом уроке мы собираемся узнать, как установить и настроить сервер Samba на Ubuntu 16.04. Samba является свободным и с открытым исходным кодом реализацией протокола SMB/CIFS для Unix и Linux, что позволяет взаимодействовать между файлами и принтерами в Unix/ и Windows, на машинах в локальной сети.
Samba представляет собой пакет программ, наиболее важными из которых два являются:
- smbd : обеспечивает SMB / CIFS обслуживание (общий доступ к файлам и печати), а также может выступать в качестве контроллера домена Windows.
- nmbd : обеспечивает сервис имен NetBIOS
Как установить Samba-сервер на Ubuntu 16.04
Samba входит в состав большинства дистрибутивов Linux. Чтобы установить Samba на , просто запустите:
Sudo apt install samba
Последняя стабильная версия доступна 4.5.3, выпущена 19 декабря 2016 г. Чтобы проверить версию Samba , запустите
Sudo smbstatus
Sudo smbd --version
Пример вывода:
Samba version 4.3.11-Ubuntu
Для того, чтобы проверить, запущена ли служба Samba, выполните следующие команды.
Systemctl status smbd systemctl status nmbd
Для запуска этих двух служб, выполните следующие команды:
Sudo systemctl start smbd sudo systemctl start nmbd
После запуска, smbd будет слушать на порту 139 и 445.
Редактирование файла конфигурации
Там только один конфигурационный файл, который необходимо отредактировать: /etc/samba/smb.conf .
Sudo nano /etc/samba/smb.conf
В разделе , убедитесь, что значение workgroup относиться к рабочей группе компьютеров Windows.
Workgroup = WORKGROUP
Прокрутите вниз к нижней части файла. (В текстовом редакторе nano, нажмите CTRL+W а затем CTRL+V .) Включите новый раздел, как показано ниже. Замените username на необходимое имя пользователя.
Comment = Home Public Folder path = /home/username/ writable = yes valid users = username
Home Share это имя папки, которое будет отображаться в сети Windows. Комментарием является описание общей папки. Следующие 3 строки указывают, что только указанный пользователь valid users имеет право доступа к каталогу /home/username/ , который также доступен для записи. Вышеуказанная конфигурация отключит анонимный доступ.
Сохраните и закройте файл, а затем выполните следующую команду, чтобы проверить, если есть синтаксические ошибки.
Testparm
Создание пользователя
Samba содержит по умолчанию user в качестве режима защиты, означает, что клиенты должны ввести имя пользователя и пароль для доступа к общей папке. Чтобы добавить пользователя в Ubuntu, выполните следующую команду:
Sudo adduser username
Вам будет предложено установить пароль Unix. Кроме того, необходимо установить отдельный Samba пароль для пользователя с помощью следующей команды:
Sudo smbpasswd -a username
Теперь все, что осталось сделать, это перезапустить демон smbd.
Sudo systemctl restart smbd
Доступ Samba к общей папки из Windows
На компьютере Windows, который находится в той же сети, откройте проводник и нажмите Сеть на левой панели. Вы увидите сервер самбы. Дважды щелкните общую папку и введите имя пользователя и пароль.
Доступ Samba к ресурсу папке с компьютера Ubuntu
В диспетчере файлов, перейдите на вкладку Сеть на левой панели и выберите Сеть Windows.
Выберите рабочую группу, сервер Samba и общую папку, а затем введите имя пользователя и пароль Samba.
Добавление нескольких пользователей или групп
Если нескольким учетным записям необходимо получение доступа к общей папке, то необходимо изменить правомерных пользователей, как показано ниже в файле /etc/samba/smb.conf .
Valid users = user1, user2, user3
Также используйте smbpasswd для установки пароля Samba для каждого из этих пользователей.
Sudo smbpasswd -a user1 sudo smbpasswd -a user2 sudo smbpasswd -a user3
Для того, чтобы разрешить группе пользователей получить доступ к общей папке, используйте следующую конфигурацию /etc/samba/smb.conf .
Valid users = @sambashare
Создайте группу.
Sudo groupadd sambashare
Затем добавьте в эту группу пользователей
Sudo gpasswd -a user1 sambashare sudo gpasswd -a user2 sambashare sudo gpasswd -a user3 sambashare
Группа должна иметь разрешение на запись в общую папку, которая может быть достигнута при следующих двух команд.
Набор sambashare как владельца группы общей папки:
Sudo chgrp sambashare /path/to/shared/folder -R
Предоставить право на запись в группе.
Sudo chmod g+w /path/to/shared/folder/ -R
Я надеюсь, что эта статья помогла вам настроить сервер Samba на Ubuntu 16.04. Как всегда, если вы нашли этот пост полезным, то отпишитесь в комментариях.
Основной файл настройки Samba - /etc/samba/smb.conf. Изначальный файл конфигурации имеет значительное количество комментариев для документирования различных директив настройки.
Не все возможные опции включены в файле настроек по умолчанию. Смотрите руководство man smb.conf или Сборник ЧаВо по Samba для уточнения деталей.
1. Сначала измените следующие пары ключ/значение в секции файла /etc/samba/smb.conf:
Workgroup = EXAMPLE ... security = user
Параметр security находится значительно ниже в секции и по умолчанию закомментирован. Также замените EXAMPLE на что-то более соответствующее вашему окружению.
2. Создайте новую секцию в конце файла или раскомментируйте один из примеров для каталога, который нужно настроить на общий доступ:
Comment = Ubuntu File Server Share path = /srv/samba/share browsable = yes guest ok = yes read only = no create mask = 0755
comment : короткое описание разделяемого ресурса. Используется для вашего удобства.
path : путь до разделяемого каталога.
Этот пример использует /srv/samba/sharename поскольку, в соответствии со стандартом иерархии файловых систем (FHS), каталог /srv - это место, где должны находится все данные, относящиеся к данному сайту. Технически разделяемый ресурс Samba может быть размещен в любом месте файловой системы, где позволяют файловые ограничения доступа, но следование стандартам рекомендуется.
browsable : позволяет клиентам Windows просматривать содержимое разделяемого каталога с помощью проводника Windows.
guest ok : позволяет клиентам подключаться к разделяемому ресурсу без указания пароля.
read only : определяет доступность ресурса только на чтение или с привилегиями на запись. Привилегии на запись доступны только при указании no , как показано в данном примере. Если значение yes , то доступ к ресурсу будет только на чтение.
create mask : определяет какие права доступа будут установлены для создаваемых новых файлов.
3. Теперь, поскольку Samba настроена, требуется создать каталог и установить на него права доступа. Введите в терминале:
Sudo mkdir -p /srv/samba/share sudo chown nobody.nogroup /srv/samba/share/
параметр -p говорит mkdir создать полное дерево каталога, если оно не существует.
4. Наконец, перезапустите сервисы samba для применения новых настроек:
Sudo restart smbd sudo restart nmbd
Теперь вы можете находить Ubuntu файл сервер с помощью клиента Windows и просматривать его разделяемые каталоги. Если ваш клиент не показывает ваши разделяемые ресурсы автоматически, попробуйте обратиться к вашему серверу по его IP адресу, например, \\192.168.1.1, из окна проводника Windows. Для проверки, что все работает, попробуйте создать каталог внутри вашего разделяемого ресурса из Windows.
Для создания дополнительных разделяемых ресурсов создайте новую секцию в /etc/samba/smb.conf и перезапустите Samba. Просто убедитесь, что разделяемый каталог создан и у него корректные права доступа.
Разделяемый ресурс "" и путь /srv/samba/share - это просто примеры. Установите название ресурса и имя каталога в соответствии с вашим окружением. Хорошей идеей является использование в качестве названия ресурса имени его каталога в файловой системе. Другими словами ресурс можно указать как для каталога /srv/samba/qa.
Привет Хабр!
После активности шифровальщика 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
На скриншоте видно пользователя домена который находится в одной из общих папок
Список полезных ссылок.
The main Samba configuration file is located in /etc/samba/smb.conf . The default configuration file has a significant number of comments in order to document various configuration directives.
comment: a short description of the share. Adjust to fit your needs.
path: the path to the directory to share.
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 new files will have when created.
First, edit the following key/value pairs in the section of /etc/samba/smb.conf :
workgroup = EXAMPLE ... security = user
The security parameter is farther down in the section, and is commented by default. Also, change EXAMPLE to better match your environment.
Create a new section at the bottom of the file, or uncomment one of the examples, for the directory to be shared:
Comment = Ubuntu File Server Share path = /srv/samba/share browsable = yes guest ok = yes read only = no create mask = 0755
Now that Samba is configured, the directory needs to be created and the permissions changed. From a terminal enter:
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 exist.
Finally, restart the samba services to enable the new configuration:
sudo systemctl restart smbd.service nmbd.service
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 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 "" and the path /srv/samba/share are just examples. Adjust the share and path names 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 with a path of /srv/samba/qa .
Глава 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 , который может принимать пять различных значений