Установка и настройка 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 и начнем настройку.
+ + + + + + + +Создание пользователя
+ + + +Создадим простого пользователя для дальнейшего тестирования подключения к настроенным директориям.
+ + + +
+
+ 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. В данном мануале также указаны ресурсы, на которых можно более детально увидеть значение необходимых директив.
+ +