CentOS 8 Samba Derleme
Tags: linux, centos, samba
Published: 2020-07-09 07:52:45

### Başlamadan Dikkat Edilmesi Gerekenler
* Samba için gerekli olan servisler dil bağımlı olduğundan kurulan sunucunun dilinin ingilizce olması gerekmektedir.
* Rpm tabanlı işletim sistemlerinde ssh ile uzak sunucuya bağlanırken çevre değişkenleri ile birlikte fiziksel makinedeki samba-client ayarları, dil ayarları komutları çalıştırırken hatalara neden olabilmektedir. En garanti yöntem olarak sunucunun kendi terminali üzerinde bu komutu çalıştırmak olacaktır.

### Samba Derleme

1- Depo güncellenir ve derlemek için gerekli olan paketler yüklenir.
```
sudo yum config-manager --set-enable  PowerTools
sudo yum update -y
sudo yum groups -y install "Development Tools"
sudo yum -y install epel-release
sudo yum -y install python3-iniparse libldb libtalloc libtdb libtevent python3-devel gnutls-devel libacl-devel openldap-devel pam-devel readline-devel krb5-devel cups-devel
sudo yum -y install python3-devel lmdb-devel lmdb gpgme-devel jansson-devel libarchive-devel rpcgen
```
2- Kurulmak istenen depo versiyonu bit değişkene atanır. Versiyon, [Samba deposundaki](https://download.samba.org/pub/samba/stable/) listeden seçilebilir. (Örneğin: 4.11.6)

Bu aşamadan sonra yapılacak işlemlerde sürekli versiyon bilgisi kullanılacak. Farklı versiyonlar denenmek istediğinde tek tek komutlarda düzenleme yapmak yerine versiyon bilgisini değişkende tutarak $sambaver şeklinde kullanmak kolaylık sağlar.
```
sambaver=4.11.6
```
3- /usr/src dizinine gidilerek samba paketleri buraya çekilir. (Genellikle kaynağından indirilip yeniden derlenmek istenen paketler burada derlenir, darklı bir dizin de kullanılabilir.)
```
cd /usr/src
curl -O https://download.samba.org/pub/samba/stable/samba-$sambaver.tar.gz
```
4- İndirilen tar dosyası açılır ve çıkartılan dizin içerisine gidilir
```
tar xvfz samba-$sambaver.tar.gz
cd samba-$sambaver
```

5- Gerekli optionlar seçilir ve derleme işlemi yapılır
```
./configure --prefix=/usr --localstatedir=/var --with-configdir=/etc/samba --libdir=/usr/lib64 --with-modulesdir=/usr/lib64/samba --with-pammodulesdir=/lib64/security --with-lockdir=/var/lib/samba --with-logfilebase=/var/log/samba --with-piddir=/run/samba --with-privatedir=/etc/samba --enable-cups --with-acl-support --with-ads --with-automount --enable-fhs --with-pam --with-quotas --with-shared-modules=idmap_rid,idmap_ad,idmap_hash,idmap_adex --with-syslog --with-utmp --with-dnsupdate
make
make install
```

6- Samba servisi oluşturulur
```
echo """[Unit]
Description=Samba AD Daemon
Wants=network-online.target
After=network.target network-online.target rsyslog.service
[Service]
Type=forking
PIDFile=/run/samba/samba.pid
LimitNOFILE=16384
ExecStart=/usr/sbin/samba --daemon
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target""" > samba4.service
sudo mv samba4.service /usr/lib/systemd/system/
```
7- Bu aşamada samba kurulumunu derleyerek tamamlamış oluyoruz. Fakat henüz bir domain mevcut değil. Yeni bir domain oluşturmak için aşağıdaki komutu kullanabiliriz.
```
samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=DUYGULAB.TEST.NET --domain=DUYGULAB --adminpass=Passw0rd
```

8- Samba servisi yeniden başlatılır ve başlangıçta çalışması için aktif edilir. 
```
systemctl start samba4.service
systemctl enable samba4.service
systemctl status samba4.service
```