Skip to content


Раздаем права в samba по IP-адресу

Представим ситуацию: есть 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") следующим образом:

  1. Создаем директорию /etc/samba/per-ip-configs
  2. В директории /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
  3. Потом в той же директории /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
  4. В конфигурационном файле smb.conf в самом начале раздела, где описываются общие ресурсы, добавляем строку:
    include = /etc/samba/per-ip-configs/%I.conf

Таким образом, теперь при подключении нового клиента samba будет подгружать ту часть конфига, которая соответствует IP-адресу клиента (он подставляется вместо %I). Если клиент подключится с другого IP-адреса (для которого нет соответствующего файла в /etc/samba/per-ip-configs) и в основном конфиге smb.conf не будет определения для общего ресурса NashaShara, то клиент просто этот ресурс не увидит и доступа к нему не получит.

Posted in *nix, Howto.

Tagged with , .


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. foxiys says

    Спасибо!!! Как раз то что искал!

You must be logged in to post a comment.