Представим ситуацию: есть samba-пользователь vasya, который ходит на samba-сервер с компьютеров с IP-адресами 172.16.0.7 и 172.16.0.13, и нужно сделать так, чтобы при подключении с 172.16.0.7 у него был доступ на запись в общий ресурс NashaShara, а при подключении с 172.16.0.13 – доступ только на чтение. Решается эта задача с помощью макро-подстановок (man 5 smb.conf, раздел «VARIABLE SUBSTITUTIONS») следующим образом:
- Создаем директорию /etc/samba/per-ip-configs
- В директории /etc/samba/per-ip-configs создаем файл с именем 172.16.0.7.conf:
-
[NashaShara]
-
comment = Read-Write access
-
path = /var/spool/samba/nashashara
-
valid users = vasya
-
write list = vasya
-
create mask = 644
-
directory mask = 755
-
printable = no
-
- Потом в той же директории /etc/samba/per-ip-configs создаем файл уже с именем 172.16.0.13.conf:
-
[NashaShara]
-
comment = Read-only access
-
path = /var/spool/samba/nashashara
-
valid users = vasya
-
create mask = 644
-
directory mask = 755
-
printable = no
-
- В конфигурационном файле smb.conf в самом начале раздела, где описываются общие ресурсы, добавляем строку:
-
include = /etc/samba/per-ip-configs/%I.conf
-
Таким образом, теперь при подключении нового клиента samba будет подгружать ту часть конфига, которая соответствует IP-адресу клиента (он подставляется вместо %I). Если клиент подключится с другого IP-адреса (для которого нет соответствующего файла в /etc/samba/per-ip-configs) и в основном конфиге smb.conf не будет определения для общего ресурса NashaShara, то клиент просто этот ресурс не увидит и доступа к нему не получит.
Комментариев: 0
Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.