Ubuntu: как предоставить сетевой доступ к каталогу для Windows Печать
Добавил(а) microsin   

Ниже показан процесс настройки общего доступа через сеть к папке на Ubuntu по протоколу SAMBA (сетевой доступ к общим ресурсам Windows). Будет предоставлен общий доступ без запроса логина и пароля. Проверялось на Ubuntu 18.04 (сервер SAMBA) и Windows 10 Pro (клиент SAMBA).

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

1. Установите сервер Samba.

sudo apt-get update
sudo apt-get install samba
smbd start

При первом старте сервер Samba запросит имя пользователя и пароль для сетевого доступа. Введите имя локального пользователя и пароль.

2. Создайте каталог на Ubuntu, к которому предоставляется доступ. В этом примере создается папка share в каталоге домашних директорий пользователей.

sudo mkdir /home/share

3. Установка владельца для папки share (без владельца и без группы):

sudo chown nobody:nogroup /home/share

4. Установка прав на полный доступ к папке share:

sudo chmod 777 /home/share

5. Отредактируйте файл конфигурации smb.conf в любом текстовом редакторе (в этом примере используется mcedit из пакета Midnight Commander).

sudo mcedit /etc/samba/smb.conf

Убедитесь, что в секции [global] добавлены следующие строки:

   workgroup = WORKGROUP
   map to guest = Bad User
   usershare allow guests = Yes

6. Создайте секцию описания общего ресурса [share].

[share]
   create mask = 0777
   directory mask = 0777
   guest ok = Yes
   path = /home/share/
   read only = No

7. Перезапустите сервис samba:

sudo service smbd restart

#
# Пример файла конфигурации Samba для Debian GNU/Linux.
#
#
# Это основной конфигурационный файл Samba. Чтобы понять значение
# указанных здесь опций, прочитайте man-руководство smb.conf(5).
# У Samba есть большое количество опций настройки, большинство
# из которых здесь не показаны.
#
# Некоторые опции, который часто стоит настроить, показаны как
# закомментированные примеры в этом файле.
#  - Когда такие опции закомментированы с помощью ";", то эта
#    предложенная настройка включает опцию, которая отличается
#    от поведения по умолчанию Samba.
#  - Когда комментарий начинается с "#", то эта предложенная
#    настройка соответствует поведению по умолчанию Samba,
#    однако опция достаточно важна, чтобы быть упомянутой.
#
# ЗАМЕЧАНИЕ: всякий раз, когда Вы изменили этот файл, нужно
# проверить корректность сделанных настроек с помощью запуска
# команды "testparm" - она покажет базовые ошибки синтаксиса.
 
#==================== Глобальные настройки ====================
 
[global]
 
## Браузинг/идентификация ###
 
# Поменяйте это имя так, чтобы оно соответствовало рабочей
# группе / домену NT, куда сервер Samba будет входить как часть
# сетевого окружения:
   workgroup = WORKGROUP
 
# server string это эквивалент поля NT Description (описание сервера):
        server string = %h server (Samba, Ubuntu)
 
# Секция поддержки службы Windows Internet Name Serving:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
#   wins support = no
# WINS Server - сообщает WINS-клиенту компоненты NMBD.
# Замечание: Samba может быть либо сервером WINS, либо клиентом WINS,
# но не может выполнять обе эти роли одновременно.
;   wins server = w.x.y.z
 
# Эта опция предотвратит для nmbd поиск NetBIOS-имен через DNS.
   dns proxy = no
 
 
#### Сетевые настройки ####
 
# Специфический набор интерфейсов / сетей для привязки службы.
# Это может быть либо имя интерфейса, либо IP-адрес/маска;
# обычно предпочитают имена интерфейсов.
;   interfaces = 127.0.0.0/8 eth0
 
# Привязка только и именованным интерфейсам и/или сетям; для её применения
# Вы должны использовать вышеуказанную опцию 'interfaces'. Рекомендуется
# разрешить эту функцию, если Ваша машина с Samba не защищена файерволом
# или сама является файерволом. Однако эта опция не может корректно
# обрабатывать динамические или не широковещательные интерфейсы.
;   bind interfaces only = yes
 
 
#### Отладка / учет ####
 
