Samba

Arch Linux Türkiye Belgeleri sitesinden
Atla: kullan, ara


Konu başlıkları

Kurulum

Herşeyden önce - Çalışma grubunuzun ismini bildiğinizden emin olmanız gerekmektedir. Daha sonra neden gerekli olduğu açıklanacaktır.

Öncelikle sambayı kurun:

pacman -S samba

Yapılandırma

Yapılandırmaya başlamadan önce, root olarak smb.conf'un olduğu dizine geçin: (smb.conf samba yapılandırma dosyasıdır.)

cd /etc/samba

Kurulumdan sonra Arch Linux öntanımlı bir yapılandırma dosyası vermediği için, samba ile gelen yapılandırma dosyasını smb.conf olarak kaydedin:

cp smb.conf.default smb.conf

Önemli: Yeni paketlerde smb.conf.default smb.conf'a sembolik bağ oluşturduğu için yukarıdaki işlemi yapmanıza gerek yoktur.

Şimdi bu dosyayı düzenleyebilirsiniz. Tercihinize göre bir editör ile dosyayı açın:

nano smb.conf

İlk bölüm genel ayarlara ilişkindir. Temel ayarlar ve sambayla ilgili yapacağınız ayarların tümü bu kısımdadır. Örnek bir genel ayar şu şekildedir.

#Global Parameters
workgroup = HOME
netbios name = Bennett-DSLIN
encrypt passwords = yes

Çalışma grubu adından da belli olduğu gibi, tabi olmak istediğiniz çalışma grubunu ifade eder. (Windows XP'nin öntanımlı çalışma grubu adları MSHOME ve WORKGROUP'tur.) "encrypt passwords" seçeneği mümkün oldukça "yes" değerine sahip olmalıdır. Diğer makineler Windows 95 veya Windows 98 kullanıyorsa, bu seçeneği no olarak ayarlayabilirsiniz, zira Windows'un bu sürümleri şifrelenmiş parola kullanmamaktadır. "netbios name" değeri ise bilgisayarınızın çalışma grubu içerisinde gösterilecek ismini ifade etmektedir.

Paylaşım Örnekleri

Temel ayarlardan sonra ikinci kısım paylaşıma yöneliktir. En basit anlamda paylaşım klasörü kullanıcının kolayca erişebileceği ve yazma izninin olduğu göz önünde bulundurulduğunda, ev dizinidir. Ayrıca birden fazla paylaşım oluşturarak bu paylaşım klasörlerine çeşitli haklar tayin edebilirsiniz.

[homes]
browseable = no
read only = no

Eğer herkesin görebileceği bir paylaşım klasörü oluşturup yazma iznini sadece belirli bir gruba vermek istiyorsanız şu şekilde bir yapılandırmaya gidebilirsiniz. Aşağıdaki örnekte paylaşılan klasörü herkes görebilir; fakat, sadece staff grubu bu dizine yazabilir:

[homes]
public = yes
writable = yes
write list = @staff

Eğer Windows kullanıcılarının "temiz" bir klasörle (dot files (.bashrc vs.) olmadan) karşılaşmalarını istiyorsanız, şu şekilde bir paylaşım ayarlayabilirsiniz:

[homes]
path = /home/%u/smb
browseable = no
read only = no

Bütün kullanıcılarınızın bir 'smb' dizinine sahip olduğundan emin olmalısınız. Ayrıca /etc/skel altında 'smb' dizini oluşturarak yeni kullanıcı eklendiğinde bu klasörün de otomatik oluşturulmasını sağlayabilirsiniz:

 mkdir /etc/skel/smb

Ev dizini dışında paylaşım belirlemek zor değildir. path ve valid users seçenekleri ile ev dizini dışındaki yerleri paylaşmak kolaydır. Mesela:

[music]
path = /mnt/windows/Music/
browseable = yes
read only = yes
valid users = Bryan, Michael, David, Jane

valid user seçeneği Samba'ya paylaşıma kim(ler)in paylaşıma giriş yapabileceğini göstermektedir. Basit olmasına rağmen kullanıcı tanımlamak işi biraz uzatmaktadır.

Farklı bir örnek: herkese açık salt-okunur paylaşım:

[Public]
path = /pub
public = yes
read only = yes

