Centos 7.5 üzerine Samba Server Kurulumu ve Parola korumalı/korumasız dosya paylaşımı
Translate This Page:
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 paket kurulumu(Centos&Ubuntu)
- Samba sunucusunun nasıl yapılandırılacağı
- Samba Server için Grup ve kullanıcı oluşturma işlemleri
- Samba Server config dosyası düzenleme
- Samba Server üzerinde Parola korumalı dosya paylaşımı
- Samba Server üzerinde Şifresiz dosya paylaşımı
- Samba Server için Linux Firewall yapılandırması
- Samba server için SELINUX yapılandırması
- Samba server servislerinin kontrolü
- Samba server versiyon kontrolü
- Linux Client makineden samba paylaşıma bağlantı
- Samba Server monitoring komutları
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ı
| Lab Setup:
|
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
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.
[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.
İ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
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
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
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
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
#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 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
bunun ADS için olanı var mı ?
AD authentication dan bahsediyorsanız evet var .