Быстрая и простая настройка samba. Что такое SAMBA? Что такое самба

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

В этой небольшой инструкции будет рассмотрена простейшая настройка Samba Ubuntu 18.04, а также как настроить общий доступ к папке Ubuntu с несколькими уровнями привилегий.

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

Получить доступ к расшаренным папкам в Ubuntu смогут как Linux так и Widnows машины, с помощью любой программы для работающей по протоколу SMB.

Для того чтобы все работало правильно, все машины должны состоять в одной рабочей группе, указанной на сервере Samba. По умолчанию для Windows, Linux и MacOS рабочая группа называется Workgroup. Чтобы узнать какая рабочая группа используется в вашей Windows откройте командную строку (Win+R, затем cmd) и выполните вот такую команду:

net config workstation

Нужный нам параметр мы видим в строке Домен рабочей станции . Это и есть рабочая группа.

Теперь, если у компьютера с Samba сервером в вашей сети будет постоянный IP адрес желательно ввести его в файле hosts. Для этого запустите командную строку от имени администратора:

И выполните команду:

notepad C:\Windows\System32\drivers\etc\hosts

В открывшимся файле добавьте строчку с IP адресом компьютера, на который будет установлен Samba:

192.168.0.1 srvr1.domain.com srvr1

Теперь можно переходить к вопросу как расшарить папку Ubuntu.

НАСТРОЙКА SAMBA В UBUNTU 16.04

Начнем, как обычно, с установки. Установка Samba Ubuntu вместе со всеми необходимыми компонентами выполняется командой:

sudo apt-get install -y samba samba-common python-glade2 system-config-samba

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

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

После создания резервной копии, создайте свой файл конфигурации, этой командой:

sudo vi /etc/samba/smb.conf

Сначала укажем глобальные настройки файлового сервера. Для этого вставьте в файл такие строки:

workgroup = WORKGROUP

netbios name = Ubuntu Share
dns proxy = no

max log size = 1000
passdb backend = tdbsam
unix password sync = yes

pam password change = yes
map to guest = bad user
usershare allow guests = yes

Рассмотрим подробнее что значат эти строки.

  • workgroup — рабочая группа, как уже говорилось должна одинакова на всех машинах
  • netbios name — имя компьютера, которое будет отображаться в Windows;
  • log file — адрес файла, куда будут складываться сообщения об ошибках и другая информация;
  • security — по умолчанию выполнять аутентификацию на уровне пользователя;
  • name resolve order — очередность разрешения IP адресов по NetBIOS имени. bcast — означает отправить в локальную сеть широковещательный запрос. Если все компьютеры между которыми планируется взаимодействие находятся в одной сети этот вариант оптимальный;
  • passdb backend — способ хранения паролей пользователей;
  • unix password sync — синхронизация паролей пользователей samba с локальными паролями Unix;
  • map to guest — указывает, когда пользователю будет предоставляться гостевой доступ. Доступно три значения — never — никогда, bad user — когда такого пользователя не существует, bad password — когда пароль введен неверно,

Когда завершите создание конфигурационного файла, переходим к вопросу как расшарить папку Ubuntu для Windows.

ОБЩИЙ ДОСТУП К ПАПКЕ UBUNTU

Сначала давайте создадим общую папку доступную всем. То есть с анонимным доступом, без авторизации samba.

Создайте папку, к которой будем открывать доступ, например:

sudo mkdir -p /samba/allaccess

После того как папка создана, нужно сделать для нее правильные права доступа. Следующие команды разрешают доступ к папке для всех и делают владельцем nobody:

cd /samba
sudo chmod -R 0755 allaccess
sudo chown -R nobody:nogroup allaccess/

Следующим шагом будет описать папку allaccess в файле настройки samba:

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

Теперь ваш конфигурационный файл должен выглядеть вот так:

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
#==============
path = /samba/allaccess
browsable = yes
writable = yes
guest ok = yes
read only = no