Kullanıcı Eklemek

smb.conf'u istekleriniz doğrultusunda ayarladıktan sonra kaydedip kapatın. Bundan sonra eğer valid users tanımlamışsanız kullanıcı oluşturmanız gerekmektedir. Kullanıcı eklemek için şu komutu verin:

smbpasswd -a <username>

Eğer şu mesaj ile karşılaşırsanız:

# smbpasswd -a xxx
New SMB password:
Retype new SMB password:
Failed to modify password entry for user xxx

bu "xxx" kullanıısının yerel bir kullanıcı olmadığı anlamına gelmektedir. Bu yüzden yerel kullanıcıyı oluşturmak zorundasınız:

adduser xxx

Kullanıcı ekledikten sonra, yukarıdaki komutu tekrar vererek kullanıcı için şifre belirlemelisiniz. Kullanıcı ekleme işi de sona erdikten sonra işiniz tamamlandı sayılabilir. Samba kullanıcıları ve şifreli parolaları /etc/samba/private/smbpasswd dosyası altında tutulmaktadır.

Kullanım

Eğer henüz yapmamışsanız, samba sunucuyu başlatın, ilk komut çalışıyorsa kapatmak için:

/etc/rc.d/samba stop
/etc/rc.d/samba start

Eğer herşey tamamsa, samba'yı /etc/rc.conf dosyanızda DAEMONS kısmına ekleyin.

 DAEMONS=(syslog-ng network ... samba ...)

Windows İstemcisi

Bilgisayarınızı tekrar başlatın. Başlattıktan sonra, "valid users" olarak tanımladığınız kullanıcı ve smbpasswd ile ayarladığınız şifreyi kullanarak paylaşıma erişmeniz beklenmektedir.

Linux istemcisi

Eğer kurulu değilse konsol uygulaması olan smbclient için smbclient paketini kurun.

smbclient

Bir sunucudaki paylaşımları görmek için:

$ smbclient -L <netbios_adı> -U%

Bir paylaşıma bağlanmak için:

$ smbclient //<netbios_adı>/<share> -U<kullanıcı>%<şifre>

/ yerine \ kullanabilirsiniz lakin kabuk problem oluşturabileceği için tırnak işareti içerisinde kullanmanız gereklidir.

Sık kullanılan smbclient komutları
help [komut] veya ? [komut] bütün komutları gösterir ve spesifik bir komut hakkında bilgi verir
put <yerel isim> [karşıdaki isim] dosya gönderir
get <karşıdaki isim> [yerel isim] dosya alır
ls [mask] mevcut dizin içeriğini gösterir
cd [directory] çalışılan dizini göstermeden (pwd) dizini değiştirir
lcd <directory> yereldeki dizini değiştirir
mget <mask> mask'a uyan bütün dosyaları alır
mput <mask> mask'a uyan bütün dosyaları gönderir
recurse mget/mput komutları ile özyineli dizin alımını/gönderimini etkinleştirir
prompt mget/mput komutlarını kullanırken her tekil dizin ve dosyayı hazırda bekletmeyi açar/kapatır. Öntanımlı olarak açıktır
 !<yerel komut> yerel bir komutu çalıştırır ve çıktısını yakalar


mount

samba paylaşımlarını elle bağlamak ve ayırmak (root yetkisi gerektirir) için:

mount -t cifs //<netbios_ismi>/<share> /<bağlama_noktası> -o user=<kullanıcı>%<parola>

Yukarıdakina yönergeden yola çıkarak netbios ismi "Bennet-DSLIN" olan kullanıcının [homes] ve [music] paylaşımları için örnekleyecek olursak:


mount -t cifs //Bennett-DSLIN/homes /media/homes -o user=<kullanıcı_adı>
mount -t cifs //Bennett-DSLIN/music /media/music -o user=<kullanıcı_adı>

Ayırmak için:

umount /<bağlama_noktası>

root dışındaki kullanıcılara mount yetkisi vermenin iki yolu vardır: smbnetfs paketini kurun ya da /sbin/mount.cifs setuid değerini root olarak belirleyin:

 # chmod u+s /sbin/mount.cifs /sbin/umount.cifs

Bağlantılar

Kişisel araçlar
GOOGLE
Diğer dillerde