Linux

Centos 7.5 üzerine Samba Server Kurulumu ve Parola korumalı/korumasız dosya paylaşımı

Samba server setup

Translate This Page:

Select your language: 

Bu gün Centos 7.5 üzerine Samba server (version 4.8.3) Kurulumunun nasıl yapıldığını inceleyeceğiz.

İnceleyeceğimiz başlıca konular ;

Samba nedir?

Samba, Linux (Unix) işletim sistemleri ile Windows(XP,NT) işletim sistemleri arasındaki iletişim kuran bir ağ sunucusu yazılımıdır. Linux’ta arka planda çalışan bu deamon windows istemcilerinin samba kurulu olan

sunucuda paylaşıma açılmış dosya ve dizinlere ulaşılmasına olanak tanır bunun yanında istemcilerin yazıcı isteklerinide yönetebilir. Tam olarak SAMBA yapılandırılmış bir Linux sunucusu, genel olarak dizinleri paylaştırabilir, aktif dizin servisi(ADS) verebilir fakat ayrıca PDC(birincil alan deneticisi) olarak da çalışabilir, Windows XP/2000/NT/98/95 istemcileri ile kullanıcı onayı yapar, kaynakları(dizinleri ve yazıcıları) paylaştırır ve kullanıcı oturumlarını uyarlar. Samba projesinde çalışanların söylediği “Samba, Opening Windows to a Wider World!”. Samba projesinin arkasında yatan düşünce birlikte işlerlik, birlikte çalışabilirlik kavramını yerleştirmektir. Samba windows istemcileri(clients) için dosya ve yazıcı servisi sağlamanın dışında istemciler için işlevsellik, yardımcı uygulamalar içerir.Kullanıcıların görüş ve önerileri(feedback) sambanın gelişmesinde önemli rol oynar.

Sambanın yapabildikleri:

  • File server ( Windows’tan Linux’e, Linux’tan Windows’a )
  • Print server ( Windows’tan Linux’e, Linux’tan Windows’a )
  • PDC (windows için primary domain controller)
  • WIMS sunucu
  • Master Browser
  • Domain Browser
Samba Server detayları

  • Package sambaPort no :137,138,139
  • Script : /etc/initd/smb
  • Service name : smb
  • Daemon : smbd
  • Configuration file : /etc/samba/smb.conf
Lab Setup:

  • RHEL7 or Cent0S7 installed server – 2 Nos.
  • Network enabled
  • Firewall a. selinux are disabled
  • Hostnames : linuxl (sever)and linux2 (client)
Samba topology
Samba topology

Artık Kuruluma başlayabiliriz ;
Aşağıdaki komut ile Centos sunucumuza samba server için gerekli dosyaları indiriyoruz.

#Centos Üzerine samba server için gerekli dosyaları indiriyoruz.
$yum install samba samba-client samba-common –y

#Ubuntu Üzerine kurulum için gerekli komut
$apt-get install -y samba samba-common python-glade2 system-config-samba

#Samba serverımızın orjinal config dosyasını her ihtimale karşı yedekliyoruz.
$mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp

Samba install

Yüklenen Samba paket kontrolünu yapıyoruz.

[root@localhost ~]# rpm -qa | grep samba
samba-common-libs-4.8.3-4.el7.x86_64
samba-common-tools-4.8.3-4.el7.x86_64
samba-4.8.3-4.el7.x86_64
samba-libs-4.8.3-4.el7.x86_64
samba-common-4.8.3-4.el7.noarch
samba-client-4.8.3-4.el7.x86_64
samba-client-libs-4.8.3-4.el7.x86_64


[root@localhost ~]# yum list installed | grep samba
samba.x86_64                            4.8.3-4.el7                    @base
samba-client.x86_64                     4.8.3-4.el7                    @base
samba-client-libs.x86_64                4.8.3-4.el7                    @base
samba-common.noarch                     4.8.3-4.el7                    @base
samba-common-libs.x86_64                4.8.3-4.el7                    @base
samba-common-tools.x86_64               4.8.3-4.el7                    @base
samba-libs.x86_64                       

Eğer Sambayı Serverınızdan silmek isterseniz aşağıdaki komutları kullanabilirsiniz.

$yum remove samba*

Yeni bir Configuration dosyası oluşturuyoruz.

#nano /etc/samba/smb.conf

Oluşturduğumuz dosyanın içerisine Samba sunucumuzun Global Ayarlarını giriyoruz.

Aşağıdaki Global dosyası oluşturulmadan yapılandırmaya devam etmeyiniz aksi takdirde Firewall ve samba parametrelerinde sorun yaşarsınız.
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = centos
security = user
map to guest = bad user
dns proxy = no