# Говорит Samba использовать отдельный log-файл для каждой машины, которая
# подключится:
   log file = /var/log/samba/log.%m
 
# Предел размера отдельных лог-файлов (в килобайтах).
   max log size = 1000
 
# Если Вы хотите, чтобы Samba писала только в системный лог (syslog),
# то установите следующий параметр как 'yes'.
#   syslog only = no
 
# Мы хотим свести к минимуму количество информации, сохраняемой в syslog.
# Вместо этого все должно идти в /var/log/samba/log.{smbd,nmbd}. Если Вы
# хотите писать именно в syslog, то должны установить следующий параметр
# в какое-то большее число.
   syslog = 0
 
# Сделать что-нибудь значимое, когда Samba упала: отправить письмо
# backtrace админу:
   panic action = /usr/share/samba/panic-action %d
 
 
####### Аутентификация #######
 
# Роль сервера. Определяет, в каком режиме будет работать Samba. Возможные
# значения "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller".
#
# Большинство пользователей предпочитают "standalone sever" или "member server".
# Запуск в качестве "active directory domain controller" сначала потребует
# запуска "samba-tool domain provision" чтобы вычистить базы данных и создать
# новый домен.
   server role = standalone server
 
# Если Вы хотите использовать зашифрованные пароли, то Samba должна знать,
# какую базу данных паролей Вы используете.
   passdb backend = tdbsam
   obey pam restrictions = yes
 
# Этот двоичный параметр (yes/no) управляет, будет ли Samba делать попытки
# синхронизировать пароль Unix с паролем SMB, когда изменен шифрованный 
# пароль SMB password в базе passdb.
   unix password sync = yes
 
# Для синхронизации пароля Unix, работающей на системе Debian GNU/Linux,
# должны быть установлены следующие параметры (благодаря Ian Kahan 
<< kahan@informatik.tu-muenchen.de> для отправки корректного чат-скрипта
# программе passwd в Debian Sarge).
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:*
    %n\n *password\supdated\ssuccessfully* .
 
# Эта двоичная опция управляет, будет ли использоваться PAM для изменений
# пароля, когда запрашивается SMB-клиент вместо программы, перечисленной
# d'passwd program'. Значение по умолчанию 'no'.
   pam password change = yes
 
# Эта опция управляет, как не успешные попытки аутентификации будут отображаться
# на анонимные подключения:
   map to guest = bad user
 
 
########## Домены ###########
 
#
# Следующие установки дают эффект только если установлено 'server role = primary
# classic domain controller', 'server role = backup domain controller', или
# 'domain logons'.
#
 
# Задает место нахождения директории профиля пользователя с точки зрения
# клиента). Следующий пример требует наличия настроенной на сервере Samba
# шары [profiles] (см. ниже):
;   logon path = \\%N\profiles\%U
# Другой общий выбор - сохранение профиля в домашней директории пользователя
# (это вариант по умолчанию для Samba):
#   logon path = \\%N\%U\profile
 
# Следующая установка дает эффект только если установлено 'domain logons'.
# Задает место нахождения домашней директории пользователя (с точки зрения
# клиента):
;   logon drive = H:
#   logon home = \\%N\%U
 
# Следующая установка дает эффект только если установлено 'domain logons'.
# Задает скрипт, запускаемый при логоне. Скрипт должен быть сохранен в шаре
# [netlogon].
# Замечание: файл скрипта должен иметь имя формата 'DOS'.
;   logon script = logon.cmd
 
# Это позволяет создавать пользователей Unix на контроллере домена через SAMR
# RPC pipe. Пример команды создает учетную запись пользователя  с запрещенным
# паролем Unix; пожалуйста адаптируйте этот пример под свои нужды:
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
 
# Это позволяет учетным записям машины быть созданными на контроллере домена
# через SAMR RPC pipe. Следующий пример настройки подразумевает, что группа
# "machines" существует на системе:
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account"
 -d /var/lib/samba -s /bin/false %u
 
