Episode ini membangun share produksi [data] dengan path=/srv/data, browseable=yes, dan writable=yes, plus mapping owner via force user dan force group. Kalian juga memahami dua lapisan permission yang bertumpuk — filesystem Linux vs share options Samba — serta peran valid users dan write list dalam membatasi akses.

Konfigurasi dasar episode 3 sudah membuat share pertama. Di episode 4 kita naik satu level: membangun share data yang benar-benar dipakai produksi — dengan mapping owner yang tepat dan pemahaman yang jujur tentang bagaimana dua lapisan permission bekerja sama. Ini adalah episode paling penting untuk menghindari frustrasi "kenapa file yang saya tulis jadi milik user aneh?" yang menghantui setiap administrator Samba pemula.
Direktori data biasanya punya karakteristik berbeda dari share publik: perlu tulis-menulis, dikelola tim, dan owner-nya jelas. Siapkan direktori dan share-nya:
sudo mkdir -p /srv/data
sudo chown root:staff /srv/data
sudo chmod 2770 /srv/data
ls -ld /srv/datachmod 2770 menyalakan setgid (bit 2) sehingga file baru mewarisi group staff, dan memberi akses penuh hanya untuk owner/group. Ini fondasi kolaborasi: semua anggota staff bisa baca-tulis tanpa saling menimpa hak orang lain. Konfigurasi share-nya:
[data]
path = /srv/data
browseable = yes
writable = yes
valid users = @staff
force user = arman
force group = staff
create mask = 0660
directory mask = 2770Mari bedah tiap baris:
path = /srv/data: direktori yang dibagikan.browseable = yes: share muncul di daftar saat browsing jaringan.writable = yes: izinkan operasi tulis dari klien (sinonim read only = no).valid users = @staff: hanya anggota group staff yang boleh mengakses (tanda @ menandakan group).force user = arman: semua file yang dibuat klien menjadi milik user arman.force group = staff: semua file mewarisi group staff.create mask/directory mask: memaksa permission file (0660) dan direktori (2770) agar tetap selaras dengan desain kolaborasi.Masalah klasik: klien Windows mengakses sebagai arman, tapi file yang dibuatnya menjadi milik user lain karena Samba menggunakan identitas connect saat menulis. force user/force group menyeragamkan kepemilikan — apapun user yang masuk, file selalu menjadi milik arman dan group staff. Ini bukan "hack", melainkan pola standar di share kolaboratif agar permission filesystem bisa diprediksi. Gunakan secara bijak: force user mengesampingkan kepemilikan asli, jadi jangan pakai ke root tanpa alasan kuat.
Opsi di bagian share — valid users, writable, read only, write list — adalah gerbang pertama. Samba memeriksanya sebelum memproses operasi file. valid users = @staff artinya user di luar staff bahkan tidak bisa membuka share, berapapun permission filesystem-nya.
Bahkan jika lolos layer Samba, kernel Linux tetap memeriksa permission filesystem (mode bit, owner, group, dan ACL). Ini dua gerbang yang bertumpuk: akses = lolos share options DAN lolos filesystem permission. Kalau salah satu menolak, operasi gagal — sering tanpa pesan error yang jelas di sisi klien.
klien --> valid users? --> writable? --> filesystem permission? --> OKContoh nyata: writable = yes di share, tapi direktori /srv/data di-chmod 755 milik root. User arman berhasil membuka share, tapi gagal membuat file. Error "Access denied" di Explorer Windows, padahal "konfigurasi Samba sudah benar". Ini persis kasus yang membuat testparm tidak membantu — masalahnya di lapisan kedua.
Kadang kalian ingin semua orang bisa membaca, tapi hanya sebagian yang bisa menulis. Di situlah write list bekerja bersama read only:
[data]
path = /srv/data
read only = yes
write list = @editors, budiread only = yes: baseline semua user read-only.write list = @editors, budi: pengecualian — group editors dan user budi boleh menulis.Ini pola least privilege yang akan kita tekankan lagi di episode 15: berikan kemampuan minimum yang dibutuhkan, lalu buka secara eksplisit. Bandingkan:
valid users → menentukan siapa boleh masuk ke share.write list → menentukan siapa boleh menulis di antara yang sudah masuk.read only/writable → default akses tulis seluruh share.Tip
Selalu kombinasikan dengan filesystem yang mendukung. Jika write list mengizinkan budi menulis, pastikan /srv/data juga memberi akses tulis ke budi di level filesystem (lewat group yang sama, misalnya). Share options dan filesystem harus dirancang beriringan — bukan ditest parsial. Setelah edit, validasi dengan testparm dan reload (episode 3).
sudo -u <user> touch /srv/data/test.force user/force group yang jelas.chmod 2770 pada direktori induk agar file baru tetap di group yang benar; directory mask juga perlu bit setgid.valid users memblokir terlalu banyak: lupa tanda @ pada group menyebabkan error Failed to find a POSIX uid di log — grup ditulis @staff, bukan staff.Uji dengan klien baris perintah (user yang sudah didaftarkan episode 5):
smbclient //localhost/data -U arman -c "mkdir testdir; ls; exit"
ls -ld /srv/data/testdirJika testdir muncul dan dimiliki arman:staff, kedua lapisan permission bekerja dengan benar. Ini momen yang harusnya kalian rayakan kecil-kecilan: share produksi pertama kalian hidup.
Inti yang harus dibawa pulang:
[data] dengan path, browseable, writable membentuk share dasar yang layak produksi.force user/force group menyeragamkan kepemilikan file yang dibuat klien.valid users menentukan siapa masuk; read only + write list menentukan siapa menulis.sudo -u <user> touch) sebelum menuduh konfigurasi Samba.Di episode 5 selanjutnya kita akan membahas user management & smbpasswd: sinkronisasi user sistem dengan database password Samba, smbpasswd -a, pdbedit -L, format penyimpanan tdbsam, username map untuk alias, dan account flags. Setelah episode ini, kalian bisa membuat user yang benar-benar bisa login ke share kalian.