Ctrl+X diyerek kayıt edip çıkıyoruz.

Samba Serverda çalışan servisler

nmbd: nmbd programları, NetBIOS (Ağ Temel Giriş / çıkış sistemi) ad desteği ve tarama desteği sağlar. Windows Internet Ad Hizmeti’nden (WINS) sonra görünen ve göz atmaya yardımcı olan bir arka plan. Ama samba belgelerine göre, başlangıçtaki ilk daemon olmalı.
Smbd: Dosya aktarımlarını ve kimlik doğrulamasını yönetir.
Winbind: Microsoft Windows Etki Alanı üyeliği için kullanılmaktadır.

Servislerin kontrolünü yapıyoruz.

root@localhost ~]# service nmb status
nmbd is stopped

[root@localhost ~]# service smb status
smbd is stopped

Henüz servislerimizi başlatmadığımız için stop durumdalar. 

Yapılandırma dosyası:
Ana yapılandırma dosyası smb.conf dosyasıdır ve yapılandırma dosyasının yolu /etc/samba/smb.conf şeklindedir ve aşağıdaki bölümlere ayrılmıştır.

Örnek bazı kullanımlar aşağıdaki gibi dir.

[netlogon]
         comment = Network Logon Service
            path = /var/lib/samba/netlogon

[homes]
         comment = Home Directories
       read only = No
     create mask = 0640
  directory mask = 0750
      browseable = No

[cdrom]
         comment = Linux CD-ROM
            path = /media/cdrom
         locking = No

[Apps]

         comment = Programlar
            path = /Apps
     create mask = 0755
  directory mask = 0755

Burada kullanılan Belirteç Tag’lerinin anlamları aşağıdaki gibidir.

[Global]    : Genel samba yapılandırma parametreleri.

[homes]    : Kullanıcıların home dizinlerine erişimini yapılandırır.

[printers] : Paylaşılan yazıcılarla ilgili yazıcı ve yazıcı girişlerini yapılandırmak için kullanılır.

[shares]   : Mevcut dosya ve diğer paylaşımları yapılandırır.

[netlogon] : Netlogon Name bilgileri yapıladırılır.

[cdrom]    : Bir CD sürücü paylaşılacak ise kullanılır.

[Apps]     : Paylaşılacak bir uygulama için kullanılır.

 

SAMBA Conf Dosyasında kullanılabilecek parametreler.

nano /etc/samba/smb.conf

[global] : Genel Samba server ayarlarını içeren kısım
workgroup = MYGROUP Çalışma gurubunun adı
server string = Developer Dosya sunucusu : Önemi yoktur Sadece bilgi yazdırır paylaşıma bağlanan kişilerin penceresinde yazar.
log file = /var/log/samba.%m : Samba server’ın loglarının duracağı dizini belirtir.En sondaki ‘%m’ ise Sambaya bağlanan PC lerin isimlerini işaret eder.Örneğin: Samba server a serdar adında bir kişi bağlandığında o kişinin log dosyası /var/log/samba.serdar şeklinde durur.
max log size = 50: Kişinin log dosyası 50 KB ı geçince log dosyasını arşivleyip yeni bir log dosyası açar.
dns proxy = No
hosts allow = 192.168.1.20, 192.168.2.20, 127. : Hangi iplerden server’a giriş yapılabileceğini belirtir.
Burdaki örnekte server’a bağlanan kişinin ip si atıyorum 10.0.10.* ise server’a bağlanamaz.
[Projeler] : Paylaştığımız dizinin kullanıcıya görünen ismi
comment = Open source projeler : Paylaşım hakkında yorum
path = /mnt/projects : Paylaşılan dizinin yolu.
read only = yes : Paylaşımın sadece okunabilir olarak ayarlanmasını sağlar.Böylelikle kimse paylaşılan dizine yazamaz.
guest ok = Yes : Paylaşılan dizine herkes girebilir.
Comment = paylaşımda görünecek açıklama
Path = paylaşımın nerede olduğu
Writeable = paylaşıma izin verilen kişilereyazma hakkının verilip verilmeyecği
Browseable =  yes/no paylaşıma izin verilenkişiler dışındakilerin paylaşımı görmesine izin verilip verilmeyeceği
Public = yes/no herkes tarafından kullanımaaçılıp açılamayacağı
Guest = yes/no misafir kullanıcılara erişimizninin verilip verilmeyeceği
Admin users = x y belirtilen kullanıcılara (xve y kullanıcılarına) paylaştırılan dizinler üzerinde root yetkisi verilir
Valid users = x @root paylaşım izni verilenkullanıcılar belirtilir
İnvalid users = z paylaşım izni verilmeyecekkullanıcılar belirtilir
Write list = x y @root yazma izni verilenkullanıcı ve grupları (x ve y kullanıcı ile root grubuna) belirtir
Read List = x y @root okuma izni verilenkullanıcı ve grupları belirtir
Max connection = 10 belirtilen paylaşıma aynıanda bağlanabilecek maksimum kullanıcı sayısını belirtir
Create mask = 0777 dosyaların hangi mode daaçılacağını belirtir