# Это позволяет группам Unix быть созданными на контроллере домена
# через SAMR RPC pipe.
; add group script = /usr/sbin/addgroup --force-badname %g
 
 
############ Разное ############
 
# Использование следующей строки позволит Вам настроить пользовательскую
# конфигурацию на базе машин. Строка %m будет заменена именем netbios машины,
# которая подключается.
;   include = /home/samba/etc/smb.conf.%m
 
# Некоторые умолчания для winbind (убедитесь, что Вы не используете эти
# диапазоны для чего-то еще).
;   idmap uid = 10000-20000
;   idmap gid = 10000-20000
;   template shell = /bin/bash
 
# Настройка опций шар пользователя, чтобы разрешить не-root
# пользователям расшаривать папки командой net usershare.
# Максимальное количество шар пользователя. 0 (по умолчанию) означает,
# что функция usershare запрещена.
;   usershare max shares = 100
 
# Разрешает пользователям, которым даны привилегии usershare, создавать
# публичные шары, не только аутентификационные:
   usershare allow guests = yes
 
 
#======================= Определения шар =======================
 
# Раскомментируйте следующее (и настройте другие опции ниже по мере
# надобности), чтобы разрешить шары домашней директории по умолчанию.
# Это расшарит каждую домашнюю директорию пользователя как
# \\server\username:
;[homes]
;   comment = Home Directories
;   browseable = no
 
# По умолчанию домашние директории экспортируются только для чтения
# (read-only). Поменяйте следующий параметр на 'no', если хотите
# иметь возможность писать в них:
;   read only = yes
 
# Маска создания файла установлена на 0700 по соображениям безопасности.
# Если Вы хотите создавать файлы с разрешениями group=rw, то установите
# следующий параметр на 0775 (полный доступ для всех задается маской 0x777).
;   create mask = 0700
 
# Маска создания директории установлена на 0700 по соображениям безопасности.
# Если Вы хотите создавать каталоги с разрешениями group=rw, то установите
# следующий параметр на 0775 (полный доступ для всех задается маской 0x777).
;   directory mask = 0700
 
# По умолчанию к шарам \\server\username могут подключаться кто угодно,
# кто имеет доступ к серверу Samba. Раскомментируйте следующий параметр
# для гарантии, что только "username" может подключиться к шаре
# \\server\username. Это может потребовать подстройки, если используются
# схемы внешней аутентификации.
;   valid users = %S
 
# Раскомментируйте следующее, чтобы создать директорию netlogon для
# логонов домена (Domain Logons). Также потребуется сконфигурировать
# Samba, чтобы она функционировала как контроллер домена.
;[netlogon]
;   comment = Network Logon Service
;   path = /home/samba/netlogon
;   guest ok = yes
;   read only = yes
 
# Раскомментируйте следующее, чтобы создать директорию profiles для
# хранения профилей пользователей (см. выше опцию "logon path").
# Также потребуется сконфигурировать Samba, чтобы она функционировала
# как контроллер домена. Путь ниже должен быть записываемым для всех
# пользователей, чтобы могли быть созданы их директории, когда пользователи
# логинятся первый раз.
;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700
 
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
 
# Клиенты Windows видят это имя шары как источник загружаемых драйверов принтера:
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
# Раскомментируйте, чтобы позволить удаленное администрирование драйверов
# принтеров Windows. Вам может понадобиться заменить 'lpadmin' именем
# группы, членами которой являются Ваши пользователи с полномочиями
# администратора. Обратите внимание, что Вам нужно установить подходящие
# разрешения Unix для этих пользователей на директорию драйверов, чтобы
# они могли туда записывать:
;   write list = root, @lpadmin
 
# Эта шара для обмена файлами, в неё имеют полный доступ кто угодно
# без необходимости использования правильного пароля:
[share]
   path = /home/share/
   read only = No
   create mask = 0777
   directory mask = 0777
   browseable = yes
   public = yes

8. Проверить активную конфигурацию smbd можно командой:

testparm -s

[Ссылки]

1. How to Create a Network Share Via Samba Via CLI site:help.ubuntu.com.