Как можно ограничить доступ к папке Samba на основе IP-адресов?

Настроен Samba сервер на отдельном компьютере с Ubuntu Linux 18.04.6, и требуется обеспечить доступ ко всем папкам с всех компьютеров, кроме одной. Доступ к этой единственной папке должен быть разрешен только с конкретного компьютера, в то время как остальные должны быть исключены. Я применил параметр <blockquote>allow hosts = 192.168.1.166,192.168.1.217</blockquote>, но при его использовании доступ с указанных IP-адресов оказывается невозможным. Компьютер работает на Windows 10, и при попытке доступа к папке появляется запрос на ввод сетевых учетных данных. Даже при попытке ввести случайные значения доступ все равно заблокирован. Вот конфигурационный файл Samba: <br/> <blockquote>[global]<br/>
<br/>
	server string = Samba<br/>
	security = user<br/>
	aio read size = 1<br/>
	path = /media<br/>
	map to guest = Bad User<br/>
	create mode = 777<br/>
	directory mode = 777<br/>
	os level = 20<br/>
	aio write size = 1<br/>
	public = yes<br/>
	force create mode = 777<br/>
	workgroup = WORKGROUP<br/>
	server multi channel support = yes<br/>
	force directory mode = 777<br/>
	writeable = yes<br/>
    browsable = yes<br/>
    log level = 2<br/>
    log file = /var/log/samba/log.%m<br/>
    max log size = 50<br/>
<br/>
# Change this to the workgroup/NT-domain name your Samba server will part of<br/>
<br/>
# server string is the equivalent of the NT Description field<br/>
<br/>
# Windows Internet Name Serving Support Section:<br/>
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server<br/>
#   wins support = no<br/>
<br/>
# WINS Server - Tells the NMBD components of Samba to be a WINS Client<br/>
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both<br/>
;   wins s
  • 26 января 2025 г. 14:04
Ответы на вопрос 2
Ограничение доступа к папкам Samba на основе IP-адресов может быть выполнено с помощью параметров в конфигурационном файле `smb.conf`. Однако, чтобы это работало корректно, необходимо учитывать несколько важных моментов.

Вот пример, как можно настроить доступ к папке так, чтобы только один компьютер имел доступ к ней, а остальные были исключены.

### Пример конфигурации

В качестве примера допустим, что вы хотите ограничить доступ к папке `[secure]`, разрешив к ней доступ только компьютеру с IP-адресом `192.168.1.166`, а доступ к другим папкам разрешить всем пользователям.

Измените или добавьте в ваш файл конфигурации `/etc/samba/smb.conf` следующие разделы:

```ini
[global]
   ...
   # Общие параметры глобального раздела
   ...
   
[public]
   path = /media/public
   browsable = yes
   writable = yes
   guest ok = yes
   create mask = 0777
   directory mask = 0777

[secure]
   path = /media/secure
   browsable = yes
   writable = yes
   valid users = @mygroup
   hosts allow = 192.168.1.166
   hosts deny = 0.0.0.0/0
   create mask = 0700
   directory mask = 0700
```

### Объяснение параметров:

1. **[public]**:
   - Это общая папка, доступная всем. Она настроена на разрешение доступа для всех (`guest ok = yes`).

2. **[secure]**:
   - `hosts allow = 192.168.1.166`: Только этот IP-адрес может получить доступ к папке.
   - `hosts deny = 0.0.0.0/0`: Запрещает доступ со всех других IP-адресов.
   - `valid users = @mygroup`: Здесь вы можете указать группу пользователей, но в нашем случае, чтобы только IP-адрес решал доступ, этот параметр можно настроить как вам нужно (например, удалить его, если не требуется использовать пользователей).

### Проверка конфигурации и перезапуск Samba

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

```bash
testparm
```

Если ошибок нет, перезапустите Samba для применения изменений:

```bash
sudo systemctl restart smbd
sudo systemctl restart nmbd
```

### Аутентификация

Если вы используете `valid users`, убедитесь, что у вас есть соответствующие пользователи в Samba и добавлены с помощью команды:

```bash
sudo smbpasswd -a <username>
```

### Примечание

Убедитесь, что в вашей сети нет проблем с маршрутизацией или брандмауэром, которые могут блокировать доступ к Samba.

Теперь доступ к папке `[secure]` будет возможен только с `192.168.1.166`, а доступ к папке `[public]` разрешен всем.
Вариант простой как каменный топор: вынести папку на отдельную Самбу (в том числе на виртуалке). 

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