Ofiste Windows makineler, sunucu odasında Linux sunucular ve arada "şu klasöre herkes erişebilsin" isteği varsa, iki dünyayı buluşturan protokol SMB'dir. Samba ile dosya paylaşımı, bir Linux sunucusunu Windows'un ağ komşusunda görünen, sürücü olarak eşlenebilen bir dosya sunucusuna dönüştürür. Kullanıcılar hiçbir şeyin arkada Linux olduğunu bilmeden \\dosya\ortak yazıp çalışmaya devam eder.
Bu rehberde Samba'yı sıfırdan kuracağız: paket kurulumu ve smb.conf yapısı, Samba'nın kendi kullanıcı veritabanı ve parola yönetimi, farklı erişim seviyelerinde paylaşım tanımları, Windows/macOS/Linux istemcilerden bağlanma yöntemleri, POSIX ve SMB izin katmanlarının nasıl üst üste bindiği, güvenlik sertleştirmesi ve en sık düşülen tuzaklar. Sonunda üretimde kullanılabilir, kimlik doğrulamalı bir dosya sunucunuz olacak.
Samba Ne İşe Yarar, NFS'ten Farkı Nedir#
Samba, Microsoft'un SMB/CIFS protokolünün açık kaynak uygulamasıdır. Bir Linux makinede çalışır ve dizinlerinizi ağ üzerinde Windows'un anladığı biçimde sunar. Kimlik doğrulama, dosya kilitleme, ACL desteği ve ağda görünürlük (browsing) gibi Windows dünyasının beklediği davranışları sağlar.
NFS ile karşılaştırıldığında ayrım oldukça nettir. NFS, kimlik doğrulamayı büyük ölçüde istemci IP'sine ve sayısal UID'ye dayandırır; sunucu-sunucu iletişimi için idealdir ve genellikle daha hızlıdır. Samba ise kullanıcı adı-parola tabanlı kimlik doğrulama yapar, dolayısıyla masaüstü kullanıcıları ve karma ortamlar için doğru araçtır.
| Kriter | Samba (SMB) | NFS |
|---|---|---|
| Ana istemci | Windows, macOS, Linux | Linux/Unix |
| Kimlik doğrulama | Kullanıcı adı + parola | IP + UID eşleme |
| Kurulum karmaşıklığı | Orta | Düşük |
| Masaüstü kullanımı | Doğal ve rahat | Zayıf |
| Sunucular arası paylaşım | Mümkün ama ideal değil | İdeal |
| Şifreleme | SMB3 ile yerleşik | Ek katman gerekir |
Aynı dizini hem Samba hem NFS ile paylaşmak teknik olarak mümkündür ama izin modelleri çakışabildiği için önerilmez. Sunucular arası paylaşım kuruyorsanız NFS paylaşımı kurulumu yazısı size daha uygun bir yol gösterir.
Kurulum ve Temel smb.conf#
Kuruluma başlayalım. Örnek sunucumuz dosya.firmaniz.local, iç ağ 10.0.0.0/24 olsun.
# Debian / Ubuntu
sudo apt update
sudo apt install -y samba samba-common-bin
# RHEL / Rocky / AlmaLinux
sudo dnf install -y samba samba-client
sudo systemctl enable --now smbd nmbd
Samba'nın tüm yapılandırması /etc/samba/smb.conf dosyasındadır. Varsayılan dosya yüzlerce satır yorumla gelir; sıfırdan temiz bir dosya yazmak hem anlaşılırlığı hem hata ayıklamayı kolaylaştırır. Önce yedekleyin:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orijinal
Global bölüm, tüm paylaşımlar için geçerli varsayılanları belirler:
# /etc/samba/smb.conf
[global]
workgroup = FIRMANIZ
server string = Clou Dosya Sunucusu
netbios name = DOSYA
security = user
map to guest = Never
# Yalnızca iç ağdan ve loopback'ten erişim
interfaces = lo 10.0.0.0/24
bind interfaces only = yes
hosts allow = 127.0.0.1 10.0.0.0/24
hosts deny = 0.0.0.0/0
# Eski ve güvensiz SMB1'i tamamen kapat
server min protocol = SMB2_10
client min protocol = SMB2_10
# İmzalama ve şifreleme
server signing = mandatory
smb encrypt = desired
log file = /var/log/samba/log.%m
max log size = 5000
logging = file
Üç satır özellikle önemlidir. security = user ile her bağlantı kullanıcı adı ve parola ister. map to guest = Never misafir erişimini kapatır — açık bırakılması ağdaki herkesin paylaşımı görmesi demektir. server min protocol = SMB2_10 ise SMB1'i devre dışı bırakır; SMB1 fidye yazılımı saldırılarında yaygın olarak kullanılan, artık desteklenmeyen bir protokoldür ve kesinlikle açık kalmamalıdır.
Yapılandırmayı her değiştirdiğinizde sözdizimini doğrulayın:
testparm -s
sudo systemctl reload smbd
Kullanıcı Yönetimi ve Parolalar#
Samba'nın en çok karıştırılan yanı burasıdır: Samba'nın kendi parola veritabanı vardır ve bu, Linux'un /etc/shadow dosyasından bağımsızdır. Bir kullanıcının Samba'ya bağlanabilmesi için hem sistemde bir Linux hesabı hem de Samba veritabanında bir kaydı olması gerekir.
# Kabuk erişimi olmayan bir sistem kullanıcısı oluştur
sudo useradd -M -s /usr/sbin/nologin ayse
# Aynı kullanıcıyı Samba veritabanına ekle ve parola belirle
sudo smbpasswd -a ayse
# Hesabı etkinleştir
sudo smbpasswd -e ayse
# Mevcut Samba kullanıcılarını listele
sudo pdbedit -L -v
-s /usr/sbin/nologin seçeneği önemlidir: kullanıcı yalnızca dosya paylaşımına erişsin, SSH ile sunucuya giremesin. Dosya sunucusu hesaplarının kabuk erişimi olmasına neredeyse hiçbir zaman gerek yoktur.
Departman bazlı erişim için gruplar kullanın; kullanıcı bazlı izin listeleri kısa sürede yönetilemez hâle gelir:
sudo groupadd muhasebe
sudo usermod -aG muhasebe ayse
# Paylaşım dizinini oluştur ve grup sahipliğini ver
sudo mkdir -p /srv/samba/muhasebe
sudo chown root:muhasebe /srv/samba/muhasebe
sudo chmod 2770 /srv/samba/muhasebe
Yine 2770 içindeki setgid biti, dizinde oluşturulan her yeni dosyanın muhasebe grubunu miras almasını sağlar. Bu tek karakter, "dosyayı Ayşe oluşturdu, Mehmet açamıyor" sorununun büyük bölümünü ortadan kaldırır.
Paylaşım Tanımları#
Şimdi farklı erişim modellerinde üç paylaşım tanımlayalım. Bunları smb.conf dosyasının sonuna ekleyin:
# Departman paylaşımı — yalnızca muhasebe grubu
[muhasebe]
path = /srv/samba/muhasebe
browseable = yes
read only = no
valid users = @muhasebe
create mask = 0660
directory mask = 2770
force group = muhasebe
# Herkese açık okuma, yöneticiye yazma
[ortak]
path = /srv/samba/ortak
browseable = yes
read only = yes
write list = @bilgiislem
valid users = @kullanicilar @bilgiislem
create mask = 0664
directory mask = 2775
# Kişisel dizinler — her kullanıcı yalnızca kendisininkini görür
[homes]
comment = Kişisel Klasör
browseable = no
read only = no
valid users = %S
create mask = 0600
directory mask = 0700
Birkaç parametreyi açalım. valid users = @muhasebe başındaki @ işareti bir grubu ifade eder. write list, salt okunur bir paylaşımda istisnai olarak yazabilecekleri belirtir; okuma varsayılan, yazma istisna olduğunda güvenlik açısından daha temiz bir modeldir. create mask ve directory mask yeni oluşturulan dosyaların izinlerini sınırlar. force group ise dosyanın kimin adına oluşturulduğundan bağımsız olarak grubu sabitler.
[homes] bölümü Samba'nın özel bir yeteneğidir: her kullanıcı bağlandığında kendi ev dizinini kendi adıyla görür, browseable = no sayesinde başkalarının klasörleri listede görünmez. %S değişkeni bağlanan paylaşımın adına, yani kullanıcı adına çözülür.
Değişiklikten sonra:
testparm -s # sözdizimi kontrolü
sudo systemctl reload smbd
sudo smbclient -L localhost -U ayse # paylaşımları listeleyerek doğrula
İstemcilerden Bağlanma#
Windows tarafında Dosya Gezgini'nin adres çubuğuna \\10.0.0.10\muhasebe yazmak yeterlidir. Kalıcı bir sürücü harfi istiyorsanız komut satırından:
net use M: \\10.0.0.10\muhasebe /user:FIRMANIZ\ayse /persistent:yes
Linux istemcilerde cifs-utils paketiyle normal bir dizin gibi bağlayabilirsiniz. Parolayı komut satırına yazmayın; ayrı bir kimlik dosyası kullanın:
sudo apt install -y cifs-utils
# Kimlik dosyasını yalnızca root okuyabilsin
sudo tee /root/.smb-muhasebe > /dev/null <<'EOF'
username=ayse
password=PAROLA
domain=FIRMANIZ
EOF
sudo chmod 600 /root/.smb-muhasebe
sudo mkdir -p /mnt/muhasebe
sudo mount -t cifs //10.0.0.10/muhasebe /mnt/muhasebe \
-o credentials=/root/.smb-muhasebe,uid=1000,gid=1000,vers=3.0
Kalıcı bağlama için /etc/fstab satırı:
//10.0.0.10/muhasebe /mnt/muhasebe cifs credentials=/root/.smb-muhasebe,uid=1000,gid=1000,vers=3.0,_netdev,nofail 0 0
_netdev ve nofail burada da kritiktir; sunucu erişilemezken makinenin açılışta takılmasını engeller. uid ve gid parametreleri, uzak dosyaların yerel tarafta hangi kullanıcıya ait görüneceğini belirler — SMB, POSIX sahipliğini taşımadığı için bu eşlemeyi siz yaparsınız.
macOS tarafında Finder içinde Cmd+K ile smb://10.0.0.10/muhasebe adresini kullanabilirsiniz.
Güvenlik Sertleştirme ve Performans#
Samba'yı internete açmak neredeyse hiçbir durumda doğru değildir. 445 portu sürekli taranan bir porttur ve dosya sunucuları fidye yazılımlarının birincil hedefidir. Güvenlik duvarını dar tutun:
sudo ufw allow from 10.0.0.0/24 to any port 445 proto tcp
sudo ufw deny 445/tcp
sudo ufw deny 139/tcp
Uzaktan erişim gerekiyorsa doğru yöntem SMB'yi açmak değil, kullanıcıyı bir VPN üzerinden iç ağa almaktır. Bunun yanında şu üç ayarı üretimde mutlaka uygulayın: SMB1 kapalı olsun (server min protocol = SMB2_10), imzalama zorunlu olsun (server signing = mandatory) ve misafir erişimi tamamen kapalı kalsın (map to guest = Never).
Performans tarafında Samba varsayılanları modern sürümlerde oldukça iyidir. Yine de büyük dosya transferlerinde şu iki ayar fark yaratabilir:
[global]
# Çekirdek üzerinden sıfır kopyalama (sendfile) ile okuma
use sendfile = yes
# Büyük dosya desteği ve yazma önbelleği davranışı
aio read size = 16384
aio write size = 16384
Sorun yaşarsanız günlükler ilk bakılacak yerdir. Belirli bir istemci için ayrıntılı kayıt açabilirsiniz:
# Anlık bağlantıları ve açık dosyaları gör
sudo smbstatus
# Günlük seviyesini geçici olarak yükselt
sudo smbcontrol smbd debug 3
sudo tail -f /var/log/samba/log.smbd
Kullanıcıların paylaşımı sınırsız doldurmasını istemiyorsanız dosya sistemi kotası kurabilirsiniz; ayrıntılar için disk kotası ve inode yazısına, disk doluluğunu izlemek için disk kullanımı ölçme rehberine bakabilirsiniz.
Sık Yapılan Hatalar ve Tuzaklar#
Linux kullanıcısı oluşturup smbpasswd çalıştırmayı unutmak. En sık karşılaşılan başlangıç hatası budur. Sistem hesabı var ama Samba veritabanında kaydı yoksa kullanıcı sürekli parola sorulmasıyla karşılaşır ve bağlanamaz. sudo pdbedit -L ile kaydın varlığını doğrulayın.
POSIX izinlerini atlayıp yalnızca smb.conf ile uğraşmak. Samba iki katmanı üst üste uygular: önce paylaşım tanımındaki kurallar, sonra dosya sisteminin kendi izinleri. valid users doğru olsa bile dizinin POSIX izni 755 ve sahibi başka bir kullanıcıysa yazma çalışmaz. Her zaman ls -ld /srv/samba/... çıktısını da kontrol edin.
SMB1'i açık bırakmak. Eski bir yazıcı ya da çok eski bir cihaz uyumluluk için SMB1 isteyebilir. Bu talebi kabul etmek yerine cihazı değiştirin ya da izole bir ağa alın; SMB1 bilinen ciddi zafiyetler taşır.
Setgid bitini unutmak. chmod 2770 yerine chmod 770 yazarsanız her kullanıcının oluşturduğu dosya kendi birincil grubuna ait olur ve diğerleri açamaz. Ortak çalışma klasörlerinde bu tek karakter büyük fark yaratır.
Sunucuyu doğrudan internete açmak. 445 portunu dışarı açmak, dosya sunucunuzu sürekli taranan bir hedef hâline getirir. VPN kullanın.
Yedek almayı ihmal etmek. Dosya sunucusu, kurum verisinin merkezinde durur ve fidye yazılımlarının ilk hedefidir. Paylaşımın düzenli, sürümlü ve paylaşımın dışında tutulan bir yedeği olmalıdır.
Sıkça Sorulan Sorular#
Samba kurdum ama Windows paylaşımı göremiyor#
Sırayla dört şeyi kontrol edin. Önce sudo systemctl status smbd nmbd ile servislerin çalıştığını doğrulayın. Sonra testparm -s çıktısında hata olup olmadığına bakın; sözdizimi hatası varsa Samba eski yapılandırmayla çalışmaya devam eder. Ardından güvenlik duvarında 445 portunun istemci ağına açık olduğunu kontrol edin. Son olarak ağ keşfi (network discovery) her zaman güvenilir çalışmadığı için, Dosya Gezgini'ne doğrudan \\SUNUCU_IP\paylasim yazarak deneyin.
Samba parolası Linux parolasıyla aynı mı olmalı#
Hayır, olmak zorunda değildir; ikisi tamamen ayrı veritabanlarında tutulur. Linux parolası /etc/shadow dosyasında, Samba parolası ise Samba'nın kendi TDB veritabanındadır. smbpasswd komutuyla belirlediğiniz parola yalnızca dosya paylaşımı için geçerlidir. Kullanıcıların kafası karışmasın diye aynı parolayı seçebilirsiniz ama sistem bunu otomatik senkronize etmez.
SMB1'i kapatırsam eski cihazlarım çalışmaz mı#
Bazı eski ağ yazıcıları, tarayıcılar ve çok eski Windows sürümleri yalnızca SMB1 konuşur. Ancak SMB1, ciddi güvenlik zafiyetleri nedeniyle uzun süredir önerilmiyor ve büyük fidye yazılımı salgınlarında yayılma yolu oldu. Doğru yaklaşım cihazın yazılımını güncellemek, mümkün değilse cihazı ayrı ve kısıtlı bir ağ segmentine almaktır. SMB1'i tüm ağ için açmak, tek bir cihaz uğruna herkesi riske atmaktır.
Samba mı NFS mi daha hızlı#
Linux sunucular arasında saf verim karşılaştırıldığında NFS genellikle biraz önde olur, çünkü daha az protokol yükü taşır ve POSIX semantiğini doğrudan aktarır. Ancak modern SMB3 aradaki farkı büyük ölçüde kapattı ve çoklu kanal desteğiyle bazı senaryolarda öne bile geçebiliyor. Pratikte seçim hız değil istemci uyumluluğu üzerinden yapılmalıdır: Windows varsa Samba, saf Linux ortamıysa NFS.
Paylaşıma kota nasıl koyarım#
Samba'nın kendi kota mekanizması yerine dosya sisteminin kotasını kullanmak en sağlam yöntemdir. ext4 veya XFS üzerinde kullanıcı ve grup kotalarını açar, ardından setquota ile sınırları belirlersiniz; Samba bu sınırları istemciye doğru şekilde bildirir ve Windows'ta sürücünün doluluk göstergesi kotaya göre görünür. Böylece kota mantığı tek yerde, dosya sistemi katmanında toplanmış olur.
Bağlanabiliyorum ama dosya yazamıyorum#
Bu neredeyse her zaman iki katmandan birinden kaynaklanır. Birincisi paylaşım tanımıdır: read only = no yazılmış mı, kullanıcı write list ya da valid users içinde mi kontrol edin. İkincisi dosya sistemi izinleridir: dizinin sahibi ve grubu ile kullanıcının grup üyeliği uyuşuyor mu, dizinde grup yazma izni (chmod 2770 gibi) var mı bakın. sudo smbstatus çıktısı bağlantının hangi kullanıcı olarak kurulduğunu göstererek doğru katmanı bulmanızı kolaylaştırır.
Kapanış#
Samba, Linux sunucunuzu Windows dünyasının doğal bir parçası hâline getirir ve doğru kurulduğunda yıllarca sorunsuz çalışır. Aklınızda kalması gereken alışkanlıklar şunlar: her Samba kullanıcısı için hem sistem hesabı hem smbpasswd kaydı oluşturun, izinleri gruplar üzerinden yönetip ortak dizinlerde setgid bitini kullanın, SMB1'i kapalı ve misafir erişimini devre dışı tutun, 445 portunu asla internete açmayın ve paylaşımın düzenli bir yedeğini paylaşımın dışında saklayın.
Kendi dosya sunucunuzu kurmak için tam root erişimli VDS ya da ölçeklenebilir bulut sunucu paketlerimizi kullanabilirsiniz. Kurulum, kullanıcı yönetimi ve güvenlik sertleştirmesini bize bırakmak isterseniz sunucu yönetimi hizmetimiz bu işi üstlenir; dosya sunucusunun verisini ayrı bir yerde tutmak için de yedekleme çözümlerimize göz atın.