smbd (8)

Samba

23 Oct 1998

NAMA

smbd - server penyedia servis SMB/CIFS ke klien

SYNOPSIS

smbd [-D] [-a] [-o] [-P] [-h] [-V] [-d leveldebug] [-l file log] [-p nomor port] [-O opsi socket] [-s file konfigurasi] [-i scope]

DESKRIPSI

File ini merupakan bagian dari suite Samba.

smbd adalah daemon server penyedia servis file sharing dan printing untuk klien Windows, dengan menggunakan protokol SMB/CIFS. smbd pun kompatibel dengan protokol LanManager, hingga bisa melayani klien LanManager. Termasuk MSCLIENT 3.0 for DOS, Windows for Workgroups, Windows 95, Windows NT, OS/2, DAVE for Macintosh, dan smbfs for Linux

Deskripsi lengkap tentang servis yang mampu diberikan ada di manual dari file konfigurasi (smb.conf) termasuk atribut-nya (Lihat smb.conf (5)). Manual ini tidak memberi detail tentang servis, tapi pada aspek administratif.

Catat bahwa ada beberapa implikasi sekuriti saat menjalakankan server ini, dan smb.conf (5) harus dianggap sebagai bacaan wajib sebelum menjalankan instalasi.

Satu sesi koneksi terjadi pada saat klien meminta, dan setiap klien mendapat salinan sesi tersebut dari server. Salinan ini kemudian melayani seluruh koneksi yang dibuat klien selama terjadi sesi (koneksi). Saat semua koneksi ditutup, sesi yang ada di klien maupun server pun dihapus.

File konfigurasi dan setiap file yang terlibat di dalam konfigurasi secara otomatis di-reload setiap menit jika ada perubahan. Proses reload dapat dipaksa dengan mengirim SIGHUP ke server. Proses reload dari file konfigurasi tidak akan berakibat apa-apa pada koneksi yang sudah terjadi. Agar perubahan juga dialami oleh koneksi yang sudah terjadi, koneksi harus diputus. Baik dengan cara memutuskan koneksi user dari server, atau me-restart smbd.

OPSI

-D
Jika ditentukan, maka parameter ini akan membuat server berjalan di belakang (daemon), sebagai background process. Ini merupakan rekomendasi yang disarankan.

Secara default, server tidak akan beroperasi sebagai daemon.

-a
Jika ditentukan, maka setiap koneksi baru akan memberi tambahan data log ke file log. Merupakan hal default.

-o
Jika ditentukan, maka file log akan ditulis ulang (overwritten). Secara default, data log baru akan ditambahkan.

-P
Opsi pasif. Menyebabkan smbd tidak mengirim pesan tentang network traffic. Dipakai hanya oleh developer untuk debugging.

-h
Memunculkan informasi help dan penggunaan smbd.

-V
Memunculkan versi smbd.

-d leveldebug
adalah nilai integer dari 0 - 10.

Nilai default disini jika tidak dimasukkan apa-apa adalah nol.

Makin tinggi nilai di sini, makin detail data aktifitas server yang di-log ke dalam file log. Pada level 0, hanya error yang kritis dan peringatan serius yang dilog. Level 1 merupakan level yang memadai untuk log server harian - berupa informasi secukupnya tentang kegiatan server.

Level diatas 1 akan membuat log yang besar, dan sebaiknya hanya dipakai guna kepentingan investigasi masalah. Level di atas 3 dibuat hanya untuk developer dan akan membuat data log yang GEDE, dan biasanya sangat cryptic.

Catat bahwa parameter di sini akan override parameter log level di smb.conf (5).

-l file log
Jika ditentukan, akan menunjuk nama file log tempat pesan keterangan dan debug di-log. Dalam smb, file log tidak pernah dibuang, hanya ukurannya saja yang diatur oleh max log size di smb.conf (5). Secara default, nama file log ditentukan dalam saat kompilasi.

-O opsi socket
Lihat parameter socket options dalam manual smb.conf (5) untuk detail.

-p nomor port
merupakan nilai integer positif, dengan nilai default 139.

