У меня есть каталог на сервере 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, и оно вообще не привязано к самбе.