Рассмотрим подробнее опции, которые были здесь использованы:

  • path — путь к папке, которую нужно расшарить;
  • browsable — будет ли папка отображаться в списке доступных шар;
  • writable — будет ли папка доступна для записи;
  • read only — папка доступна только для чтения;
  • guest ok, public — будет ли разрешен гостевой доступ;
  • only guest — если установлено yes, то папка будет доступна только гостям;
  • hosts allow — ip адреса, с которых можно получить доступ к этому серверу;
  • valid users — по умолчанию могут авторизоваться все пользователи, если в этом параметре передать список пользователей, то авторизоваться смогут только они;
  • create mask — маска прав для создаваемых файлов.

Чтобы применить изменения, перезапустите сервер Samba:

sudo systemctl restart samba

Настройка Samba Ubuntu 16.04 для анонимного доступа завершена. Теперь вы можете проверить доступность общей папки allaccess из Windows, для этого нажмите Win+R и выполните:

\\srvr1\allaccess

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

Также вы можете подключится к этому серверу из Linux с помощью Nautilus для этого достаточно набрать адрес smb://ip-сервера , в разделе другие места:

ЗАЩИЩЕННЫЙ ОБЩИЙ ДОСТУП К ПАПКЕ UBUNTU

Чтобы расшарить папку для Windows Ubuntu, к которой будут иметь доступ только пользователи из определенной группы, создадим отдельную папку и опишем ее в файле настройки Samba в Ubuntu.

Сначала создаем папку:

sudo mkdir -p /samba/allaccess/secured

Создаем группу:

sudo addgroup securedgroup

Настраиваем права:

cd /samba/allaccess
$ sudo chown -R richard:securedgroup secured
$ sudo chmod -R 0770 secured/

Последний шаг, добавляем настройки в конфигурационный файл samba:

sudo vi /etc/samba/smb.conf

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

Перезапустите сервер Samba. Теперь доступ к общей папке в Ubuntu могут получить только пользователи группы securegroup.

Чтобы проверить как это работает добавим пользователя richard в нашу группу:

sudo usermod -a -G securedgroup richard

Основной файл настройки 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.

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

Samba работает на большинстве Unix-подобных систем, таких как GNU/Linux, POSIX-совместимых Solaris и Mac OS X Server, на различных вариантах BSD, в OS /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.

Установить самый простой GUI для Samba можно командой:

Sudo apt-get install system-config-samba

Запускается он командой:

Sudo system-config-samba

Все изменения он записывает в конфигурационный файл samba.

Для удалённого администрирования Samba в качестве web-интерфейса для Samba отлично подойдёт

 

Сейчас уже довольно часто в одной локальной сети можно встретить компьютеры под управлением Linux и Windows. Причины такого симбиоза могут быть разными: например, у владельцев интернет-кафе не хватило средств на приобретение лицензионной ОС для всех компьютеров, или системного администратора просто привлекли положительные стороны Linux. Популярность операционных систем от Microsoft во многом определятся клиентским ПО для Windows. Не секрет, что этот сектор программного обеспечения развит очень сильно. Множество фирм приложили к этому серьезные усилия и создали действительно хорошие, а главное, удобные в использовании программы, которые без труда может освоить даже рядовой пользователь. Зато в качестве сервера позиция Windows уже не так однозначна. Сервер под управлением Unix традиционно отличается надежностью, стабильностью в работе, безопасностью и зачастую меньшими требованиями к системным ресурсам. Но в любом случае, просто подключив компьютеры с разными программными платформами в сеть, мы не получим ожидаемого результата. Вся проблема в том, что у этих двух систем используются разные принципы организации сетевых ресурсов, несовместимые между собой.
Так как милости Microsoft ждать не приходится, и Windows вряд ли научится работать с сетевой файловой системой Unix (NFS) стандартными средствами, а программ сторонних производителей, если честно, я не знаю, то наиболее популярным способом является попытка научить Unix «притворяться», будто бы он — Windows NT.Взаимодействие в сети компьютеров под управлением Windows построено на использовании протокола SMB (Server Message Block) — блоках серверных сообщений. Он обеспечивает выполнение всех необходимых в этих случаях задач по открытию и закрытию, чтению и записи, поиску файлов, созданию и удалению каталогов, постановке задания на печать и удалению его оттуда. Все необходимые для этого действия реализуются в Unix-подобных операционных системах посредством использования пакета SAMBA . Возможности его условно можно разделить на две категории: предоставление ресурсов (под коими понимается доступ к системе принтеров и файлам) для клиентов Windows и доступ к ресурсам клиентов. То есть, компьютер под управлением Linux может выступать как в роли сервера, так и клиента. Для начала рассмотрим вариант SAMBA-сервера.Что же должен обеспечить SAMBA для нормальной работы в сети Windows-машин? Во-первых, контроль доступа, который может быть реализован либо на уровне ресурсов (share level), когда какому-либо ресурсу в сети назначается пароль и соответствующие правила использования (например, «только для чтения»), при этом имя пользователя не имеет абсолютно никакого значения; либо же более совершенную и гибкую организацию на уровне пользователя, когда для каждого пользователя создается учетная запись, где помимо имени и пароля содержится вся необходимая информация о правах доступа к ресурсу. Прежде чем получить доступ к требуемому ресурсу, каждый пользователь проходит аутентификацию, после чего ему и предоставляются права согласно учетным записям. Во-вторых, необходима эмуляция прав доступа, определяемых файловой системой. Все дело в том, что у рассматриваемых систем права доступа к файлам и каталогам на диске организованы по-разному. В Unix традиционно существует три категории пользователей файлов: владелец (owner) группа (group) и остальные (other) . Каждому из этих субъектов могут быть предоставлены права на чтение (read) запись (write) и выполнение (execute) . В Windows NT система доступа несколько гибче, доступ предоставляется нескольким группам или пользователям, причем соответствующие права доступа определяются раздельно для каждого субъекта. Поэтому полноценно эмулировать средствами SAMBA права доступа, заложенные в NTFS, невозможно.

