В статье мы расскажем, что такое Самба и как его установить на Ubuntu.
Что такое Samba
Samba — это пакет программ, который используется для работы с популярными ОС: Windows, Linux, а также с другими UNIX-подобными системами. Это ПО будет полезно, если вы хотите создать файловый сервер с доступом из нескольких операционных систем: например, можно сделать общую папку для обмена файлами между реальным компьютером и виртуальным сервером. Samba включает в себя клиентскую (smbclient) и серверную (smbserver) части, а также использует для работы протокол SMB.
Простыми словами, при помощи Samba можно создать хранилище файлов с общим доступом и гибкими настройками прав для пользователей.
Ниже мы опишем полную процедуру установки и настройки Samba на ОС Ubuntu. Она включает в себя три обязательных этапа:
- 1. Установка Samba.
- 2. Настройка Samba.
- 3. Монтирование общей директории как образа диска.
Установка Samba на сервер
- 1 Подключитесь к серверу по SSH.
-
2
Обновите пакеты. Для этого поочередно выполните команды:
sudo apt update sudo apt upgrade
-
3
Установите Samba:
sudo apt install samba -y
-
4
Добавьте Самба в автозагрузку:
sudo systemctl enable smbd
-
5
Запустите службу:
sudo systemctl start smbd
-
6
Проверьте статус службы Samba:
sudo systemctl status smbd
После этого на экране появится вывод:
● smbd.service - Samba SMB Daemon Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-01-01 00:00:00 UTC; 15s ago Docs: man:smbd(8) man:samba(7) man:smb.conf(5) Main PID: 12345 (smbd) Status: "smbd: ready to serve connections..." Tasks: 4 (limit: 1105) Memory: 7.2M CGroup: /system.slice/smbd.service ├─12345 /usr/sbin/smbd --foreground --no-process-group ├─12346 /usr/sbin/smbd --foreground --no-process-group ├─12347 /usr/sbin/smbd --foreground --no-process-group └─12348 /usr/sbin/smbd --foreground --no-process-group Jan 01 00:00:00 apachi systemd[1]: Starting Samba SMB Daemon... Jan 01 00:00:10 apachi systemd[1]: Started Samba SMB Daemon. Jan 01 00:00:20 apachi systemd[1]: Reloading Samba SMB Daemon. Jan 01 00:00:30 apachi systemd[1]: Reloaded Samba SMB Daemon.
-
7
Добавьте разрешающее правило для брандмауэра:
sudo ufw allow samba
Готово, теперь переходите к настройке Samba.
Настройка Samba
Подготовка конфигурационного файла
- 1 Подключитесь к серверу по SSH.
-
2
Создайте копию конфигурационного файла — она пригодится, если потребуется откат до стандартных настроек:
sudo cp /etc/samba/smb.conf /etc/samba/res_smb.conf
-
3
Очистите конфиг от комментариев и строк, не используемых в работе:
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
-
4
Проверьте корректность заполнения файла с помощью команды:
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
Готово, вы настроили конфигурационный файл.
Настройка административного доступа
- 1 Подключитесь к серверу по SSH.
-
2
Создайте директорию, доступ к которой вам нужно настроить:
sudo mkdir /var/directory_name
Вместо directory_name укажите название папки.
-
3
Разрешите полный доступ:
sudo chmod 777 /var/directory_name
Вместо directory_name укажите название папки.
-
4
Откройте конфигурационный файл:
sudo nano /etc/samba/smb.conf
-
5
Добавьте директивы:
[directory_name] comment = directory_name path = /var/directory_name public = no writable = yes read only = no guest ok = no create mask = 0775 directory mask = 0775 force create mode = 0775 force directory mode = 0775
Где:
- [directory_name] — название ресурса, который увидит пользователь при подключении;
- comment = directory_name — комментарий;
- path = /var/directory_name — путь к директории, к которой вы предоставляете доступ;
- public = no — запрет публичного доступа;
- writable = yes — право записи в сетевой ресурс;
- read only = no — право на создание файлов и папок для всех пользователей;
- guest ok = no — запрет гостевого подключения;
- create mask = 0775, directory mask = 0775, force create mode = 0775 и force directory mode = 0775 — права доступа, которые нужно назначить созданным файлам и директориям.
После этого сохраните изменения с помощью сочетания клавиш Ctrl + O и закройте файл комбинацией Ctrl + X.
-
6
Создайте пользователя Samba:
sudo smbpasswd -a username
Вместо username укажите имя пользователя. После этого создайте пароль.
Готово, вы настроили доступ по логину и паролю.
Настройка доступа для пользователей и групп
- 1 Подключитесь к серверу по SSH.
-
2
Создайте директорию, доступ к которой вам нужно настроить:
sudo mkdir /var/group_directory
Вместо group_directory укажите название папки.
-
3
Назначьте полный доступ к папке:
sudo chmod 777 /var/group_directory
Вместо group_directory укажите название папки.
-
4
Откройте конфигурационный файл:
sudo nano /etc/samba/smb.conf
-
5
Добавьте директивы:
[group_directory] comment = group_directory path = /var/group_directory public = no writable = no read only = yes guest ok = no valid users = username1, username2, @group write list = username create mask = 0775 directory mask = 0775 force create mode = 0775 force directory mode = 0775 inherit owner = yes
Где:
- [group_directory] — название, которое увидит пользователь при подключении;
- comment = group_directory — комментарий;
- path = /var/group_directory — путь к директории, к которой вы предоставляете доступ;
- public = no — запрет публичного доступа;
- writable = no — запрет на запись в сетевой ресурс;
- read only = yes — запрет на создание файлов и папок для всех пользователей;
- guest ok = no — запрет гостевого подключения;
- valid users = username1, username2, @group — список пользователей и групп, которым разрешен доступ. Название группы указано со знаком @ в начале;
- create mask = 0775, directory mask = 0775, force create mode = 0775 и force directory mode = 0775 — права доступа, которые нужно назначить созданным файлам и директориям;
- inherit owner = yes — включение наследования владельца папок и файлов.
После этого сохраните изменения с помощью сочетания клавиш Ctrl + O и закройте файл комбинацией Ctrl + X.
-
6
Перезапустите Samba:
sudo systemctl restart smbd
Готово, вы настроили доступ для пользователей и групп.
Монтирование директории
- 1 Подключитесь к серверу по SSH.
-
2
Обновите пакеты. Для этого поочередно выполните команды:
sudo apt update sudo apt upgrade
-
3
Установите набор утилит:
sudo apt install cifs-utils -y
-
4
Смонтируйте директорию:
mount.cifs //var/directory_name /test
Где:
- /var/directory_name — путь к директории, к которой вы подключаетесь;
- /test — директория, в которую нужно добавить смонтированный образ.
-
5
Создайте файл с учетными данными пользователей:
sudo nano /root/.smbselus
-
6
Добавьте строки:
username=user_name password=PassWord
Где:
- user_name — логин пользователя,
- PassWord — пароль пользователя.
После этого сохраните изменения с помощью сочетания клавиш Ctrl + O и закройте файл комбинацией Ctrl + X.
-
7
Откройте конфигурационный файл:
sudo nano /etc/fstab
-
8
Добавьте строку:
//var/group_directory /test cifs user,rw,credentials=/root/.smbselus 0 0
Где:
- /var/group_directory — путь к директории, которую нужно смонтировать;
- /test — директория, в которую нужно смонтировать образ;
- cifs user — открытый доступ к монтированию для любого пользователя;
- rw — права на чтение и запись;
- credentials=/root/.smbselus — файл с данными пользователя.
После этого сохраните изменения с помощью сочетания клавиш Ctrl + O и закройте файл комбинацией Ctrl + X.
Готово, вы смонтировали директорию с общим доступом.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