> For the complete documentation index, see [llms.txt](https://utm-1.gitbook.io/utm-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://utm-1.gitbook.io/utm-docs/dokumentaciya/utm-it/programmnoe-obespechenie/linux-servera/sistemnoe-po/samba.md).

# samba

## Ссылки

Установка и настройка файлового сервера Samba на Ubuntu или Debian: [www.dmosk.ru](https://www.dmosk.ru/instruktions.php?object=samba-ubuntu\&ysclid=mhpy8axgua125666423)

Настройка samba в Ubuntu: [losst.pro10](https://losst.pro/nastrojka-samba-v-ubuntu-15-10)

Установка и настройка Samba на Ubuntu 20.04: [selectel.ru](https://selectel.ru/blog/tutorials/how-to-install-and-configure-samba-on-ubuntu-20-04/?ysclid=mhpzja7cxr5295913)

Исправляем ошибку подключения Windows к общим ресурсам на сервере Samba Linux: [interface31.ru](https://interface31.ru/tech_it/2023/05/ispravlyaem-oshibku-podklyucheniya-windows-k-obshhim-resursam-na-servere-samba-linux.html)

## Установка и настройка

### Установка samba

Установка:

```bash
# Обновление пакетов
sudo apt update

# Настройка даты и времени
#sudo apt install chrony -y
#sudo systemctl enable chrony
#sudo systemctl start chrony

# Установка samba 
sudo apt install samba -y

# Запуск
sudo systemctl enable smbd
sudo systemctl start smbd

# Проверка
systemctl status smbd

sudo ufw allow Samba

# Сделать резервную копию файла настроек
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
```

### Настройка samba

Внести изменения в файл /etc/samba/smb.conf

```bash
sudo nano /etc/samba/smb.conf
```

В секции `[global]` указать:

```
map to guest = never
```

Перезапустить samba

```bash
sudo systemctl restart smbd
```

<details>

<summary>Общая настройка samba (ДЕЛАТЬ НЕ НУЖНО!)</summary>

{% hint style="danger" %}
Пока под вопросом
{% endhint %}

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

```
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
netbios name = Ubuntu Share
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
passdb backend = tdbsam
unix password sync = yes
passwd program = /usr/bin/passwd %u
pam password change = yes
map to guest = bad user
usershare allow guests = yes
```

Описание параметров:

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

</details>

### Группа доступа к папкам samba

Создать :

```bash
# Группа доступа
sudo addgroup utm-smb
# Добавить пользователей в группу
sudo usermod -a -G utm-smb maxim
sudo usermod -a -G utm-smb andrew
# Пользователи в samba
sudo smbpasswd -a maxim
sudo smbpasswd -a andrew
```

### Расшаривание папки

Подготовка папки:

```bash
# Создать папку
sudo mkdir -p /srv/samba/shared
# Права на доступ к папке
sudo chmod -R 0775 /srv/samba/shared
# Владелец папки
sudo chown -R root:utm-smb /srv/samba/shared
# Добавить линк в домашней папке к папке /srv/samba/shared
ln -s /srv/samba/shared $HOME/shared
```

Настройка папки:

```bash
sudo nano /etc/samba/smb.conf
```

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

```
[shared]
   comment = Папка для обмена файлами
   path = /srv/samba/shared
   public = no
   browsable = yes
   writable = yes
   guest ok = no
   read only = no
   create mask = 0777
   directory mask = 0777
   force create mode = 0777
   force directory mode = 0777
   valid users = maxim, andrew
   
;    hosts allow = ip адреса, с которых можно получить доступ к этому серверу
;   valid users =  список пользователей которые могут авторизоваться
```

Перезапустить сервис:

```bash
#sudo systemctl restart samba

sudo systemctl restart smbd
```

## Доступ к расшаренной папке из Linux

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

Информация [тут](https://selectel.ru/blog/tutorials/how-to-install-and-configure-samba-on-ubuntu-20-04/?ysclid=mhpzja7cxr5295913)
