Представим ситуацию: есть 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, то клиент просто этот ресурс не увидит и доступа к нему не получит.
Спасибо!!! Как раз то что искал!