Merupakan nomor port yang akan digunakan saat koneksi dari server. Standar untuk port default TCP untuk SMB adalah 139. Jika anda ingin menjalankan server sebagai user biasa, bukan root, sebagian besar sistem akan meminta port di atas 1024. Tanyakan system administrator anda jika ini terjadi.

Agar server bisa juga dipakai oleh klien lain, anda sebaiknya melakukan konfigurasi ke port selain 139, dengan me-redirect ke port 139. Keterangan detail ada di rfc1002.txt section 4.3.5.

Parameter ini biasanya tidak ditentukan, kecuali dalam situasi di atas.

-s file konfigurasi
File ini berisi detail konfigurasi untuk server, termasuk informasi spesifik tentang server. Lihat smb.conf (5) untuk detail. File konfigurasi default ditentukan pada saat kompilasi.

-i scope
Menentukan scope NetBIOS yang akan digunakan server untuk berkomunikasi saat mengumpulkan nama NetBIOS. Detail lihat di rfc1001.txt dan rfc1002.txt. Scope NetBIOS sangat jarang dipakai, hanya digunakan jika anda selaku system administrator bertanggung jawab terhadap seluruh sistem NetBIOS tempat anda terhubung.

FILE

/etc/inetd.conf

Jika server berjalan lewat meta-daemon inetd, file ini harus berisi info startup buat meta-daemon tersebut. Lihat bagian INSTALASI dibawah.

/etc/rc

(atau apa pun script inisialisasi yang dipakai sistem anda).

Jika server berjalan sebagai daemon, file ini harus berisi urutan startup yang tepat untuk servernya. Lihat bagian INSTALASI dibawah.

/etc/services

Jika server berjalan lewat meta-daemon inetd, file ini harus berisi info berisi mapping nama servis (seperti netbios-ssn) ke port servis (seperti 139) Lihat di INSTALASI.

/usr/local/samba/lib/smb.conf

Merupakan lokasi default untuk file konfigurasi smb.conf. Lokasi lain bisa /usr/samba/lib/smb.conf atau /etc/smb.conf.

File ini mendeskripsikan seluruh servis yang disediakan ke klien. Lihat smb.conf (5) untuk jelasnya.

BATASAN

Di beberapa sistem, smbd tidak bisa merubah uid kembali ke root, setelah call setuid(). Sistem demikian disebut memiliki "trapdoor" uid. Jika sistem anda seperti demikian, anda tidak bisa meng-koneksi dua user sekaligus ke server pada saat bersamaan. Error yang ditampilkan biasanya berupa "access denied" atau sejenisnya.

ENVIRONMENT VARIABLES

PRINTER

Jika tidak ada printer ditentukan, sebagian besar sistem akan menggunakan nilai variabel ini (atau "lp" jika variabel ini tidak ditentukan) sebagai nama printer yang akan digunakan.

INSTALASI

Lokasi server dan file pendukungnya merupakan urusan masing-masing sysadmin. Jadi lokasi berikut hanya saran saja.

Sebaiknya software Samba diinstall di bawah /usr/local/samba, dengan akses readable buat semua, writeable hanya oleh root. Program-nya sendiri sebaiknya harus executable oleh semua, sehingga user bisa menjalankan server dengan privillege-nya sendiri. Server JANGAN diberi setuid, dan dalam beberapa sistem ada baiknya diberi setgid ke grup kosong. Sebab dalam sistem demikian ada masalah sekuriti dengan daemon yang bisa menjadi user dengan penyisipan lewat debugger. Pemberian setgid ke smbd bisa menutup lobang sekuriti ini. Dalam edisi awal kernel Linux, bugs ini dideteksi pada pre-kernel 2.0. Kemungkinan besar bugs ini hanya terjadi sekali, sebab pengujian di sistem lain tidak menunjukkan adanya bugs serupa.

File log dari server sebaiknya ditaruh di direktori yang readable dan writeable hanya oleh root, sebab menyimpan informasi sensitif.

