Samba - Створіть підкаталогу з власними дозволами


9

Я маю частку Samba, яка містить багато подібних папок:

share
  - folderA
  - folderB
  - folderC
  - folderD

Приблизно 20 користувачів отримують доступ до цих акцій. Кожен користувач може мати індивідуальний доступ до деяких каталогів, наприклад, Бен може отримати доступ до папкиA та folderC, але не до папкиB та папкиD. Дженні може отримати доступ до папкиB і folderC тощо.

Я не хочу, щоб користувачі змонтували кожну необхідну їм папку. Я хочу, щоб вони змонтували папку "share", яка містить усі вкладені папки. Потім доступ обмежується встановленням дозволів linux.

Я створив групу для кожного підкаталогу і додав користувачів до цих груп. Контроль доступу прекрасно працює для існуючих файлів. Але щоразу, коли користувач створює файл у підкаталозі, він відмовляється кожному іншому користувачеві, що має дозвіл на доступ для читання / запису в цьому каталозі. Щоб вирішити це, я пограв з маскуванням самби, але не можу змусити його працювати.

Мій конфлікт Samba виглядає так:

guest ok = no

[global]
workgroup = WORKGROUP
security  = user
encrypt passwords = yes

[Share]
path        = /var/samba
valid users = @everybody
read only   = no
writeable   = yes

[folderA]
path        = /var/samba/folderA
valid users = @users_folderA
read only   = no
writeable   = yes

create mask          = 770
directory mask       = 770
force directory mode = 770

force group = users_folderA

[folderB]
path        = /var/samba/folderB
valid users = @users_folderB
read only   = no
writeable   = yes

create mask          = 770
directory mask       = 770
force directory mode = 770

force group = users_folderB

[folderC]
path        = /var/samba/folderC
valid users = @users_folderC
read only   = no
writeable   = yes

create mask          = 770
directory mask       = 770
force directory mode = 770

force group = users_folderC

[folderD]
path        = /var/samba/folderD
valid users = @users_folderD
read only   = no
writeable   = yes

create mask          = 770
directory mask       = 770
force directory mode = 770

force group = users_folderD

Отже, очевидно, що кожен користувач в групі всіх, тому вони можуть змонтувати спільну частину з підкаталогами. Доступ до кожного підкаталогу працює чудово. Але щоразу, коли Бен створює файл у папціC, він отримує права доступу до файлу -rwxr - r--, але це повинен бути -rwxrwx ---

Я думаю, що спільні папки для окремих папок взагалі не працюють, тому що я намагався встановити пишучий = ні і читати лише = так, щоб перевірити його. Перезавантажили smbd та nmbd та переремонтували частку мережі (у Windows 10). Користувачі мали змогу створювати файли та змінювати власні.

Це працює на малиновому пі з малиною. Жорсткий диск з файлами форматується як ext4 і монтується через fstab.


Щоб примусити бажані права доступу до файлів, використовуйте force create mode = 770оператор у folderCрозділі конфігурації.
Олег Болден

Дякую, це насправді не вирішило проблему, але я помітив, що я мав пробіли в шляхах свого реального smb.conf: [папкаA] шлях = / var / samba / деяка папка з пробілами. Я вирішив це, додавши шлях до "(" / var / samba / деяка папка з пробілами "). Налаштування в абзаці [folderA] використовуються лише тоді, коли користувач монтує [folderA] безпосередньо, але налаштування не використовується, коли користувач монтує [поділитися] та переходить у папку А. Параметри [поділитися] використовуються для папки А. Як я можу обійти [папка] налаштування для папкиА без монтажу папкиА безпосередньо, але доступу до неї з [поділитися]?
soner

Відповіді:


5

Спробуйте цю конфігурацію (для розділів спільного доступу):

[Share]
path        = /var/samba
valid users = @everybody
force group = +everybody
writeable   = yes
create mask = 0660
force create mode = 0110
directory mask = 0770

[folderA]
path        = /var/samba/folderA
valid users = @users_folderA
force group = +users_folderA
browseable = no

[folderB]
path        = /var/samba/folderB
valid users = @users_folderB
force group = +users_folderB
browseable = no

[folderC]
path        = /var/samba/folderC
valid users = @users_folderC
force group = +users_folderC
browseable = no

[folderD]
path        = /var/samba/folderD
valid users = @users_folderD
force group = +users_folderD
browseable = no

Не забудьте перевірити конфігурацію та перезапустити samba:

# testparm
# service smbd restart
# service nmbd restart

Встановити дозволи:

chown root:everybody /var/samba
chmod 770 /var/samba
chown root:users_folderA /var/samba/folderA
chmod 2770 /var/samba/folderA
chown root:users_folderB /var/samba/folderB
chmod 2770 /var/samba/folderB
chown root:users_folderC /var/samba/folderC
chmod 2770 /var/samba/folderC
chown root:users_folderD /var/samba/folderD
chmod 2770 /var/samba/folderD

Таким чином прямий доступ до внутрішніх папок заборонений. Більше того, вони зовсім не видимі і доступ до них можна отримати лише через батьківську папку.


Дякую, це спрацювало. Тепер у нас є ще одна проблема, що Excel 2016 не в змозі зберігати на Samba файли розміром більше 13 Кб. Але це вже інша тема. Дуже дякую за допомогу!
сонер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.