Hari Minggu dan hari Senin kemarin saya mendapat telepon dari salah seorang klien yang pernah training di Excellent. Ia hendak melakukan implementasi Samba PDC+OpenLDAP menggunakan openSUSE 11.2. Proses setup dan konfigurasi berjalan lancar, mudah dan cepat mengikuti panduan yang ada disini : Tutorial Samba PDC+OpenLDAP Pengganti Windows Domain Controller & File Server. Proses testing share data berikut permission folder juga berjalan lancar. Masalah baru terjadi ketika ia melakukan share data yang ada di harddisk kedua, yaitu harddisk yang sebelumnya menggunakan sistem Windows 2008 dengan tipe partisi NTFS. Apapun konfigurasi yang dilakukan, hasil share selalu read only.
Berikut adalah langkah-langkah investigasi yang saya lakukan yang kesemuanya gagal :
- Mengubah kepemilikan atau hak akses folder dengan perintah chown, misalnya chown -R vavai namafolder, hasilnya gagal.
- Mengubah permission folder dengan perintah chown -R nobody:nogroup, gagal
- Main kasar 😛 , mengubah permission folder dengan perintah chmod 777 -R namafolder. Masih tetap gagal
- Memeriksa tipe mount, mungkin saja mountnya read only. Saya check ternyata sudah menggunakan mount ntfs-3g yang mampu membaca dan menulis ke partisi NTFS. Ini bisa dibuktikan karena saya bisa menulis atau membuat file jika mengakses folder tersebut secara langsung (tidak melalui Samba share)
- Mencoba opsi read only = no, writable = yes (opsi ini sama dengan read only=no), write list=vavai dll tapi tetap gagal
- Membuat sebuah share baru pada partisi asli Linux kemudian mencoba membuat file atau folder melalui Samba share, ternyata berhasil. Menyamakan konfigurasi baru dengan Samba share yang bermasalah, ternyata gagal juga
- Mencoba memindahkan folder ke partisi Linux (Ext4) dan mengubah konfigurasi /etc/samba/smb.conf, masih gagal juga
Setelah sekian banyak cara saya coba namun gagal maning-gagal maning, akhirnya ada secercah harapan ketika saya mencoba memasukkan folder yang dimaksud kedalam folder lain dan mencoba mengaksesnya secara read-write, ternyata berhasil.
Berikut ini adalah perjalanan dan alur logika hingga bertemu solusinya :
- Folder /windows/D/accounting dishare dengan nama accounting, hasil read only meski formasinya sudah 777 dan kepemilikannya sudah diset normal. Baca tulis pada folder tersebut secara langsung (tanpa melalui Samba share) berjalan dengan baik
- Memindahkan folder accounting ke folder /srv (partisi Linux ext4) dan menyesuaikan path share pada /etc/samba/smb.conf, hasilnya masih gagal
- Membuat share baru dengan nama data dan mengarahkannya ke folder /srv/data, berhasil baca tulis pada Samba share
- Memasukkan folder accounting kedalam /srv/data dan mengaksesnya melalui Samba share data, berhasil baca tulis
- Menyesuaikan path share accounting pada /etc/samba/smb.conf untuk merujuk ke path baru /srv/data/acounting dan mencoba mengaksesnya melalui Samba share accounting, ternyata gagal. Anehnya, jika saya mengakses folder tersebut melalui Samba share data (yang didalamnya ada folder accounting), saya bisa membuat folder, file dan mengubah isi file tanpa terkena kutukan read only
- Mencoba cara ajaib, mengganti nama share accounting menjadi acc tanpa mengubah rujukan path fisik, ternyata berhasil
Jadi ternyata masalahnya selesai dengan cara yang ajaib, yaitu tidak menggunakan nama share yang sebelumnya pernah digunakan. Saat mencoba nama share lain, misalnya data-accounting, juga berhasil akses secara read-write. Jika saya mengembalikan nama share menjadi accounting lagi, Samba share kembali berulah menjadi read only.
Asumsi saya, Samba entah bagaimana caranya, menyimpan cache akses share folder. Permission untuk cache ini tidak berubah meski folder fisiknya sudah dipermak dengan chmod 777 -R sekalipun.
Ada yang mungkin tahu penjelasan teknisnya ?
7 Comments
bukannya chmod -R 777 ya?
harusnya setelah restart SAMBA, efeknya langsung berubah. Mungkin ada setting global yang mengakibatkan dia berubah menjadi read only terus?
chmod 777 -R atau chmod -R 777 mestinya menghasilkan hal yang sama mas, karena itu parameter saja. BTW, restart samba memang seharusnya otomatis melakukan update share permission, tapi ini tidak dan ini yang jadi menjengkelkan 🙂
kalo bandel,biasanya saya paksa pake dgn cara menanam script tambhan di rc.local!gmn menurut mas2 master linux?
sudah report ke upstream?
btw, pake Samba 3.5.3 khan?
Ini masalah klasik antara POSIX ACL yg dipake Samba lawan NTFSv3 ACL.
Ya mau apa lagi, gimana gimana POSIX akan lebih rendah kemampuann ya daripada system yang lebih baru, dan Samba akan terpaksa stay di POSIX karena kudu maintain compatibility dengan semua *nix yan pakai POSIX.
Biasanya kita menangani ini dengan cara mounting disk ex NTFS tersebut ke Windows Server 2003, lalu ROBOCOPY ke disk Samba. Atau commercial product NT Migrator dari Sun SAM-FS.
Cara yang lebih elegan adalah dengan memakai CIFS server dari OpenSolaris, yang back-end storagenya ZFS. Bisa melayani complicated NTFS ACL karena memang didesain pakai NFSv4 ACL. Hanya saja ya kudu mindahin data dulu dari disk NTFS via network. Dan OpenSolaris ini tidak pakai Samba yah, dia punya CIFS service built in.
Dan sekarang juga sudah ada Samba 4.0 dalam proses prototype. Baiknya adalah baik Microsoft, Samba developer maupun Sun, talking openly karena CIFS sudah masuk salah satu SNIA standard. Download saja CIFS specs dari SNIA.
Thanks banget boss..
huwehehe.. kasus yg sama sperti pertama saya berkenalan dengan suse..
ikut berbagi ah…
berdasarkan pengalaman saya itu kunci nya ada di samba server.. coba aja di perdalam perkenalan terhadap samba servernya.. itu pun harus berdasarkan user yg di set di ldap nya juga’.. jadi si samba menentukan siapa saja yg dapat melakukan hak akses terhadap folder tsb ya berdasarkan ldap yg di set melalui samba’..
smoga bermanfaat..
salam,
admin