Samba üzerinde Parola korumalı dosya paylaşım

Samba serverımız üzerinde parola korumalı dosya paylaşımını yapılandıracağız ben samba dosya paylaşımını Ana root “/” üzerinde /samba adında bir klasör oluşturacağım ve paylaşım yapacağım şifreli ve şifresiz tüm klasörleri bunun içerisinde oluşturacağım.
Dizin yapımız işlemlerimiz tamamlandığında aşağıdaki gibi olacak.

Samba directory
İlk olarak günveli (Parola Korumalı) Samba paylaşımı için bir hesap ve yeni eklenecek hesapları kolay yönetebilmek için bir samba grubu oluşturuyoruz.

#Yeni bir Kullanıcı oluşturuyorum serdar adında
$useradd serdar

#Bir grup oluşturuyorum smbgrp adında
$groupadd smbgrp

#serdar Kullanıcısını oluşturduğum gruba dahil ediyorum.
$usermod -a -G smbgrp serdar

#Alvima kullanıcısı için bir parola belirliyorum.
$smbpasswd -a serdar

samba user add

Aşağıdaki komut ile Ana Root dizininde Samba adında bir klasör ve içerisinede secure adında bir alt klasör oluşturuyorum ve Samba servislerini başlatıyoruz.

cd /
mkdir -p /samba/secure

Samba /secure klasörü için oluşturduğumuz smbgrp içindeki serdar user hesabını klasörün sahibi yapıyoruz.

$chown -R serdar:smbgrp /samba/
$chmod -R 0770 /samba

Samba Share Folder

Not : Eğer Selinux açık ise Selinux üzerinde samba klasörüne gerekli izinleri veriyoruz.

$chcon -t samba_share_t /samba
chcon: can't apply partial context to unlabeled file ‘samba/secure’

#Eğer Bu hatayı alıyorsanız Slinux Firewall Kapalıdır uyarı önemli değildir.

Samba conf dosyasını Editliyoruz.

nano  /etc/samba/smb.conf
[secure]
path = /samba/secure
valid users = @smbgrp
guest ok = no
writable = yes
browsable = yes

samba Secure sharing

Aşağıdaki komutları çalıştırarak ilgili servisleri başlatıyoruz

systemctl enable smb.service
systemctl enable nmb.service
systemctl restart smb.service
systemctl restart nmb.service

Samba üzerinde Parola korumasız(Şifresiz) dosya paylaşımı

Samba conf dosyasını Editliyoruz

#nano  /etc/samba/smb.conf

Aşağıdaki kodları ekliyoruz

[Anonymous]
#Paylaşacağımız dosyanın yolunu Path böümüne giriyoruz
path = /samba/anonymous
browsable =yes
writable = yes
guest ok = yes
read only = no

Samba Server dosya paylaşımı için Firewall yapılandırması

Eğer samba kurduğumuz server üzerinde Firewall açık ise
Port bazlı izin vermek için  ;

firewall-cmd --permanent --add-port=137/tcp 
firewall-cmd --permanent --add-port=138/tcp
firewall-cmd --permanent --add-port=139/tcp
firewall-cmd --permanent --add-port=445/tcp
firewall-cmd --permanent --add-port=901/tcp
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-12-13 14:37:09 +03; 4s ago
     Docs: man:firewalld(1)
 Main PID: 17362 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─17362 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Dec 13 14:37:08 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Dec 13 14:37:09 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
[root@localhost ~]# firewall-cmd --permanent --add-port=137/tcp
Warning: ALREADY_ENABLED: 137:tcp
success
[root@localhost ~]# firewall-cmd --permanent --add-port=138/tcp
Warning: ALREADY_ENABLED: 138:tcp
success
[root@localhost ~]# firewall-cmd --permanent --add-port=139/tcp
Warning: ALREADY_ENABLED: 139:tcp
success
[root@localhost ~]# firewall-cmd --permanent --add-port=445/tcp
Warning: ALREADY_ENABLED: 445:tcp
success
[root@localhost ~]# firewall-cmd --permanent --add-port=901/tcp

