Samba - Buat Subdirektori Saham dengan izin mereka sendiri

9

Saya memiliki share Samba yang berisi banyak folder seperti ini:

share
  - folderA
  - folderB
  - folderC
  - folderD

Ada sekitar 20 pengguna yang mengakses share tersebut. Setiap pengguna dapat memiliki akses masing-masing ke beberapa direktori, misalnya Ben dapat mengakses folderA dan folderC, tetapi tidak folderB dan folderD. Jenny dapat mengakses folderB dan folderC, dan sebagainya.

Saya tidak ingin pengguna memasang setiap folder yang mereka butuhkan. Saya ingin mereka memasang folder "share" yang berisi semua subfolder. Akses kemudian dibatasi dengan mengatur izin linux.

Saya membuat grup untuk setiap subdirektori dan menambahkan pengguna ke grup tersebut. Kontrol akses berfungsi dengan baik untuk file yang ada. Tetapi setiap kali pengguna membuat file dalam subdirektori, itu ditolak untuk setiap pengguna lain memiliki izin untuk akses baca / tulis di direktori itu. Untuk mengatasi ini, saya bermain-main dengan topeng samba tetapi tidak bisa membuatnya bekerja.

Samba conf saya terlihat seperti ini:

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

Jadi jelas setiap pengguna ada di grup semua orang, sehingga mereka dapat me-mount share dengan subdirektori. Akses untuk setiap subdirektori berfungsi dengan baik. Tetapi setiap kali Ben membuat file di folderC, file tersebut mendapatkan izin file -rwxr - r-- tetapi harus -rwxrwx ---

Saya pikir pembagian untuk masing-masing folder tidak berfungsi sama sekali karena saya mencoba untuk mengatur writeable = tidak dan hanya membaca = ya untuk mengujinya. Nyalakan kembali smbd dan nmbd dan remount jaringan berbagi (pada Windows 10). Para pengguna dapat membuat file dan memodifikasi sendiri.

Ini berjalan pada pi raspberry dengan raspbian. Hard drive dengan file diformat sebagai ext4 dan dipasang melalui fstab.

Soner
sumber
Untuk memaksakan hak akses yang diinginkan ke file gunakan force create mode = 770pernyataan di folderCbagian konfigurasi Anda.
Oleg Bolden
Terima kasih, itu sebenarnya tidak menyelesaikan masalah tetapi saya perhatikan saya memiliki spasi di jalur smb.conf asli saya: [folderA] path = / var / samba / beberapa folder dengan spasi. Saya menyelesaikan ini dengan melampirkan path dengan "(" / var / samba / folder dengan spasi "). Pengaturan dalam paragraf [folderA] hanya digunakan ketika pengguna memasang [folderA] secara langsung, tetapi pengaturannya tidak digunakan ketika pengguna me-mount [share] dan menavigasi ke folder A. Pengaturan [share] digunakan untuk folder A. Bagaimana saya bisa melewati pengaturan [share] untuk folderA tanpa memasang folderA secara langsung tetapi mengaksesnya dari [share]?
soner

Jawaban:

5

Coba konfigurasi ini (untuk bagian bagikan):

[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

Jangan lupa untuk memeriksa konfigurasi dan memulai kembali samba:

# testparm
# service smbd restart
# service nmbd restart

Tetapkan izin:

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

Dengan cara ini akses langsung ke folder internal tidak diperbolehkan. Selain itu, mereka tidak terlihat sama sekali dan hanya dapat diakses melalui folder induk.

Oleg Bolden
sumber
Terima kasih, ini berhasil. Sekarang kami memiliki masalah lain bahwa Excel 2016 tidak dapat menyimpan file yang lebih besar dari 13 KB ke Samba. Tapi itu topik lain. Terima kasih banyak telah membantu!
Soner