С клиентами, работающими под управлением Windows 9x , дело обстоит иначе. Еще со времен дедушки ДОСа, по причине того, что система однопользовательская и о никаких пользователях и тем более группах и не могло быть речи, для файловой системы FAT определено всего четыре атрибута — только чтение (read only), системный (system), архивный (archive) и скрытый (hidden) . Плюс ко всему в Windows, в отличие от Unix, имеет особое значение расширение файла — те, что предназначены для выполнения, имеют расширения.exe, .com или.bat. При копировании файлов с Unix-машин на компьютеры под управлением Windows атрибуты устанавливаются так:

только для чтения — чтение, запись для владельца;

архивный — выполнение для владельца;

системный — выполнение для группы;

скрытый — выполнение для группы.

Сеть Windows-машин может быть организована как рабочая группа (workgroup), когда компьютеры независимы друг от друга и на каждом имеется своя база паролей и логинов со своей политикой безопасности, а также как домен NT. Вся база для аутентификации пользователей и компьютеров управляется главным контролером домена (PDC, Primary Domain Controler) , т.е. централизовано. Samba позволяет ограничивать доступ на всех этих уровнях и выполняет функции «главного браузера» в контексте рабочей группы или контролера домена.

С общеорганизационными вопросами разобрались. Давайте посмотрим теперь конкретно на реализацию и настройку SAMBA-сервера в Linux. Для работы Samba-сервера необходимо, чтобы были запущены два демона: smbd , обеспечивающий работу службы печати и разделения файлов для клиентов Samba (таких как Windows всех мастей), и nmbd , обеспечивающий работу службы имен NetBIOS (он может использоваться и для запроса других демонов служб имен). Для доступа к клиентам используется протокол TCP/IP . Как правило, Samba устанавливается вместе с дистрибутивом Linux. Как проверить? Просто дайте команду:

$ whereis samba

и вы должны получить что-то вроде этого:

Samba: /usr/sbin/samba /etc/samba /usr/share/man/man7/samba.7.gz

Если его не окажется в стандартной поставке, то добро пожаловать на ftp://ftp.samba.org/pub/samba/samba-latest.tar.gz или практически на любой сервер с программами для Linux. Пакет прост в установке, поэтому, чтобы не занимать места, будем считать, что он у вас установлен. Теперь давайте проверим, запущен ли демон:

$ ps -aux | grep smbd root 1122 0.0 0.6 4440 380 ? S 16:36 0:00 smbd -D

