LINUX.ORG.RU
решено ФорумAdmin

Samba-файлопомойка с разграничением доступа

 ,


4

1

трындец какой-то. Думал, что сие будет просто, как тупо накидать пользователей для MySQL, а теперь вообще в ауте. Суть: есть бубунтокомп, есть установленная самба3 на нем. Конфиг у нее следующий:

koot@gateway:~$ sudo cat /etc/samba/smb.conf
; Глобальные настройки сервера
[global]
; General server settings
; Имя компьютера, которое будет отображаться в сетевом окружении
netbios name = xxx.crabdance.com
server string = xxx.crabdance.com
; Рабочая группа клиентов
workgroup = 55443-72
announce version = 5.0
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
passdb backend = tdbsam
security = user
null passwords = true
; Файл для альясов имен юзеров
username map = /etc/samba/smbusers
name resolve order = hosts wins bcast
; wins support устанавливается в yes, если ваш nmbd(8) в Самба является WINS сервером. Не устанавливайте этот параметр в yes если у вас нет нескольких подсетей и вы не хотите чтобы ваш nmbd работал как WINS сервер. Никогда не устанавливайте этот параметр в yes более чем на одной машине в пределах одной подсети.
wins support = no
; Поддержка принтеров
; printing = CUPS
; printcap name = CUPS
; Логи
log file = /var/log/samba/log.%m
syslog = 0
syslog only = no
; Настройка привязки к интерфейсам, на каких слушать, если не указано слушает на все интерфейсах
interfaces = lo, eth4, eth4:1
bind interfaces only = true
;
;[print$]
; path = /var/lib/samba/printers
; browseable = yes
; guest ok = yes
; read only = yes
; write list = root
; create mask = 0664
; directory mask = 0775
;
;[printers]
; path = /tmp
; printable = yes
; guest ok = yes
; browseable = no
;
;[DVD-ROM Drive]
;path = /media/cdrom
;browseable = yes
;read only = yes
;guest ok = yes
; Шара жесткого диска
; Имя шары, видно у клиентов
[Отдел МТО]
; Путь к расшариваемому диску
path = /home/shared/omto
; Можно ли просматривать
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755
; Привязка к определенному имени пользователя или группе, имена через пробел
; force user = user1 user2
force group = omto
; Еще один жесткий диск, по аналогии с тем что выше
[ОПО]
path = /home/shared/opo
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755
force group = opo
[Делопроизводство]
path = /home/shared/dp
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755
force group = dp
[ЭТО]
path = /home/shared/eto
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755
force group = eto
[Общее]
path = /home/shared/shared
browseable = yes
read only = no
guest ok = yes
create mask = 0644
directory mask = 0755
то есть я хочу на каждый из четырех отделов по папке и одну общую для всех. но, блин, куда эти вписанные мной группы добавлять? Добавил пользователя на другой машине в эту локальную группу - нет доступа. Чо делать? Идей вообще никаких. И я, похоже, не тех howto начитался.

★★★

