Samba умеет определять, какие настройки применять для различных подключенных к ней клиентов. Иногда это очень выручает. Для этого используются, во-первых, внутренние переменные (%m, %I и так далее), во-вторых, опции config file и include.
Если вкратце, include добавляет параметры (из файла, на который указывает) к описанным в smb.conf, при этом при совпадении переопределяются опции, указанные в smb.conf ранее строки include = /path/to/file; параметры, указанные после, остаются неизменными. Параметр config file, напротив, заменяет собой smb.conf, переопределяя при совпадении все, что ниже него по тексту конфига. Подробнее о параметрах и внутренних переменных (с примерами), можно поглядеть в официальной документации проекта Samba.
Пример из жизни. Есть файловый сервер, на котором две шары: public и private, и три клиента: pc1, pc2, pc3, каждый из которых должен иметь доступ к некоторым ресурсам: pc1 - к public, pc2 - к private, pc3 - к public и private. Чтобы это реализовать, потребуются вышеописанные опции. Итак, содержимое конфигов:
smb.conf:
smb.conf-pc2:##for pc2 config file = /etc/samba/smb.conf-%m workgroup = WORK server string = %h server netbios name = server dns proxy = no log file = /var/log/samba/log.full log level = 1 max log size = 10000 syslog = 0 panic action = /usr/share/samba/panic-action %d security = share encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes invalid users = root [public] path = /public comment = Public Resource guest ok = yes browseable = yes writable = yes force user = nobody force create mode = 0666 force directory mode = 0777 ##for pc3 include = /etc/samba/smb-share.conf-%m
smb-share.conf-pc3:log file = /var/log/samba/log.privatesyslog = 0[private] path = /private comment = Private Resource guest ok = yes browseable = yes writable = yes force user = nobody force create mode = 0666 force directory mode = 0777
[private] path = /private comment = Private Resource guest ok = yes browseable = no writable = yes force user = nobody force create mode = 0666 force directory mode = 0777
Такая конфигурация предоставляет по умолчанию всем пользователям одну шару public. Фишка рассматриваемых параметров в том, что они срабатывают только при нахождении файла, указанного их аргументом. Отсутствие файла не является ошибкой конфигурирования - информации в лог не пишется, сам параметр игнорируется.
Таким образом, только когда к файловому серверу подключаются клиенты с NetBIOS-именами pc2 и pc3 (или с заданными IP-адресами, если используется переменная %I), срабатывают, соответственно, config file и include. В первом случае клиент pc2 видит одну шару private (плюс его действия начинают записываться в отдельный лог-файл log.private с увеличенным loglevel), во втором - клиент pc3 видит две шары - private и public и для него используются настройки из основного smb.conf.
Таким образом, только когда к файловому серверу подключаются клиенты с NetBIOS-именами pc2 и pc3 (или с заданными IP-адресами, если используется переменная %I), срабатывают, соответственно, config file и include. В первом случае клиент pc2 видит одну шару private (плюс его действия начинают записываться в отдельный лог-файл log.private с увеличенным loglevel), во втором - клиент pc3 видит две шары - private и public и для него используются настройки из основного smb.conf.