У меня уже, как видите, запущен. Если у вас нет, а вы хотите, чтобы он запускался при загрузке системы, то в Linux Mandrake, например, отметьте нужный пункт в DrakConf — стартовые сервисы или в Red Hat Сontrol-panel — Servise Configuration , обычно этого бывает достаточно. Или запускайте вручную: ./etc/rc.d/init.d/smb start. Единственный конфигурационный файл Samba называется smb.conf и обычно находится в каталоге /еtc (хотя в AltLinux, например, он лежит в каталоге /etc/samba). Сервис SAMBA считывает его каждые 60 секунд, поэтому изменения, внесенные в конфигурацию, вступают в силу без перезагрузки, но не распространяются на уже установленные соединения.

Вот за что я люблю Linux, это за то, что конфигурационные файлы являются обычными текстовыми (к тому же хорошо комментированными внутри), и для того чтобы задействовать большинство параметров, достаточно только раскомментировать соответствующую строчку. Файл smb.conf — не исключение. Он состоит из именованных разделов, начинающихся с имени раздела, заключенного в квадратные скобки. Внутри каждого раздела находится ряд параметров в виде key=value. Файл конфигурации содержит четыре специальных раздела: , , и отдельные ресурсы (shares). Как следует из названия, раздел содержит наиболее общие характеристики, которые будут применяться везде, но которые, впрочем, затем можно переопределить в секциях для отдельных ресурсов. Некоторые параметры этого раздела имеют отношение и к настройке клиентской части Samba.

Значения типичных параметров секции global :

Workgroup = имя_группы # название рабочей группы в сети Windows netbios name = имя сервера в сети server string = комментарий, который виден в окне свойств просмотра сети guest ok = yes # разрешение гостевого входа (guest ok = no — гостевой вход запрещен) guest account = nobody # имя, под которым разрешен гостевой вход в систему security = user # Уровень доступа. user — на уровне пользователя, security = share — аутентификация на основе имени и пароля. При хранении базы паролей на другом SMB-сервере используется значения security = server и password server = name_server_NT. В случае, если сервер является членом домена, используется значение security = domain, пароль для доступа указывается в файле, определенном с помощью опции smb passwd file = /path/to/file.

Кроме того, при регистрации могут использоваться шифрованные (encrypted) и незашифрованные (plain-text) пароли . Последние используются в старых Windows (Windows for Workgroups, Windows 95 (OSR2), всех версиях Windows NT 3.x, Windows NT 4 (до Service Pack 3)). Для включения варианта использования шифрованного пароля используется опция encrypt password = yes. Прошу обратить особое внимание на эту опцию. В старых дистрибутивах Linux, которые создавались в эпоху Windows 95 (и с более старой версией Samba) по умолчанию шифрование паролей отключено, а samba до версии 2.0 данного режима вообще не поддерживает (кстати, эта опция и подобные ей — те, что не касаются доступа к конкретным ресурсам — используются и в клиенте).

Для правильного отображения русских имен файлов нужны следующие опции: client code page = 866 и character set = koi8-r. В дистрибутивах с хорошей локализацией, например, производных от Mandrake и русских эта строка уже есть, иногда ее достаточно просто раскоментировать, но в большинстве других ее надо дописать самому.

Опция interfaces = 192.168.0.1/24 указывает, в какой сети (интерфейсе) должна работать программа, если сервер подключен сразу к нескольким сетям. При установке параметра bind interfaces only = yes сервер будет отвечать на запросы только из этих сетей.

hosts allow = 192.168.1. 192.168.2. 127. — определяет клиентов, для которых разрешен доступ к сервису.

В секции global возможно использование различных переменных для более гибкой настройки работы сервера. После установки соединения вместо них подставляются реальные значения. Например, в директиве log file = /var/log/samba/%m.log, параметр %m помогает определить отдельный лог-файл для каждой клиентской машины. Вот наиболее употребительные переменные используемые в секции global:

%a — архитектура ОС на клиентской машине (возможные значения — Win95, Win NT, UNKNOWN и т.д.);

%m — NetBIOS-имя компьютера клиента;

%L — NetBIOS-имя сервера SAMBA;

%v — версия SAMBA;

%I — IP-адрес компьютера клиента;

%T — дата и время;

%u — имя пользователя, работающего с сервисом;

%H — домашняя директория пользователя %u.