публичный каталог доступный на запись, запрещаем пользователям сохранять на сетевом диске файлы с определенными расширениями расширениями:
[global]
unix charset = UTF-8
dos charset = cp866
workgroup = CORPX
security = user
hosts allow = 192.168.1.
map to guest = Bad User
[share]
comment = share directory
veto files = /*.avi/*.mp3/*.mkv/*.wav/*.wma/*.fly/*.mpg/*.mpeg/*.vob/*.3gp/*.exe/*.reg/
delete veto files = yes
path = /var/samba/share
guest ok = yes
read only = no
force user = nobody

публичный каталог доступный на чтение
[read]
path = /var/samba/read
guest ok = yes

доступ на основе учетных записей и групп (доступ будут иметь члены группы wheel и пользователи vxz и adm
[secret]
path = /var/samba/secret
valid users = vxz,adm
valid users = @wheel
force user = nobody
read only = no

скрытый приватный каталог требующий авторизации
[admin]
path = /var/samba/admin
valid users = adm,admin
force user = nobody
read only = No
browseable = No

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

доступ на основе учетных записей и групп (доступ будут иметь члены группы wheel и пользователи vxz и adm

[secret]
 path = /var/samba/secret
 valid users = vxz,adm 
 valid users = @wheel
 force user = nobody
 read only = no

можно подробнее? Чья группа, чьи пользователи? Сервера или компьютера, пытающегося подключиться?

kostett ★★★ ()

Юзеров заводи на серваке, сначала заводи системного юзера, а потом такого же юзера в самбе

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

не понимаю принцип, как это работает.
Что я хочу:
В фирме есть три отдела. В первом работает Марь Ванна и Августа Васильевна, во втором Катя и Люся, а в третьем Вадим Вадимыч со своей секретаршей. Марь Ванна и ее ближайшая коллега Августа Васильевна должны мочь зайти только на шару первого отдела и общую, во второй и третий они доступа иметь не должны. Соответственно должно быть и для работников других отделов.

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

в данном случае каталог доступен на запись и чтение пользователям группы wheel, а также юзерам vxz,adm, которые могут не входить в группу wheel

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

О_о
и как будет происходить процесс подключения Марь Иванны?
То есть, мне придется создавать для каждого, кто может заходить отдельного юзера? А группой никак?

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

Типа так:

[share]
comment = share directory
path = /var/samba/share
guest ok = yes
read only = no
force user = nobody

[otdel1]
path = /var/samba/otdel1
valid users = @otdel1
force user = nobody
read only = no

[otdel2] path = /var/samba/otdel2
valid users = @otdel2
force user = nobody
read only = no

[otdel3]
path = /var/samba/otdel3
valid users = @otdel3
force user = nobody
read only = no

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

Ээм.. Я сейчас сегфолтнусь.
Начну издалека. Я ставлю венду на комп, создаю к имеющемуся администратору юзерскую учетку. С этой юзерской учеткой ломлюсь в «Показать все машины рабочей сети», вижу там самба-сервер, тыкаюсь два раза ЛКМ и получаю ответ, что не имею доступа.
Мне говорят, что я должен что-то добавить на сервере.
Блин, как это взаимосвязано-то?

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

авторизация будет происходить по сети, при обращении к каталогам самбы, сервер будет от клиента получать имя юзера и соотвественно сможет определить его группы, если директория запаролена нужно еще и пароль ввести

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

то есть мне на сервере нужно добавить юзера с тем же самым именем, что и на машине, и на сервере же добавить его в группу отдела?

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

у вас не настроена самба и не выставлены права на директории

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

и ЕЩЕ РАЗ ПИШУ - пользователя добавляют два раз, один раз в систему сервера LINUX (на котором ваше сетевое хранилище)(не в винду или еще там куда!) и второй раз добавляете в самбу, просто у самбы своя база данных юзеров отличная от системной.

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

*звук спускаемого пара*

сервер будет от клиента получать имя юзера

юзер сам должен указывать свое имя при попытке подключения или берется имя его пользователя из его компа?

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

вот пример:
adduser vxz
smbpasswd -a vxz
pdbedit -w -L
adduser pro
smbpasswd -a pro
pdbedit -w -L

и так далее ...
а затем раскидайте юзеров по системным группам

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

если директория потребует авторизации, то выскочит окошко с просьбой ввести логин и пароль, который винда будет хранить до перезагрузки

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

Если вам надо без ввода паролей, то вам домен нужен.

vxzvxz ★★★ ()

Какой нафиг домен...

делаем группы на серваке:

groupadd -g 20001 omto
groupadd -g 20002 opo
groupadd -g 20003 eto
groupadd -g 20004 share

Если хотите чтобы эти группы в винде выглядели красиво, можно сделать для каждой группы что-то типа:

net groupmap add ntgroup="Отдел ОМТО"  unixgroup=omto type=d

заводим системных пользователей таким образом:

useradd -d /dev/null -s /bin/false -g omto -G share -c "Марь Ванна" user1
useradd -d /dev/null -s /bin/false -g omto -G share -c "Августа Васильевна" user2
useradd -d /dev/null -s /bin/false -g opo -G share -c "Катя" user3
useradd -d /dev/null -s /bin/false -g opo -G share -c "Люся" user4
useradd -d /dev/null -s /bin/false -g eto -G share -c "Вадим Вадимыч" user5
(где user[1-5] - логины под которым они заходят под виндой)

добавляем их в базу паролей самбы, пароль указываем как в винде, разрешаем подключаться к самбе (для каждого):

smbpasswd -a user1
smbpasswd -e user1

Создаёшь папки, прописываешь на них права. В принципе всё. Если с правами надо что-то посложней, нужно смотреть в сторону acl (там на самом деле не сложно).

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

И это, force group убери, оно тебе не надо.

[omto]
 path = /var/samba/omto
 valid users = @omto
 read only = no

...
[share]
 path = /var/samba/share
 valid users = @share
 read only = no
Если нужно чтобы было без паролей, то к этому добавить
force user = nobody
как советовали выше.

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

force user - это параметр, который задает имя пользователя от имени которого будут выполняться все операции с файлами, после того как клиент пройдет процедуру аутентификации и укажет действительный пароль. Никакого отношения к запросу паролей он не имеет.

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

Мой вам совет, используйте опцию force user. А про acl вообще забудьте, это поделие от лукавого. И не плодите кучу ненужных групп и юзеров в виндах оно там не нужно.

Общую шару настройте так:

[share]
comment = share directory
path = /var/samba/share
guest ok = yes
read only = no
force user = nobody

этого вполне достаточно чтобы все могли ходить в шару без пароля, при security = user

А после того как создадите каталог смените владельца:
chown -R nobody /var/samba/share

Если хотите чтобы юзеры ходили по своим папкам без запросов паролей, то можно на самбе настроить контроллер домена.

vxzvxz ★★★ ()
1 ноября 2013 г.
Ответ на: комментарий от vxzvxz

Рискую повториться, но прошу помощи. не знаю откуда ростет проблемма.

проблема в следующем: Клиенты могут заходить в свою общую для нескольких человек папку и совместно работать с файлами. Те файлы, что перенесены с Виндовс открываются, редактируются и удаляются хорошо, НО файлы создаются с выкидыванием сообщения о невозможности создать файл. Новые папки легко создаются, но уже внутри папки нельзя создать ничего.


Вот вывод с сервера где расшарена папка Бухгалтерия:


ls -al /home/бухгалтерия/Иванова/LockalDoc

итого 804 drwxrwxrwx 10 nobody total 4096 Ноя 1 14:03 .
drwxrwxrwx 33 nobody total 4096 Ноя 1 13:26 ..
-rwxrwxrwx 1 nobody total 19600 Сен 10 15:45 ATCC Order Form.docx
-rwxrwxrwx 1 nobody root 18 Ноя 1 13:27 .directory.lock
-rwxrwxrwx 1 nobody total 748116 Сен 6 12:49 End user 1.pdf
drwxrwxrwx 2 nobody total 4096 Окт 31 14:58 Order form
drwxrwxrwx 2 nobody total 4096 Окт 31 14:58 Conditions
drwxrwxrwx 2 nobody total 4096 Окт 31 14:58 Квотация
drwxrwxrwx 2 nobody total 4096 Ноя 1 10:30 Контракт
drwxrwxrwx 2 nobody root 4096 Ноя 1 13:25 Накладная



Вот все папки созданные перенесением имеют атрибуты: drwxrwxrwx 2 nobody total 4096 Ноя
а созданные пользователем, в лучшем случае: drwxrwxrwx 2 nobody root 4096 Ноя
Но я много экспериментировал и теперь вообще как то не хотят создаваться... ппц просто!!!
-------------------------------------------------------------
у ubuntu пользователей шара подключается через fstab:

mount //fserv3/бухгалтерия /home/lockal_user/folders/бухгалтерия cifs username=u120,password=password120,iocharset=utf8,dir_mode=0777,file_mode=0777
Сервер Debian с 20 ползателей и несколько групп.

cat /etc/samba/smb.conf


# Samba config file created using SWAT
# from UNKNOWN (192.168.1.111)
# Date: 2013/10/30 18:14:22

[global]
        server string = %h server
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        preferred master = Yes
        dns proxy = No
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb


[общая]
        comment = Общая папка сотрудников
        path = /home/общая
        valid users = +total
#       valid users = u120, u119, u101, u124, u122, u107, u109, u117, u128, u156, u135, u134, u123, u104, u139, u140, u149, u111, u108, u114
        read only = No
        browseable = No

[Бухгалтерия]
        comment = бухгалтерия
        path = /home/бухгалтерия
#       force user = u120, u119, u125, u111, u124
        directory mask = 0777
        security mask = 0777
        valid user = u119, u120, u125, u124, u111
#       valid users = nobody
#       admin users = total
#       read only = No
#       force user = nobody
#       write list = +total
#       force group = +total
        browseable = No

# Есть еще папки просто весь список не привожу

Вот вывод: net groupmap list

Группа папки Рабочая (S-1-5-21-3817110907-2756001974-1942512287-1000) -> work
Группа папки Бухгалтерия (S-1-5-21-3817110907-2756001974-1942512287-1001) -> total

пользователей создавал:
useradd -d /dev/null -s /bin/false -g total -G managers -c «ИВАНОВ» u111
useradd -d /dev/null -s /bin/false -g total -G managers -c «ПЕТРОВ» u124
useradd -d /dev/null -s /bin/false -g total -G managers -c «СИДОРОВ» u122
useradd -d /dev/null -s /bin/false -g total -G managers -c «ПАВЛОВ» u107
И Т.Д.

потом smbpasswd -a user

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