Назад | Перейти на главную страницу

Настройка действительно доступного для записи каталога для Samba

У меня есть каталог на сервере Linux, где мой пользователь владеет всеми файлами, и только определенный каталог доступен для записи всем. Все остальные каталоги доступны только для чтения. Идея состоит в том, что любой человек должен иметь возможность делать все, что угодно, внутри каталога, доступного для записи всем, но есть одна проблема: я не могу впоследствии изменять файлы, созданные гостем, с моим собственным пользователем UNIX.

Я просто не могу понять, какие разрешения UNIX и / или настройки samba позволили бы такое же поведение, как у меня с аналогичным образом настроенным общим ресурсом Windows. На машине с Windows я могу установить доступный для записи каталог на общем ресурсе, чтобы иметь права на запись для «Все», и каждый может делать все, что захочет, внутри этого каталога, локально или путем доступа к общему ресурсу в качестве гостя. Как мне получить такую ​​же функциональность на сервере Linux? В настоящее время файлы, написанные гостями, могут быть изменены только пользователями UNIX none и root.

Вот мой smb.conf:

[global]
unix charset = iso8859-15
interfaces = 192.168.0.1
bind interfaces only = yes
socket address = 192.168.0.1
name resolve order = host
read only = no
max open files = 32768
csc policy = disable
load printers = no
syslog = 0
map to guest = Bad user # This is horrible :)

[homes]
browseable = no
create mask = 0600
security mask = 0600
directory mask = 0700
directory security mask = 0700

[problem_share]
path = /storage
public = yes
create mask = 0644
security mask = 0644
directory mask = 0755
directory security mask = 0755
hide dot files = no

Я пробовал использовать ACL по умолчанию, но это не помогло. Они были очень полезны во многих других ситуациях, но у samba так много настроек разрешений, которые, кажется, каким-то образом мешают.

grs прав насчет файлов.

[проблема_поделиться]
путь = / хранилище
public = да
создать маску = 0666 # (все: чтение + запись)
маска безопасности = 0666 # (все: чтение + запись)
маска каталога = 0777 # (все: список + изменение + перемещение)
маска безопасности каталога = 0777 # (все: список + изменение + переход)
скрыть точечные файлы = нет

Вы можете улучшить свое понимание Традиционные разрешения Unix.

Вам нужно исправить [problem_share] create mask = 0666. Больше информации: Вот.

Я понимаю, что мой первоначальный вопрос был задан очень плохо, и я заслужил ответы новичка. Но вот как я наконец решил эту проблему:

Я сделал все каталоги в / storage принадлежащими моему собственному пользователю UNIX, с разрешениями только на чтение для других. Затем я смонтировал / storage / upload поверх себя, используя опцию «зеркало» FUSE bindfs. Точная командная строка выглядит следующим образом: «bindfs --mirror = @ staff, @ users, nobody --create-for-user = myuser / storage / upload / storage / upload». Теперь пользователь none, а пользователи в группах и сотрудники видят файлы в / storage / upload как свои собственные и могут изменять их по своему усмотрению. Но на самом деле все файлы принадлежат моему собственному пользователю UNIX, и если я перемещаю файл за пределы этого каталога, ни один другой пользователь больше не может его изменять, он становится для них доступным только для чтения. Это очень чистое решение, IMO, и оно вообще не привязано к самбе.