Также для более гибкой настройки применяется директива include, использующая приведенные выше переменные. Например: include = /etc/samba/smb.conf.%m — теперь при запросе с компьютера sales при наличии файла /etc/samba/smb.conf.sales конфигурация будет взята из этого файла. Если отдельного файла для какой-то машины не будет, то для работы с ней задействуется общий файл.

Также имеется интересная возможность создания виртуального сервера . Для этого используется параметр netbios aliases:

Netbios aliases = sales accounting admin

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

Include = /etc/samba/smb.conf.%L

В окне обозревателя сети будет видны три сервера: sales accounting admin .

Включение параметров preserve case и short preserve case заставляют сервер сохранять всю вводимую информацию с учетом регистра символов (в Windows регистр не имеет значения, во всех Unix — наоборот).

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

Типичное описание данного раздела выглядит так:

Comment = Home Directories # комментарий, который виден в окне свойств сети browseable = no # определяет, выводить ли ресурс в списке просмотра. writable = yes # разрешает (no — запрещает) запись в домашнюю директорию create mode = 0750 # права доступа для вновь созданных файлов directory mode = 0775 # тоже, но только для каталогов

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

Comment = Public Stuff path = /home/samba public = yes writable = no printable = no write list = administrator, @sales

Параметр path указывает на каталог, в котором располагается ресурс; параметр public указывает, может ли пользоваться ресурсом гость, а printable — может ли использоваться данный ресурс для печати. Параметр write list позволяет определить пользователей, которым разрешена запись в ресурс независимо от значения writable (в данном примере это пользователь administrator и группа sales). Возможно использование и противоположного списка — read list. Если есть необходимость скрыть некоторые файлы, то в Unix/Linux для этого имя файла должно начинаться с точки (параметр hide dot files, который регулирует отображение скрытых файлов, по умолчанию равен yes ). Кроме того, есть возможность задать шаблоны имен скрытых файлов, для чего используется параметр hide files. Каждый шаблон начинается и заканчивается с символа косой черты (/) и может содержать символы, применяемые в регулярных выражениях. Например: hide files = /*.log/??.tmp/. Такие ухищрения обходятся пользователям Windows всего лишь установкой режима «Показывать скрытые и системные файлы» Проводника. Для уверенного ограничения доступности (возможности удаления) файла (каталога) используйте параметры veto files и delete veto files.

С CD-приводами дело обстоит несколько сложнее. Все дело в том, что в Unix-подобных системах понятие диска отсутствует как таковое, и для того чтобы получить доступ к нужному устройству, оно первоначально должно быть смонтировано в дерево каталогов (# mount -t iso9660 /dev/cdrom /mnt/cdrom), а после использования, чтобы не разрушить файловую систему, обязательно размонтировано (# umount /dev/cdrom), иначе устройство просто не отдаст диск. Если у вас на сервере запущен демон autofs , то проблема решается просто. Для того чтобы устройство, которое не используется в течение некоторого времени, было автоматически размонтировано, установите нужное значение параметра timeout в файле /etc/auto.master. Например:

/mnt/auto/etc/ —timeout=5

(подобная строка уже там есть, ее нужно только раскомментировать). Затем установите параметры для соответствующего устройства в файле /etc/auto.tab:

Cdrom -fstype=auto,ro:/dev/cdrom

После всего этого прописываем в /etc/smb.conf следующие строки, чтобы сделать доступным данный ресурс:

Path = /mnt/cdrom writable = no

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

Path = /mnt/cdrom read only = yes root preexec = mount /mnt/cdrom # монтировать ресурс имеет право только root root postexec = umount /mnt/cdrom # естественно, эти точки монтирования должны быть описаны в файле /etc/fstab, иначе необходимо указать и остальные данные.

Теперь при обращении к ресурсу автоматически монтируется CD-ROM, а иногда и размонтируется. Вся проблема в том, что решение о закрытии ресурса должен принять сервер — клиенты, как правило, не извещают об этом. Но обычно это происходит оттого, что ресурсом одновременно пользуются сразу несколько пользователей или на одном компьютере оставлен открытый файл на данном ресурсе (Device busy). Поэтому CD-ROM автоматически не размонтируется, единственный же приемлемый способ, чтобы освободить ресурс — посмотреть с помощью утилиты smbstatus номер процесса, использующего данный ресурс, и убить его командой # kill pid_number (или kill -s HUP pid_number).

Установив необходимую конфигурацию, теперь создадим учетные записи пользователей (за исключением гостевого входа с минимальными правами nobody). Для идентификации пользователей SAMBA используется файл /etc/samba/smbpasswd, в котором содержатся имена и зашифрованные пароли пользователей. Так как механизм шифрования в сетях Windows-машин не совместим со стандартными Unix-механизмами, для заполнения файла паролей используется отдельная утилита — smbpasswd .

# useradd -s /bin/false -d /home/samba/sergej -g sales sergej # smbpasswd -a sergej # smbpasswd -е sergej

В этом примере добавляется новый пользователь sergej , принадлежащий группе sales , с фиктивной оболочкой (возможны варианты /sbin/nologin, /dev/null) и домашним каталогом /home/samba/sergej. Затем создаем пароль для пользователя sergej и последним шагом включаем доступ пользователю, т.к. по умолчанию он отключен. Интересный момент, который может порой сбить с толку. Дело в том, что при подключении к SAMBA-серверу компьютера с Windows NT/2000 пользователю предлагается ввести, как и положено, логин и пароль, а если для доступа используется компьютер с ОС Windows 9x/Me, то пользователю предлагается ввести только пароль, а логин формируется автоматически на основе регистрационного имени.

Можно также сопоставить нескольких пользователей Windows одному пользователю Linux/Unix. Для этого создается файл сопоставления /etc/smbusers.map, в котором отдельной строкой задается каждое сопоставление:

Пользователь_ Linux = user_win1 user_win2 user_winN

В секции добавьте строку username map = /etc/smbusers.map. При этом пользователь Windows должен регистрироваться с паролем того пользователя, с которым он сопоставлен.

С помощью SAMBA можно организовать возможность сетевой печати с компьютеров под управлением Windows (если планируется отдельный сервер печати, то для этого бывает достаточно и машины на базе 486-процессора).

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

Printcap name = /etc/printcap # файл описания принтеров, подключенных к системе load printers = yes # указывает на необходимость автоматического включения в список сетевых ресурсов printing = lprng # система печати (для Linux может еще использоваться bsd).

Path = /var/spool/samba # указывает на каталог, в который помещаются задания на печать browseable = yes printable = yes read only = yes

После создания файла протестируйте его с помощью утилиты testparm . К сожалению, при помощи данной программы можно обнаружить лишь синтаксические ошибки, а не логические, поэтому нет никакой гарантии, что описанные в файле сервисы будут корректно работать (при тестировании будут выведены все установки, даже те, которые установлены по умолчанию, — поэтому внимательно просмотрите результат). Но если программа не ругается, можете надеяться, что при запуске файл будет загружен без проблем. Корректность работы принтеров, перечисленных в файле /etc/printcap, с сервером SAMBA можно проверить с помощью утилиты testprns . Плюс не забывайте о.log-файлах: при возникновении проблем там иногда можно найти решение.

Теперь немного о хорошем. Конфигурирование Samba — довольно сложная процедура, но с дистрибутивом поставляется инструмент администрирования на основе Web, который называется swat (Samba Web Administration Tool, ). Swat запускается в виде сервиса или с помощью сервера Apache и предназначен для редактирования файла smb.conf, а также для проверки состояния, запуска и остановки демонов Samba, смены паролей пользователей. Чтобы он работал в виде сервиса, в файле /etc/services должна обязательно присутствовать строка swat 901/tcp, а в файле /etc/inetd.conf — swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat (это если используется сетевой демон inetd , как правило в старых дистрибутивах; в современных дистрибутивах используется более защищенный вариант — xinetd ). Для того чтобы использовать при этом swat в каталоге /etc/xinet.d, создайте файл swat такого содержания:

Service swat { disable = no port = 901 socket_type = stream wait = no only_from = 127.0.0.1 # это строка для запуска только с локальной машины user = root server = /usr/sbin/swat log_on_failure += USERID }

Теперь для запуска Swat в окне браузера введите:

Http://localhost:901

Но перед этим обязательно создайте пользователя admin описанным выше способом. И никогда не запускайте сервис SAMBA от имени root .

После всех изменений в файле smb.conf иногда потребуется перезапустить демон:

Smb: /etc/rc.d/init.d/smb restart

Если после всех перечисленных действий так и не удалось организовать доступ к ресурсам SAMBA, то в дальнейшей настройке помогут такие утилиты как ping (для проверки доступности узла в сети), nmblookup (для запроса имен NetBIOS), или на крайний случай tcpdump . И не забывайте про права доступа, ведь назначив для пользователя каталог /gde/to/w/glubine, вы предоставите ему возможность прочитать (право на выполнение) и предыдущие каталоги.

Теперь поговорим об использовании клиента Samba, ведь нам (пользователям Linux) также хочется работать и с сетевыми ресурсами Windows. Для того чтобы узнать, какие ресурсы доступны, необходимо ввести команду /usr/bin/smbclient -L host_name. Программа запросит пароль, в ответ на что в большинстве случаев достаточно нажать Enter. Теперь, чтобы подключится к требуемому ресурсу, введите имя компьютера и требуемый ресурс. Например:

# /usr/bin/smbclient \\Alex\Sound

(здесь мы пробуем подключиться к папке Sound на компьютере Alex). В результате, если команда введена правильно и такой сетевой ресурс существует, вы должны получить приглашение на ввод пароля. Введите его или нажмите Enter, если пароль не нужен для доступа. В ответ вы получите приглашение samba-клиента: smb: >. В дальнейшем работа происходит путем набора команд, с помощью которых можно произвести все необходимые операции по работе с файлами (копирование, создание, перемещение и т.д.). Для получения справки введите smb: > help. Этот режим несколько неудобен, поэтому в большинстве случаев используют модуль smbfs , входящий в состав samba; но в старых дистрибутивах ядро может быть собрано без поддержки smbfs, и тогда его придется пересобрать. Для того чтобы смонтировать необходимый ресурс, наберите что-нибудь вроде этого:

Mount -t smbfs -o username=user,password=123456,iocharset=koi8-r,codepage=866 //alex/sound /mnt/sound.

Если не указать имя пользователя и пароль, то система сама его у вас спросит. Не забывайте, что, просмотрев файл ~HOME/.bash_history, можно по командам, которые вы набирали, узнать пароль. Еще одна тонкость: если программа smbclient правильно отображает файлы с русскими именами, то модуль smbfs иногда не обращает на другую кодировку абсолютно никакого внимания, даже если указать ее явно. Говорят, это можно исправить патчем, но я для своего Red Hat его еще не нашел.

Если вы хотите, чтобы ресурс SMB монтировался автоматически при запуске системы, добавьте в файл /etc/fstab примерно такую строку:

//guest@alex/sound /mnt/alex/sound smbfs rw, noauto 0 0.

В этом примере от имени пользователя guest (если ресурс поддерживает данного пользователя и если данный пользователь имеет доступ только по паролю, то не волнуйтесь: у вас его непременно спросят) сетевой ресурс sound на компьютере alex монтируется в папку /mnt/alex/sound с возможностью записи в данный каталог. Кстати, клиент Samba отлично видит скрытые сетевые ресурсы, т.е. те, у которых сетевое имя заканчивается знаком $.

Как видите, приходится работать с командной строкой, которая у современного пользователя вызывает тихий ужас. И здесь мир OpenSource пошел ему навстречу — создано много утилит, позволяющих работать с Samba-ресурсами более привычным путем, нажимая кнопки в графических оболочках. Самая популярная программа, входящая в дистрибутив Mandrake и производных от него, а также Debian — gnomba . В любом случае ее можно найти на большинстве серверов с ПО для Linux (на ftp://ftp.altlinux.ru/ видел точно). Данная утилита позволяет просмотреть доступные сетевые ресурсы () и при необходимости смонтировать в нужный каталог, при этом возможен вариант монтирования с указанием лог ина и пароля для тех ресурсов, которые этого требуют. Возможен запуск файлового менеджера при монтировании (по умолчанию gmc ), создание каталогов для монтируемых ресурсов, задание опции автоматического сканирования при запуске программы (возможно с использованием протокола SMB по умолчанию) и сканирования по IP-адресам (планируется с использованием WINS-протокола). По невыясненным мною причинам в некоторых дистрибутивах при сканировании с помощью SMB-протокола не выводились сетевые ресурсы, поэтому я всегда использую второй метод, благо он действует безотказно, необходимо лишь задать диапазон IP-адресов для сканирования (если знаете). Для того чтобы отображались правильно русские имена файлов, не забудьте установить шрифты koi8-r во вкладке Опции > Выбор шрифта , а также проверить строки, указывающие кодировку кириллицы в файле smb.conf (см. выше).

Если gnomba может только монтировать и размонтировать ресурсы, то программа xsmbrowser позволяет еще и заходить в них как в папки на локальном компьютере (). Правда, мне пока не удалось заставить эту программу понимать файлы с русскими названиями, но есть и положительные стороны: при работе данной программы все команды по монтированию и различные сетевые запросы выводятся на консоль, что позволяет хорошо разобраться в них. Разработчики KDE тоже постарались: через Preferences > Information доступна утилита Samba Status , отображающая все подключения к/от локального компьютера, одновременно являющаяся удобным средством просмотра.log-файлов. Аналогичную информацию представляет и утилита komba , которую можно найти на http://linux.tucows.com/ ().

Как бы я ни хотел рассказать вам больше, но журнал есть журнал — всего не уместишь. Далее в помощь вам придут вездесущие man и info. Также всю необходимую справочную информацию можно получить из утилиты SWAT, к тому же в Red Hat 7.3 обнаружилась книга Using Samba Robert»a Eckstein»a (язык английский — плохо, совершенно бесплатно — хорошо: /usr/share/swat/using_samba), доступная также из SWAT (). В каталоге /usr/share/doc/samba можно найти дополнительную документацию, FAQ и примеры конфигурационных файлов. В различных форумах можно встретить довольно противоречивые мнения о работе Samba, от крайне отрицательных до полного восторга. Лично я на стороне сторонников этого эмулятора Windows NT, к тому же по результатам тестов при одинаковом оборудовании сервер Samba показывает производительность примерно на 25-30% выше, чем компьютер под управлением системы от Microsoft. Успехов.

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

В наше время практически в каждой квартире есть сеть Wi-Fi, а также имеется большое количество разнообразных устройств (ноутбуки, смартфоны, планшеты, Android TV Box). В связи с этим рано или поздно назревает необходимость объединить все доступные для использования устройства в одну домашнюю сеть, чтобы беспрепятственно получить доступ к всевозможным файлам с любого гаджета.

Собственно об этом и пойдет речь в настоящем опусе. Итак, приступим.

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

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

Установка серверной части Samba

В своем случае для серверного устройства я выбрал ноутбук, на котором паралельно установлены Windows 7 и Ubuntu Mate 16.04. Ниже подробно рассмотрим процесс установки и настройки Samba для обеих операционных систем.

Настройка samba server под Linux

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

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

Sudo apt install gadmin-samba

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

Настроек в программе много, но по большему счету, в нашем случае нас интересует вкладка «users». Переходим в нее и добавляем нового пользователя.

Нажимаем кнопку «New user», в обновившемся окне вводим имя пользователя, придумываем пароль, добавляем в группу (чтобы «не выдумывать велосипед», указываем существующую, а именно «sambausers») и устанавливаем домашнюю директорию для файлов. После этого жмем «Apply».

HD Videobox — новый пользователь

Для применения изменений перезапускаем сервер, кнопка «deactivate» и «activate», соответственно, расположенные в верхнем левом углу окна приложения.

Не забываем, также, установить права доступа на «расшаренные» для совместного доступа папки. Это можно сделать, как через терминал, так и через графический интерфейс проводника файлов наутилус.

Nautilus — изменение прав доступа

Nautilus — разрешение на запись файлов

Настройка samba server под Windows

В случае с Windows все гораздо прозаичней, так как Samba используется в данной операционной системе по умолчанию.

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

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

Добавление новой учетной записи

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

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

«Расшаривание» папки

Добавление пользователя и изменение прав папки

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

Установка клиентской части Samba на Android

Для доступа к серверу Samba и, соответственно сетевым дискам, на устройствах под управлением Android рекомендую использовать приложение Root Explorer (ссылка на скачивание полной версии без рекламы в конце статьи).

Понравилась статья? Поделиться с друзьями:
Базовые компьютерные навыки
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: