LINUX.ORG.RU

Авторизация Samba: юзер выбирается по IP - как?


0

0

Есть папки:
/mnt/data/Documents
/mnt/data/Documents/Маша
/mnt/data/Documents/Наташа
/mnt/data/Documents/Общая
на них нарезаны права по юзерам и группам Linux.
К папке /mnt/data/Documents дан доступ по SMB (samba v3.2.5) в пределах одной шары [Documents].

Сегодня клиенты подключаются (в основном из окошек) без ввода имени и пароля, т.е. security=share и т.п., юзер используется гостевой.

Встала задача: не пущать Наташу в папку Маши, а Машу в папку Наташи. При этом чтобы все было в пределах одной шары, а имя и пароль не запрашивались.

Хочу сделать авторизацию по IP.
Как сделать чтобы подключение от определенного IP-адреса воспринималось самбой как авторизация от определенного Linux-пользователя?
Полагаю, что придется писать какой-то авторизационный скрипт, где на входе имеем IP, а на выходе - имя юзера Linux. Как этот скрипт задействовать?

p.s. host allow не предлагать, т.к. он действует на всю шару.


passwd program в smb.conf - этой опции указать ваш скрип.
Но не уверен, сможете ли вы передать ей IP в качестве аргумента и, вобще, вызывается ли она с security=share.

А что за host allow? Если подобная опция есть, то можно сделать несколько шар и для приватных указывать её.

markevichus ★★★ ()
Ответ на: комментарий от markevichus

Нужно в пределах одной шары

В том-то и дело, что не хочется плодить шары для каждого пользователя. Это здесь 2 юзера указал, а в реале их побольше.

А насчет passwd program - покопаю, спасибо.

robux ()

security = user и созхранить пароль в винде

guyvernk ()

Может кому пригодится

Решил задачу так:

/etc/samba/smb.conf

        ...
        security = share
        passdb backend = smbpasswd:/etc/samba/smbpasswd
        username map script = /etc/samba/usermap.sh %I
        null passwords = yes
        directory mask = 777
        create mask = 777
        inherit owner = yes
        inherit permissions = yes


        [Documents]
        path = /mnt/data/Documents
        public = yes
        writable = yes
        printable = no

/etc/samba/usermap.sh

#!/bin/sh

case "$1" in
  192.168.0.15)
    USER="masha"
  ;;
  192.168.0.17)
    USER="natasha"
  ;;
  192.168.0.55|192.168.0.77)
    USER="director"
  ;;
  *)
    USER="nobody"
  ;;
esac

echo $USER
robux ()
Ответ на: Может кому пригодится от robux

..ну и еще

Юзеров и пароли добавлял так:

useradd masha
smbpasswd -n -a masha

После чего нарезал линуксовые права на нужные папки для нужных пользователей. Кстати, достаточно дать права только на папку верхнего уровня.

robux ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.