Kontrol için aşağıdaki komutu kullanabilirsiniz.

$ iptables -L –n

Chain IN_public_allow (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:137 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:138 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:139 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:445 ctstate NEW

Chain IN_public_deny (1 references)
target     prot opt source               destination

Centos Firewall’a servis bazlı izin vermek için ;

firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd –reload

Eğer Firewall’ı devre dışı bırakmak isterseniz.

systemctl status firewalld
systemctl stop firewalld

#Bu komut disable eder restart sonrası tekrar FW başlamaz
systemctl disable firewalld

Samba Server dosya paylaşımı için Selinux (Security-Enhanced Linux)Firewall yapılandırması 

Selinux Aktif durumdaysa file izini için aşağıdaki komutları çalıştırıyoruz. Burada /samba olarak girdiğim isim yukarıda oluşturmuş olduğum samba dizinin adı dı dır . samba klasörümün altında secure ve nonymous Klasörlerimde bulunmaktadır.

$ ls -ldZ /samba
$chcon -R -t samba_share_t /samba
$ls -ldZ /samba
Yukarıdaki işlemi yapmazsanız paylaşım ekranı gelir fakat girdiğiniz parola ve hesap bilgilerini kabul etmez.

Eğer Selinux Firewall’ı devre dışı bırakmak isterseniz.

Selinux Servisinin durumunu gösterir
sestatus  

nano /etc/sysconfig/selinux
#Aşağıdaki alanı disabled yapıyoruz
SELINUX=disabled

 

selinux disabled

Bu işlemin devreye girmesi için makinenin restart edilmesi zorunludur.
#Aşağıdaki komut ile Makinemizi restart ediyoruz. 
$reboot

Linux Client bir makineden Samba paylaşıma bağlantı sağlayacaksanız ;

Client Makineye Samba kurulumu yapıyoruz.

yum -y install samba samba-client cifs-utils

Aşağıdaki komut seti kullanılarak bağlantı kurulabilir.

smbclient //<ServerIP>/<PalasimAdi> -U <Bağlanacak Hesap>

[root@localhost ~]#smbclient -L //10.0.11.46/secure -U serdar
Enter serdar's password: ****
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.4-68.el6]
smb: \>

Samba server’a yapılan bağlantıları görüntüleme

Smb servisini canlı olarak görüntüleyerek access ve denny işlemlerini monitör eder

[root@localhost ~]# watch smbsta

Samba live monitoring

Samba Server’a bağlı bilgisayarları görüntüler.

[root@localhost ~]# netstat -tp | grep smbd
tcp        0      0 localhost.:microsoft-ds cobmrd056.xxx.:54473 ESTABLISHED 2302/smbd
tcp        0      0 localhost.:microsoft-ds cobmrad01.xxx.:62606 ESTABLISHED 2373/smbd
tcp        0      0 localhost.:microsoft-ds 10.0.11.16:58659       ESTABLISHED 4077/smbd
tcp        0      0 localhost.:microsoft-ds testpc01.xxx.h:56247 ESTABLISHED 2557/smbd


Samba Server Paylaşılan dizinleri ve dosyaları görüntüleme komutları

[root@localhost ~]# smbstatus --shares

Service      pid     Machine       Connected at                     Encryption   Signing
---------------------------------------------------------------------------------------------
IPC$         2557    10.0.11.72    Fri Dec 14 01:55:11 PM 2018 +03  -            -
secure       2302    10.0.11.56    Fri Dec 14 01:52:12 PM 2018 +03  -            -
secure       2557    10.0.11.72    Fri Dec 14 01:55:23 PM 2018 +03  -            -
Anonymous    2373    10.0.10.42    Fri Dec 14 01:52:51 PM 2018 +03  -            -
Anonymous    2557    10.0.11.72    Fri Dec 14 01:55:12 PM 2018 +03  -            -

Samba Server durum görüntüleme komutları

[root@localhost ~]# smbstatus 

Daha detaylı bir listeleme için aşağıdaki parametreler kullanılabilir.
[root@localhost ~]#Smbstatus -b
[root@localhost ~]#smbstatus –v
[root@localhost ~]#smbstatus -s

 

Serdar Bayram

Bu yazı blog üzerinde Serdar Bayram tarafından hazırlanıp paylaşılmıştır. 2009 yılında açılan blogum kısa zaman içerisinde paylasımları ile dikkat cekip büyük bir izleyici kitlesine sahip olmuştur.

İlgili Makaleler

2 Yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu