diff --git a/дополнительные-материалы/настройка samba/Установка и настройка Samba на Ubuntu.html b/дополнительные-материалы/настройка samba/Установка и настройка Samba на Ubuntu.html new file mode 100644 index 0000000..274a96d --- /dev/null +++ b/дополнительные-материалы/настройка samba/Установка и настройка Samba на Ubuntu.html @@ -0,0 +1,2597 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Установка и настройка Samba на Ubuntu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + +
+ + + +
+
+ + + +
+
+ +
+ +
+
+ +
+ + +
+
+ +
+ +
+ +
+ + + +
+
+ + + +
+ + +
+ +
+ +
+
+ +

Установка и настройка Samba на Ubuntu 20.04

+
+
+
+

+ В статье рассказываем, как установить Samba на ОС Ubuntu 20.04, подключить к ресурсам и настроить сетевую корзину.

+ +
+
+
+ + +
+ +

Введение 

+ + + +

В этом мануале разберем последовательную установку и настройку программного обеспечения Samba на Ubuntu 20.04. Шаги данной инструкции выполним на облачной инфраструктуре Selectel.

+ + + +

Что такое Samba 

+ + + +

Samba — стандартный набор программ для взаимодействия с Windows для Linux и Unix. Это свободное программное обеспечение, лицензированное по GNU General Public License. С 1992 года Samba предоставляет безопасные, стабильные и быстрые услуги по работе с файлами и печатью для всех клиентов, использующих протокол SMB/CIFS, таких как все версии DOS и Windows, OS/2, Linux и многие другие.
Samba — важный компонент для беспрепятственной интеграции Linux/Unix-серверов и настольных компьютеров в среду Active Directory. Она может функционировать как в качестве контроллера домена, так и в качестве обычного члена домена.

+ + + +
+
+

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

+
+ + + + +
+ + + +

Подготовка виртуального сервера

+ + + +

Для этой инструкции используется виртуальная среда Selectel. Панель управления расположена по адресу: https://my.selectel.ru/.

+ + + +

Найдем в шапке ПродуктыОблачные серверы и создадим новый сервер.

+ + + +
+ + + +

Используем минимальную конфигурацию:

+ + + +
    +
  • 1 CPU,
  • + + + +
  • 1 ГБ оперативной памяти,
  • + + + +
  • 5 ГБ памяти на универсальном диске.
  • +
+ + + +

В настройках надо выбрать образ операционной системы для установки.

+ + + +

В данном случае это Ubuntu 20.04 LTS 64-bit из списка готовых конфигураций.

+ + + +
Создаем сервер.
+ + + +

Далее выбираем подходящую вам конфигурацию и настраиваем сеть.

+ + + +
Настраиваем сервер.
+ + + +

Оставим себе root-пароль и создадим сервер. После этого в панели управления появится IP-адрес сервера. 

+ + + +

Подключимся к серверу по ssh и начнем настройку.

+ + + +
+
+

+ Зарегистрируйтесь и начните использовать продукты Selectel прямо сейчас

+ +
+
+
+
+ +
+
+
+ +
+
+ + + +
+
+
+ +
+
+ +
+
+
+
+ +
+ +
+
+
+ +
+
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+ +
+
+ + + + + +
+
+ + + +

Создание пользователя

+ + + +

Создадим простого пользователя для дальнейшего тестирования подключения к настроенным директориям.

+ + + +
+
+      sudo useradd -p password  selectel
+
+
+ + + +

Опция -p разрешит задать пароль пользователя сразу, password — созданный пароль, selectel — создаваемый пользователь.

+ + + +

Перед дальнейшей настройкой обновим репозитории. Сделать это можно командой:

+ + + +
+
+      sudo apt update -y
+
+
+ + + +

Настройка даты и времени

+ + + +

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

+ + + +

Для настройки даты и времени используется утилита chrony. Ее демона можно добавить в автозагрузку сервера и время всегда будет актуальным. Отправим в терминал команду установки пакета:

+ + + +
+
+      sudo apt install chrony -y
+
+ + + +

Вывод установки:

+ + + +
+
+      Reading package lists... Done
+Building dependency tree
+Reading state information... Done
+The following packages will be REMOVED:
+  systemd-timesyncd
+The following NEW packages will be installed:
+  chrony
+0 upgraded, 1 newly installed, 1 to remove and 5 not upgraded.
+Need to get 220 kB of archives.
+After this operation, 287 kB of additional disk space will be used.
+Get:1 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 chrony amd64 3.5-6ubuntu6.2 [220 kB]
+Fetched 220 kB in 0s (6903 kB/s)
+dpkg: systemd-timesyncd: dependency problems, but removing anyway as you requested:
+ systemd depends on systemd-timesyncd | time-daemon; however:
+  Package systemd-timesyncd is to be removed.
+  Package time-daemon is not installed.
+  Package systemd-timesyncd which provides time-daemon is to be removed.
+  Package ntp which provides time-daemon is not installed.
+ systemd depends on systemd-timesyncd | time-daemon; however:
+  Package systemd-timesyncd is to be removed.
+  Package time-daemon is not installed.
+  Package systemd-timesyncd which provides time-daemon is to be removed.
+  Package ntp which provides time-daemon is not installed.
+
+(Reading database ... 57118 files and directories currently installed.)
+Removing systemd-timesyncd (245.4-4ubuntu3.13) ...
+Selecting previously unselected package chrony.
+(Reading database ... 57105 files and directories currently installed.)
+Preparing to unpack .../chrony_3.5-6ubuntu6.2_amd64.deb ...
+Unpacking chrony (3.5-6ubuntu6.2) ...
+Setting up chrony (3.5-6ubuntu6.2) ...
+Creating '_chrony' system user/group for the chronyd daemon…
+
+Creating config file /etc/chrony/chrony.conf with new version
+
+Creating config file /etc/chrony/chrony.keys with new version
+Created symlink /etc/systemd/system/chronyd.service → /lib/systemd/system/chrony.service.
+Created symlink /etc/systemd/system/multi-user.target.wants/chrony.service → /lib/systemd/system/chrony.service.
+Processing triggers for man-db (2.9.1-1) ...
+Processing triggers for dbus (1.12.16-2ubuntu2.1) ...
+Processing triggers for systemd (245.4-4ubuntu3.13) ...
+
+
+
+ + + +

Добавим в автозагрузку сервера:

+ + + +
+
+      sudo systemctl enable chrony
+
+ + + +

Вывод:

+ + + +
+
+      Synchronizing state of chrony.service with SysV service script with /lib/systemd/systemd-sysv-install.
+Executing: /lib/systemd/systemd-sysv-install enable chrony
+
+
+ + + +

Запустим утилиту:

+ + + +
+
+      sudo systemctl start chrony
+
+
+ + + +

Установим часовой пояс. Для данной инструкции используется Europe/Moscow. Команда: 

+ + + +
+
+      sudo timedatectl set-timezone Europe/Moscow
+
+
+ + + +

Проверим дату и время командой:

+ + + +
+
+      date
+
+
+ + + +

Вывод:

+ + + +
+
+      Mon Dec  6 07:13:49 UTC 2021
+
+ + + +
+
+ + + +
+
+ + + +

Установка Samba

+ + + +

Перейдем непосредственно к установке Samba на Ubuntu. Отправим в терминал команду:

+ + + +
+
+      sudo apt install samba -y
+
+ + + +

Вывод:

+ + + +
+
+      Reading package lists... Done
+Building dependency tree
+Reading state information... Done
+The following additional packages will be installed:
+  libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libldb2 libtalloc2 libtevent0 libwbclient0 python3-crypto python3-dnspython
+  python3-ldb python3-samba python3-talloc python3-tdb samba-common samba-common-bin samba-libs tdb-tools
+Suggested packages:
+  cups-common bind9 bind9utils ctdb ldb-tools smbldap-tools winbind heimdal-clients python3-markdown
+Recommended packages:
+  python3-gpg attr python3-markdown samba-dsdb-modules samba-vfs-modules
+The following NEW packages will be installed:
+  libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libldb2 libtalloc2 libtevent0 libwbclient0 python3-crypto python3-dnspython
+  python3-ldb python3-samba python3-talloc python3-tdb samba samba-common samba-common-bin samba-libs tdb-tools
+0 upgraded, 19 newly installed, 0 to remove and 5 not upgraded.
+Need to get 11.1 MB of archives.
+After this operation, 71.6 MB of additional disk space will be used.
+Get:1 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libtalloc2 amd64 2.3.1-0ubuntu0.20.04.1 [29.5 kB]
+Get:2 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libtevent0 amd64 0.10.2-0ubuntu0.20.04.1 [35.6 kB]
+Get:3 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libwbclient0 amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [208 kB]
+Get:4 http://mirror.selectel.ru/ubuntu focal/main amd64 python3-dnspython all 1.16.0-1build1 [89.1 kB]
+Get:5 http://mirror.selectel.ru/ubuntu focal/main amd64 python3-crypto amd64 2.6.1-13ubuntu2 [237 kB]
+Get:6 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libldb2 amd64 2:2.2.3-0ubuntu0.20.04.2 [140 kB]
+Get:7 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 python3-ldb amd64 2:2.2.3-0ubuntu0.20.04.2 [38.3 kB]
+Get:8 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 python3-tdb amd64 1.4.3-0ubuntu0.20.04.1 [13.4 kB]
+Get:9 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libavahi-common-data amd64 0.7-4ubuntu7.1 [21.4 kB]
+Get:10 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libavahi-common3 amd64 0.7-4ubuntu7.1 [21.7 kB]
+Get:11 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libavahi-client3 amd64 0.7-4ubuntu7.1 [25.5 kB]
+Get:12 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 libcups2 amd64 2.3.1-9ubuntu1.1 [233 kB]
+Get:13 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 python3-talloc amd64 2.3.1-0ubuntu0.20.04.1 [12.2 kB]
+Get:14 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 samba-libs amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [5753 kB]
+Get:15 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 python3-samba amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [2575 kB]
+Get:16 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 samba-common all 2:4.13.14+dfsg-0ubuntu0.20.04.2 [68.3 kB]
+Get:17 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 samba-common-bin amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [556 kB]
+Get:18 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 tdb-tools amd64 1.4.3-0ubuntu0.20.04.1 [24.9 kB]
+Get:19 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 samba amd64 2:4.13.14+dfsg-0ubuntu0.20.04.2 [1065 kB]
+Fetched 11.1 MB in 0s (43.4 MB/s)
+Preconfiguring packages ...
+Selecting previously unselected package libtalloc2:amd64.
+(Reading database ... 57147 files and directories currently installed.)
+Preparing to unpack .../00-libtalloc2_2.3.1-0ubuntu0.20.04.1_amd64.deb ...
+Unpacking libtalloc2:amd64 (2.3.1-0ubuntu0.20.04.1) ...
+Selecting previously unselected package libtevent0:amd64.
+Preparing to unpack .../01-libtevent0_0.10.2-0ubuntu0.20.04.1_amd64.deb ...
+Unpacking libtevent0:amd64 (0.10.2-0ubuntu0.20.04.1) ...
+Selecting previously unselected package libwbclient0:amd64.
+Preparing to unpack .../02-libwbclient0_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb ...
+Unpacking libwbclient0:amd64 (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Selecting previously unselected package python3-dnspython.
+Preparing to unpack .../03-python3-dnspython_1.16.0-1build1_all.deb ...
+Unpacking python3-dnspython (1.16.0-1build1) ...
+Selecting previously unselected package python3-crypto.
+Preparing to unpack .../04-python3-crypto_2.6.1-13ubuntu2_amd64.deb ...
+Unpacking python3-crypto (2.6.1-13ubuntu2) ...
+Selecting previously unselected package libldb2:amd64.
+Preparing to unpack .../05-libldb2_2%3a2.2.3-0ubuntu0.20.04.2_amd64.deb ...
+Unpacking libldb2:amd64 (2:2.2.3-0ubuntu0.20.04.2) ...
+Selecting previously unselected package python3-ldb.
+Preparing to unpack .../06-python3-ldb_2%3a2.2.3-0ubuntu0.20.04.2_amd64.deb ...
+Unpacking python3-ldb (2:2.2.3-0ubuntu0.20.04.2) ...
+Selecting previously unselected package python3-tdb.
+Preparing to unpack .../07-python3-tdb_1.4.3-0ubuntu0.20.04.1_amd64.deb ...
+Unpacking python3-tdb (1.4.3-0ubuntu0.20.04.1) ...
+Selecting previously unselected package libavahi-common-data:amd64.
+Preparing to unpack .../08-libavahi-common-data_0.7-4ubuntu7.1_amd64.deb ...
+Unpacking libavahi-common-data:amd64 (0.7-4ubuntu7.1) ...
+Selecting previously unselected package libavahi-common3:amd64.
+Preparing to unpack .../09-libavahi-common3_0.7-4ubuntu7.1_amd64.deb ...
+Unpacking libavahi-common3:amd64 (0.7-4ubuntu7.1) ...
+Selecting previously unselected package libavahi-client3:amd64.
+Preparing to unpack .../10-libavahi-client3_0.7-4ubuntu7.1_amd64.deb ...
+Unpacking libavahi-client3:amd64 (0.7-4ubuntu7.1) ...
+Selecting previously unselected package libcups2:amd64.
+Preparing to unpack .../11-libcups2_2.3.1-9ubuntu1.1_amd64.deb ...
+Unpacking libcups2:amd64 (2.3.1-9ubuntu1.1) ...
+Selecting previously unselected package python3-talloc:amd64.
+Preparing to unpack .../12-python3-talloc_2.3.1-0ubuntu0.20.04.1_amd64.deb ...
+Unpacking python3-talloc:amd64 (2.3.1-0ubuntu0.20.04.1) ...
+Selecting previously unselected package samba-libs:amd64.
+Preparing to unpack .../13-samba-libs_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb ...
+Unpacking samba-libs:amd64 (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Selecting previously unselected package python3-samba.
+Preparing to unpack .../14-python3-samba_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb ...
+Unpacking python3-samba (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Selecting previously unselected package samba-common.
+Preparing to unpack .../15-samba-common_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_all.deb ...
+Unpacking samba-common (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Selecting previously unselected package samba-common-bin.
+Preparing to unpack .../16-samba-common-bin_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb ...
+Unpacking samba-common-bin (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Selecting previously unselected package tdb-tools.
+Preparing to unpack .../17-tdb-tools_1.4.3-0ubuntu0.20.04.1_amd64.deb ...
+Unpacking tdb-tools (1.4.3-0ubuntu0.20.04.1) ...
+Selecting previously unselected package samba.
+Preparing to unpack .../18-samba_2%3a4.13.14+dfsg-0ubuntu0.20.04.2_amd64.deb ...
+Unpacking samba (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Setting up samba-common (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+
+Creating config file /etc/samba/smb.conf with new version
+Setting up libtalloc2:amd64 (2.3.1-0ubuntu0.20.04.1) ...
+Setting up python3-tdb (1.4.3-0ubuntu0.20.04.1) ...
+Setting up libtevent0:amd64 (0.10.2-0ubuntu0.20.04.1) ...
+Setting up libavahi-common-data:amd64 (0.7-4ubuntu7.1) ...
+Setting up tdb-tools (1.4.3-0ubuntu0.20.04.1) ...
+update-alternatives: using /usr/bin/tdbbackup.tdbtools to provide /usr/bin/tdbbackup (tdbbackup) in auto mode
+Setting up python3-dnspython (1.16.0-1build1) ...
+Setting up python3-crypto (2.6.1-13ubuntu2) ...
+Setting up libldb2:amd64 (2:2.2.3-0ubuntu0.20.04.2) ...
+Setting up python3-talloc:amd64 (2.3.1-0ubuntu0.20.04.1) ...
+Setting up libavahi-common3:amd64 (0.7-4ubuntu7.1) ...
+Setting up libwbclient0:amd64 (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Setting up python3-ldb (2:2.2.3-0ubuntu0.20.04.2) ...
+Setting up libavahi-client3:amd64 (0.7-4ubuntu7.1) ...
+Setting up libcups2:amd64 (2.3.1-9ubuntu1.1) ...
+Setting up samba-libs:amd64 (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Setting up python3-samba (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Setting up samba-common-bin (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Checking smb.conf with testparm
+Load smb config files from /etc/samba/smb.conf
+Loaded services file OK.
+Weak crypto is allowed
+Server role: ROLE_STANDALONE
+
+Done
+Setting up samba (2:4.13.14+dfsg-0ubuntu0.20.04.2) ...
+Adding group `sambashare' (GID 121) ...
+Done.
+Samba is not being run as an AD Domain Controller: Masking samba-ad-dc.service
+Please ignore the following error about deb-systemd-helper not finding those services.
+(samba-ad-dc.service masked)
+Created symlink /etc/systemd/system/multi-user.target.wants/nmbd.service → /lib/systemd/system/nmbd.service.
+Failed to preset unit: Unit file /etc/systemd/system/samba-ad-dc.service is masked.
+/usr/bin/deb-systemd-helper: error: systemctl preset failed on samba-ad-dc.service: No such file or directory
+Created symlink /etc/systemd/system/multi-user.target.wants/smbd.service → /lib/systemd/system/smbd.service.
+samba-ad-dc.service is a disabled or a static unit, not starting it.
+Processing triggers for ufw (0.36-6ubuntu1) ...
+Rules updated for profile 'Squid'
+Skipped reloading firewall
+Processing triggers for systemd (245.4-4ubuntu3.13) ...
+Processing triggers for man-db (2.9.1-1) ...
+Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
+
+
+ + + +

Демон или сервис Samba называется smbd. Под таким именем и будем к нему обращаться.

+ + + +

Добавим сервис smbd в автозапуск:

+ + + +
+
+      sudo systemctl enable smbd
+
+
+ + + +

Запустим:

+ + + +
+
+      sudo systemctl start smbd
+
+ + + +

Проверим текущий статус:

+ + + +
+
+      sudo systemctl status smbd
+
+
+ + + +

Далее перечислим оставшиеся команды управления сервисом smbd. Они могут потребоваться в дальнейшем в процессе эксплуатации Samba.

+ + + +

Остановить сервис:

+ + + +
+
+      sudo systemctl stop smbd
+
+ + + +

Перезапуск демона:

+ + + +
+
+      sudo systemctl restart smbd
+
+ + + +

Убрать из автозапуска:

+ + + +
+
+      sudo systemctl disable smbd
+
+ + + +

Перечитать конфигурацию:

+ + + +
+
+      sudo systemctl reload smbd
+
+ + + +

Результат проверки статуса:

+ + + +
+
+      ● smbd.service - Samba SMB Daemon
+     Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
+     Active: active (running) since Mon 2021-12-06 09:50:18 UTC; 26s ago
+       Docs: man:smbd(8)
+             man:samba(7)
+             man:smb.conf(5)
+   Main PID: 83137 (smbd)
+     Status: "smbd: ready to serve connections..."
+      Tasks: 4 (limit: 1105)
+     Memory: 7.2M
+     CGroup: /system.slice/smbd.service
+             ├─83137 /usr/sbin/smbd --foreground --no-process-group
+             ├─83139 /usr/sbin/smbd --foreground --no-process-group
+             ├─83140 /usr/sbin/smbd --foreground --no-process-group
+             └─83141 /usr/sbin/smbd --foreground --no-process-group
+
+Dec 06 09:50:18 apachi systemd[1]: Starting Samba SMB Daemon...
+Dec 06 09:50:18 apachi systemd[1]: Started Samba SMB Daemon.
+Dec 06 09:50:28 apachi systemd[1]: Reloading Samba SMB Daemon.
+Dec 06 09:50:28 apachi systemd[1]: Reloaded Samba SMB Daemon.
+
+
+ + + +

Если в настраиваемой системе включен брандмауэр ufw, необходимо добавить разрешающее правило для Samba:

+ + + +
+
+      sudo ufw allow Samba
+
+ + + +

или:

+ + + +
+
+      sudo ufw allow 445
+
+ + + +
+
+      sudo ufw allow 137
+
+ + + +
+
+      sudo ufw allow 138
+
+ + + +
+
+      sudo ufw allow 139 
+
+ + + +

В каждом правиле указан порт из диапазона, в котором работает Samba.

+ + + +

Предварительная подготовка доступа

+ + + +

В этой инструкции используется удаленный сервер, расположенный в интернете. Открывать прямой доступ по IP-адресу к  ресурсам в таком случае нельзя. Поэтому перед дальнейшей настройкой будет организован VPN-туннель. Настраивать VPN для удаленного доступа в локальной сети не потребуется. Настройку мы произвели, следуя этой инструкции.

+ + + +

После получения доступа к удаленному серверу с использованием VPN-туннеля, сервер имеет адрес 10.8.0.1 

+ + + +

Дальнейшие действия будут производиться с использованием этого адреса.

+ + + +

Настройка Samba

+ + + +

Конфигурационный файл Samba расположен по следующему пути:

+ + + +
/etc/samba/smb.conf
+ + + +

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

+ + + +

Копируем командой:

+ + + +
+
+      sudo cp /etc/samba/smb.conf /etc/samba/res_smb.conf
+
+
+ + + +

Далее оставим в файле конфигурации только те строки, которые используются в работе и не являются комментарием.

+ + + +
+
+      grep -v '^ *#\|^ *$' /etc/samba/smb.conf | sudo tee /etc/samba/smb.conf
+
+
+ + + +

На выходе получаем файл конфигурации без комментариев и неиспользуемых директив. Вот так он выглядит:

+ + + +
+
+      [global]
+   workgroup = WORKGROUP
+   server string = %h server (Samba, Ubuntu)
+   log file = /var/log/samba/log.%m
+   max log size = 1000
+   logging = file
+   panic action = /usr/share/samba/panic-action %d
+   server role = standalone server
+   obey pam restrictions = yes
+   unix password sync = yes
+   passwd program = /usr/bin/passwd %u
+   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
+   pam password change = yes
+   map to guest = bad user
+   usershare allow guests = yes
+[printers]
+   comment = All Printers
+   browseable = no
+   path = /var/spool/samba
+   printable = yes
+   guest ok = no
+   read only = yes
+   create mask = 0700
+[print$]
+   comment = Printer Drivers
+   path = /var/lib/samba/printers
+   browseable = yes
+   read only = yes
+   guest ok = no
+
+
+ + + +

После сохранения конфигурации рекомендуется проверить ее работоспособность с помощью команды:

+ + + +
+
+      testparm
+
+ + + +

Вывод:

+ + + +
+
+      Load smb config files from /etc/samba/smb.conf
+Loaded services file OK.
+Weak crypto is allowed
+Server role: ROLE_STANDALONE
+
+Press enter to see a dump of your service definitions
+
+# Global parameters
+[global]
+        log file = /var/log/samba/log.%m
+        logging = file
+        map to guest = Bad User
+        max log size = 1000
+        obey pam restrictions = Yes
+        pam password change = Yes
+        panic action = /usr/share/samba/panic-action %d
+        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
+        passwd program = /usr/bin/passwd %u
+        server role = standalone server
+        server string = %h server (Samba, Ubuntu)
+        unix password sync = Yes
+        usershare allow guests = Yes
+        idmap config * : backend = tdb
+
+
+[printers]
+        browseable = No
+        comment = All Printers
+        create mask = 0700
+        path = /var/spool/samba
+        printable = Yes
+
+
+[print$]
+        comment = Printer Drivers
+        path = /var/lib/samba/printers
+
+
+
+ + + +

Настройка анонимного доступа к директории

+ + + +

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

+ + + +

Важно: данный способ используется очень редко. Это крайне небезопасно оставлять ресурс в таком состоянии. Обычно это делается для маленькой soho-сети в самых крайних случаях.

+ + + +

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

+ + + +
+
+      sudo mkdir /var/anonimus_share
+
+
+ + + +

И добавим директории полные права для всех:

+ + + +
+
+      sudo chmod 775 /var/anonimus_share
+
+
+ + + +

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

+ + + +

Следующим шагом будут внесены изменения в директивы конфигурационного файла, в данной инструкции для этих целей использован текстовый редактор nano.

+ + + +
+
+      sudo nano /etc/samba/smb.conf
+
+ + + +

Добавим в файл следующий директивы:

+ + + +
+
+      [anonimus_share]                                                                                                
+    comment = Directory anonimus                                                                       
+    path = /var/anonimus_share                                                                            
+    public = yes                                                                                                      
+    writable = yes                                                                                                   
+    read only = no                                                                                                  
+    guest ok = yes                                                                                                  
+    create mask = 0775                                                                                          
+    directory mask = 0775                                                                                      
+    force create mode = 0775                                                                                
+    force directory mode = 0775  
+
+
+ + + +

Рассмотрим более подробно:

+ + + +

[anonimus_share] 一 имя ресурса, отображаемое клиенту при подключении;                                                                                 

+ + + +

comment = Directory anonimus комментарий;                                                                       

+ + + +

path = /var/anonimus_share 一 директория, к которой предоставляем доступ;                                                        

+ + + +

public = yes 一 доступ на чтение всем авторизованным пользователям, также гостевым;                                                                                  

+ + + +

writable = yes 一 право записи в сетевой ресурс;

+ + + +

read only = no 一 право на чтение, при значении директивы no все пользователи получают право на создание директорий и файлов;                                 

+ + + +

guest ok = yes 一 доступ гостевой учетной записи;                      

+ + + +
    +
  • create mask = 0775;                                                                                          
  • + + + +
  • directory mask = 0775;                                                                                      
  • + + + +
  • force create mode = 0775;                                                                               
  • + + + +
  • force directory mode = 0775.
  • +
+ + + +

Эти директивы задают права доступа, назначаемые при создании новой директории или файла.

+ + + +

Конфигурационный файл теперь выглядит следующим образом:

+ + + +
+
+         workgroup = WORKGROUP
+   server string = %h server (Samba, Ubuntu)
+   log file = /var/log/samba/log.%m
+   max log size = 1000
+   logging = file
+   panic action = /usr/share/samba/panic-action %d
+   server role = standalone server
+   obey pam restrictions = yes
+   unix password sync = yes
+   passwd program = /usr/bin/passwd %u
+   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
+   pam password change = yes
+   map to guest = bad user
+   usershare allow guests = yes
+[printers]
+   comment = All Printers
+   browseable = no
+   path = /var/spool/samba
+   printable = yes
+   guest ok = no
+   read only = yes
+   create mask = 0700
+[print$]
+   comment = Printer Drivers
+   path = /var/lib/samba/printers
+   browseable = yes
+   read only = yes
+   guest ok = no
+[anonimus_share]
+    comment = Directory anonimus
+    path = /var/anonimus_share
+    public = yes
+    writable = yes
+    read only = no
+    guest ok = yes
+    create mask = 0775
+    directory mask = 0775
+    force create mode = 0775
+    force directory mode = 0775
+
+
+ + + +

После внесения изменений перезапускаем демона Samba:

+ + + +
+
+      sudo systemctl restart smbd
+
+
+ + + +

Произведем проверку подключения к ресурсу с операционной системы Windows.

+ + + +
+
+
+ + + +
+
+ + + +

Доступ к созданной директории есть. 

+ + + +

Настройка доступа по учетным данным пользователя

+ + + +

Следующим этапом станет настройка доступа к директории по комбинации логин/пароль.

+ + + +

Для начала создадим директорию, которая станет тестовой, и назначим ей полный права:

+ + + +
+
+      sudo mkdir /var/acc_pass | sudo chmod 777 /var/acc_pass
+
+ + + +

Внесем изменения в файл конфигурации:

+ + + +
+
+      sudo nano /etc/samba/smb.conf
+
+
+ + + +

Добавим следующий блок директив:

+ + + +
+
+      [acc_pass]
+    comment =  acc_pass
+    path =  /var/acc_pass
+    public = no
+    writable = yes
+    read only = no
+    guest ok = no
+    create mask = 0775
+    directory mask = 0775
+    force create mode = 0775
+    force directory mode = 0775
+
+ + + +

Большая часть указанных здесь настроек разобраны в предыдущем блоке. 

+ + + +

Остановимся только на новых:

+ + + +

path =  /var/acc_pass 一 путь до директории;

+ + + +

public = no 一 запрет на публичный доступ к папке;

+ + + +

guest ok = no 一 запрет гостевого подключения.

+ + + +

Добавим пользователя Samba:

+ + + +
+
+      sudo smbpasswd -a selectel
+
+
+ + + +

Проверим подключение к директории:

+ + + +
+
+
+ + + +
+
+ + + +

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

+ + + +

После успешной авторизации происходит получение доступа к директории:

+ + + +
+
+
+ + + +
+
+ + + +

Настройка доступа для пользователей и групп

+ + + +

Следующим этапом разберем доступ к директории для определенных пользователей и групп.

+ + + +

Создадим директорию и назначим ей полные права:

+ + + +
+
+      sudo mkdir /var/acc_gr_and_user | sudo chmod 777 /var/acc_gr_and_user
+
+
+
+ + + +

Откроем файл конфигурации и добавим в него следующий блок директив:

+ + + +
+
+      [acc_gr_and_user]
+    comment = acc_gr_and_user
+    path = /var/acc_gr_and_user
+    public = no
+    writable = no
+    read only = yes
+    guest ok = no
+    valid users = vlan48, selectel, @groupe1
+    write list = selectel
+    create mask = 0775
+    directory mask = 0775
+    force create mode = 0775
+    force directory mode = 0775
+    inherit owner = yes
+
+ + + +

Разберем директивы:

+ + + +

[acc_gr_and_user] 一 имя ресурса, отображаемое клиенту при подключении;                                                                                  

+ + + +

comment = acc_gr_and_user 一 комментарий;                                                                       

+ + + +

path = /var/acc_gr_and_user 一 директория, к которой предоставляем доступ;                   

+ + + +

public = no 一 запрет на публичный доступ к папке;                                                                          

+ + + +

writable = no и read only = yes 一 разрешение на запись мы добавим для пользователей, перечисленных в директиве write list, а для остальных оставим с запрет на запись, разрешив только чтение;

+ + + +

guest ok = no 一 доступ гостевой учетной записи;         

+ + + +

valid users = vlan48, selectel, @groupe1 一 пользователи и группы, которые имеют доступ к директории, где vlan48, selectel 一пользователи, а @groupe1 一группа пользователей.

+ + + +

write list = selectel 一 пользователи, которым разрешена запись в директории;

+ + + +
    +
  • create mask = 0775;                                                                                          
  • + + + +
  • directory mask = 0775;                                                                                    
  • + + + +
  • force create mode = 0775;                                                                                
  • + + + +
  • force directory mode = 0775;
  • +
+ + + +

Эти 4 директивы задают права доступа назначаемые при создании новой директории или файла.

+ + + +

inherit owner = yes 一 директива включает наследование владельца во время создания директорий и файлов.

+ + + +

Сохраняем файл, перезапускаем демона Samba:

+ + + +
+
+      sudo systemctl restart smbd
+
+ + + +

Подключение к ресурсу 

+ + + +

Для подключения к созданному ресурсу из операционной системы Windows используется проводник. Быстро открыть его можно, применив комбинацию клавиш Ctrl+E. Вводим необходимый путь в адресную строку проводника.

+ + + +
+
+
+ + + +
+
+ + + +

Путь в системах Windows пишется через обратный слеш, путь к сетевому ресурсу 一 через двойной обратный слеш. Можно также подключать ресурс как диск, если это не противоречит вашим правилам безопасности. В таком случае при включении рабочей станции не требуется каждый раз устанавливать соединение с ресурсом.

+ + + +

Для выполнения этой процедуры в проводнике выберем вкладку Простой доступ, подключить как диск.

+ + + +
+
+
+ + + +
+
+ + + +

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

+ + + +
+
+
+ + + +
+
+ + + +

Теперь ресурс станет отображаться как диск при включении компьютера.

+ + + +

Linux

+ + + +

Подключение из операционных систем Linux-семейства производится с использованием набора утилит cifs. Установим cifs-утилиты на Ubuntu.

+ + + +
+
+      sudo apt install cifs-utils -y
+
+
+ + + +

Вывод установки:

+ + + +
+
+      Reading package lists... Done
+Building dependency tree
+Reading state information... Done
+Suggested packages:
+  keyutils smbclient winbind
+The following NEW packages will be installed:
+  cifs-utils
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Need to get 82.5 kB of archives.
+After this operation, 306 kB of additional disk space will be used.
+Get:1 http://mirror.selectel.ru/ubuntu focal-updates/main amd64 cifs-utils amd64 2:6.9-1ubuntu0.1 [82.5 kB]
+Fetched 82.5 kB in 0s (2439 kB/s)
+Selecting previously unselected package cifs-utils.
+(Reading database ... 45851 files and directories currently installed.)
+Preparing to unpack .../cifs-utils_2%3a6.9-1ubuntu0.1_amd64.deb ...
+Unpacking cifs-utils (2:6.9-1ubuntu0.1) ...
+Setting up cifs-utils (2:6.9-1ubuntu0.1) ...
+update-alternatives: using /usr/lib/x86_64-linux-gnu/cifs-utils/idmapwb.so to provide /etc/cifs-utils/idmap-plugin (idmap-plugin) in auto mode
+Processing triggers for man-db (2.9.1-1) ...
+
+
+ + + +

Монтирование ресурса выглядит так:

+ + + +
+
+      mount.cifs {ресурс} {путь к директории в которую монтируем } {-o опции}
+
+
+ + + +

Как пример рассмотрим подключение к директории anonimus_share, расположенной на ресурсе 10.8.0.1 в директорию mnt:

+ + + +
+
+      mount.cifs //10.8.0.1/anonimus_share  /mnt
+
+ + + +

Автоматическое монтирование директории происходит с использованием файла fstab. Для начала создадим дополнительный файл с учетными данными пользователя для авторизации. Оправданно будет создать этот файл в директории root.

+ + + +
+
+      sudo nano /root/.smbselus
+
+ + + +

Внесем в файл следующие директивы:

+ + + +
+
+      username=selectel
+password=uspass
+
+ + + +

Сохраняем и переходим к конфигурационному файлу fstab.

+ + + +
+
+      sudo nano /etc/fstab
+
+
+ + + +

Добавляем в него следующий блок инструкций:

+ + + +
+
+      //10.8.0.1/acc_gr_and_user /mnt cifs user,rw,credentials=/root/.smbselus 0 0
+
+
+ + + +

Конкретизируем каждый пункт:

+ + + +

//10.8.0.1/acc_gr_and_user 一 директория, которую необходимо смонтировать;

+ + + +

/mnt 一 директория, в которую необходимо смонтировать;

+ + + +

cifs user 一 разрешает монтировать любому пользователю;

+ + + +

rw 一 предоставляет права на чтение и запись;

+ + + +

credentials=/root/.smbselus 一 файл с учетными данными пользователя;

+ + + +

0 используется утилитой dump 0 一 выключен;

+ + + +

0 используется утилитой fsck 0 一 выключен.

+ + + +

В некоторых случаях требуется добавить директиву domain в файл .smbselus.

+ + + +

Для более тонкой и детальной настройки всегда можно обратиться к документации продукта

+ + + +

Настройка сетевой корзины

+ + + +

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

+ + + +

Первым этапом создадим директорию для корзины и назначим ей права:

+ + + +
+
+      sudo mkdir /var/recycle | sudo chmod 777 /var/recycle
+
+ + + +

Внесем блок директив в конфигурационный файл: 

+ + + +
+
+      sudo nano /etc/samba/smb.conf
+
+
+ + + +
+
+      [Recycle]
+    comment = rec_dir
+    path = /var/recycle
+    public = yes
+    browseable = yes
+    writable = yes
+    vfs objects = recycle
+    recycle:repository = .recycle/%U
+    recycle:keeptree = Yes
+    recycle:touch = Yes
+    recycle:versions = Yes
+    recycle:maxsize = 0
+    recycle:exclude = *.tmp, ~$*
+    recycle:exclude_dir = /tmp
+
+
+ + + +

Значения директив:

+ + + +

[Recycle] имя ресурса, отображаемое клиенту при подключении;                                                                                 

+ + + +

comment = rec_dir 一 комментарий;

+ + + +

path = /var/recycle 一 директория, в которой размещена сетевая корзина.

+ + + +

public = yes 一 доступ на чтение всем авторизованным пользователям, также гостевым; 

+ + + +

browseable = yes параметр устанавливает, будет ли общий ресурс отображаться в списке доступных общих ресурсов в сетевом окружении и в списке просмотра;

+ + + +

writable = yes 一 право записи в сетевой ресурс;

+ + + +

vfs objects = recycle 一 использование подсистемы recycle;

+ + + +

recycle:repository = .recycle/%U 一 место хранения удаленных объектов. В этой директиве настроено попадание удаленных файлов в каталог с именем пользователя, который создается автоматически в директории .recycle;

+ + + +

recycle:keeptree = Yes 一 удаление с сохранением дерева каталогов;

+ + + +

recycle:touch = Yes 一 изменение даты при перемещении файла в сетевую корзину;

+ + + +

recycle:versions = Yes 一 добавление номера версии при удалении файлов с одинаковыми именами;

+ + + +

recycle:maxsize = 0 一 параметр отвечает за максимальный размер файла, который может быть перемещен в корзину. При текущем значении возможно переместить файл любого размера;

+ + + +

recycle:exclude = *.tmp, ~$*  一 исключение файлов заданного типа;

+ + + +

recycle:exclude_dir = /tmp 一 исключение директории заданного типа.

+ + + +

Заключение

+ + + +

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

+ +
+ + + +
+ + +
+
+ + + + + + + + +
+ +
+ +
+ + + +
+ +
+ + + + + + diff --git a/дополнительные-материалы/настройка samba/Установка и настройка Samba на Ubuntu_files.zip b/дополнительные-материалы/настройка samba/Установка и настройка Samba на Ubuntu_files.zip new file mode 100644 index 0000000..968af52 Binary files /dev/null and b/дополнительные-материалы/настройка samba/Установка и настройка Samba на Ubuntu_files.zip differ