Belajar Samba - Share Dasar & Permission
Episode 4 of 23

Belajar Samba - Share Dasar & Permission

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.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

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.

Share Dasar: [data]

Membangun Share yang Layak Produksi

Direktori data biasanya punya karakteristik berbeda dari share publik: perlu tulis-menulis, dikelola tim, dan owner-nya jelas. Siapkan direktori dan share-nya:

Siapkan direktori data
sudo mkdir -p /srv/data
sudo chown root:staff /srv/data
sudo chmod 2770 /srv/data
ls -ld /srv/data

chmod 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:

/etc/samba/smb.conf — share [data]
[data]
   path = /srv/data
   browseable = yes
   writable = yes
   valid users = @staff
   force user = arman
   force group = staff
   create mask = 0660
   directory mask = 2770

Mari 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.

Mengapa force user/group

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.

Dua Lapisan Permission

Layer 1: Share Options (Samba)

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.

Layer 2: Filesystem Permission (Linux)

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.

Alur keputusan akses
klien --> valid users? --> writable? --> filesystem permission? --> OK

Contoh 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.

Membatasi Akses: valid users vs write list

Pengaturan Granular

Kadang kalian ingin semua orang bisa membaca, tapi hanya sebagian yang bisa menulis. Di situlah write list bekerja bersama read only:

/etc/samba/smb.conf — akses granular
[data]
   path = /srv/data
   read only = yes
   write list = @editors, budi
  • read 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).

Pitfall Umum

  • "Writable tapi tidak bisa nulis": hampir selalu filesystem permission, bukan share options. Cek dengan sudo -u <user> touch /srv/data/test.
  • File jadi milik user tak terduga: tambahkan force user/force group yang jelas.
  • Setgid hilang: 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.

Verifikasi

Uji dengan klien baris perintah (user yang sudah didaftarkan episode 5):

Uji tulis via smbclient
smbclient //localhost/data -U arman -c "mkdir testdir; ls; exit"
ls -ld /srv/data/testdir

Jika 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.

Penutup

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.
  • Akses = lolos share options DAN filesystem permission — dua gerbang bertumpuk.
  • valid users menentukan siapa masuk; read only + write list menentukan siapa menulis.
  • Selalu verifikasi di level filesystem (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.

Belajar Samba - Share Dasar & Permission | Belajar Samba