File konfigurasi sebaiknya ditaruh dan diberi sekuriti sama seperti file log (readable dan writeable hanya oleh root), sebab file ini mengontrol sekuriti dari setiap servis ke klien. Contoh konfigurasi ada di source code "smb.conf.sample" dan bisa anda rubah jadi "smb.conf" untuk kemudian dimodifikasi sesuai kebutuhan.

Catatan berikut akan menganggap:

  • smbd (program server) di-install di /usr/local/samba/bin

  • smb.conf (file konfigurasi) di-install di /usr/local/samba/lib

  • file log disimpan di /var/adm/smblogs

  • Server bisa berjalan lewat daemon oleh user atau saat startup, atau dari meta-daemon dengan request dari inetd. Jika sebagai daemon, server akan selalu siap, sehingga sesi koneksi akan lebih cepat. Jika dijalankan sebagai meta-daemon penggunaan memori akan lebih hemat, dan utilitas seperti TCP-wrapper untuk tcpd bisa diterapkan untuk sekuriti tambahan. Untuk penggunaan serius sebagai file server, disarankan smbd dijalankan sebagai daemon.

    Jika anda sudah tentukan, silakan lanjut dengan MENJALANKAN SERVER SEBAGAI DAEMON or MENJALANKAN SERVER BERDASARKAN REQUEST.

    MENJALANKAN SERVER SEBAGAI DAEMON

    Cukup letakkan opsi -D di baris perintah. Tidak usah meletakkan ampersand (&) setelah baris perintah, sebab opsi -D sudah membuat server keluar dari tty.

    Setiap user bisa menjalankan server sebagai daemon, tentunya dengan hak akses. Ini berguna untuk ujicoba, dan bahkan bisa juga sebagai substitusi untuk ftp, misalnya. Jika demikian, maka server hanya memiliki privillege dari user yang menjalankannya.

    Untuk meyakinkan bahwa server berjalan sebagai daemon, dan dijalankan oleh root sehingga bisa melayani banyak klien, anda harus memodifikasi startup sistem. Seperti di /etc/rc, masukkan baris berikut, merubah nomor port, lokasi file konfigurasi dan level debug sebagaimana anda inginkan

    /usr/local/samba/bin/smbd -D -l /var/adm/smblogs/log -s /usr/local/samba/lib/smb.conf

    (Baris di atas harus ditulis dalam satu baris)

    Jika opsi yang digunakan saat kompilasi cocok dengan sistem anda, maka semua parameter kecuali -D bisa dihilangkan. Lihat OPTIONS diatas.

    MENJALANKAN SERVER BERDASARKAN REQUEST

    Jika sistem anda menggunakan meta-daemon seperti inetd, anda bisa mengatur server smbd untuk berjalan setiap ada upaya koneksi, ini butuh beberapa perubahan di file startup. Jika anda bukan sysadmin, hubungi administrator anda untuk merubah sistem.

    Anda mungkin ingin merubah setup name server NetBIOS nmbd pada saat bersamaan dengan smbd. Untuk itu silakan baca manual nmbd (8).

    Pertama-tama anda harus memastikan bahwa di file /etc/services port telah dikonfigurasi, yang biasa digunakan adalah port 139, tapi port lain pun bisa digunakan.

    Pastikan baris berikut ada di dalam /etc/services:

    netbios-ssn 139/tcp

    Untuk user NIS/YP - anda perlu mengkonfigurasi map servis NIS anda, selain file /etc/services.

    Kemudian, taruh baris berikut di /etc/inetd.conf (anda bisa memilih untuk menggunakan meta-daemon selain inetd). Catat bahwa item pertama di baris ini sama dengan nama servis di /etc/services. Ubah nilai berikut sesuai sistem anda (lihat inetd (8)):

    netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd -d1 -l/var/adm/smblogs/log -s/usr/local/samba/lib/smb.conf

    (Baris di atas sebaiknya ditulis dalam satu baris di /etc/inetd.conf).

    Catat bahwa anda tidak perlu memberi nomor port di sini, bahkan jika anda tidak menggunakan standar port.

    Akhirnya, edit file konfigurasi untuk menyediakan servis yang tepat. Sebagai contoh, anda bisa lihat dua servis berikut.

    
    
    [homes]
      writeable = yes
    
    [printers]
     writeable = no
     printable = yes
     path = /tmp
     public = yes
    
    
    

    Dua servis di atas akan membuat anda bisa meng-koneksi home directory dan mencetak dokumen ke printer di host (tentunya jika anda punya hak).

    MENGUJI INSTALASI

    Jalankan uji berikut jika server berjalan sebagai daemon. Jika anda menjalankan server sebagai meta-daemon, anda bisa me-restart atau mengirim sinyal kill (HUP). Beberapa versi inetd akan membaca kembali tabel konfigurasi saat menerima sinyal HUP.

    Jika komputer anda bernama "latino" dan nama anda adalah "che", maka anda akan bisa meng-koneksi ke service \\latino\che.

    Untuk menguji dan bereksperimen dengan server, sebaiknya gunakan program smbclient smbclient (1)) dan baca file DIAGNOSIS.txt dalam dokumentasi Samba anda.

    VERSI

    Manual ini berlaku untuk Samba versi 2.0.

    DIAGNOSA

    Sebagian besar diagnosa dari server tersimpan di dalam file log. Nama file log ini ditentukan pada saat kompilasi, namun bisa di-override dari baris perintah.

    Jumlah dan kelengkapan bahan diagnosa tergantung dari level debug yang digunakan server. Jika anda menemui masalah, set level debug ke 4 dan lihat file log-nya.

    Sebagian besar pesan menjelaskan isinya dengan mudah. Sayangnya, saat manual ini dibuat, ada terlalu banyak diagnosa tersedia di source code. Jadi saat ini yang terbaik yang bisa anda lakukan adalah melihat source code dan memeriksa diagnosa yang anda temui.

    SINYAL

    Dengan mengirim SIGHUP ke smbd akan menyebabkannya me-re-load file smb.conf-nya.

    Buat mematikan proses smbd, sebaiknya JANGAN mematikannya lewat sinyal SIGKILL (-9), kecuali sebagai upaya terakhir, sebab akan menyebabkan area shared memory menjadi tidak konsisten. Cara terbaik adalah dengan mengirim sinyal SIGTERM (-15) dan menunggu smbd melakukan sendiri proses kematiannya.

    Level log dari debug bisa dinaikkan dengan mengirim sinyal SIGUSR1 (kill -USR1 <smbd-pid>) dan menurunkannya dengan SIGUSR2 (kill -USR2 <smbd-pid>). Ini akan menyebabkan problem yang muncul untuk di-diagnosa, sementara servis tetap berjalan dengan level log biasa.

    Catat bahwa saat sinyal mengirim debug, mereka tidak kembali ke smbd. Anda sebaiknya menunggu sampai smbd dalam kondisi siap menerima servis, sebelum anda mengirim sinyal. Sebab akan mempengaruhi kinerja.

    LIHAT JUGA

    hosts_access (5), inetd (8), nmbd (8), smb.conf (5), smbclient (1), testparm (1), testprns (1), dan RFC Internet rfc1001.txt, rfc1002.txt. Sebagai tambahan, spesifikasi CIFS (dulu SMB) juga tersedia lewat Web di: http://samba.org/cifs/.

    PENULIS

    Software Samba dan utilitas lain pertama kali dibuat oleh Andrew Tridgell samba-bugs@samba.org. Samba sekarang dikembangkan oleh tim Samba sebagai proyek Open Source, sama seperti pengembangan kernel Linux.

    Manual pertama kali ditulis oleh Karl Auer. Manual ini kemudian dikonversikan ke format YODL (satu software hebat lagi dari Open Source, tersedia bebas di ftp://ftp.icce.rug.nl/pub/unix/) dan di-update pada Samba2.0 oleh Jeremy Allison. Terjemahan bahasa Indonesia oleh M. ZEN Muttaqien aka. ZEN el GUAY.

    Silakan lihat samba (7) untuk mengetahui daftar lengkap kontributor dan detail mengenai bagaimana memberikan laporan bugs, komentar dan sebagainya.