Android

Ubuntu 18.04 Üzerinde NFS Sunucusu Nasıl Kurulur ve Yapılandırılır

Network File System NFS - Server and Client - Ubuntu Server 18.04

Network File System NFS - Server and Client - Ubuntu Server 18.04

İçindekiler:

Anonim

Ağ Dosya Sistemi (NFS), uzak dizinleri ağ üzerinden paylaşmanızı sağlayan dağıtılmış bir dosya sistemi protokolüdür. NFS ile, sisteminize uzak dizinler bağlayabilir ve uzak makinedeki dosyalarla yerel dosyalarmış gibi çalışabilirsiniz.

NFS protokolü varsayılan olarak şifrelenmez ve Samba'nın aksine, kullanıcı kimlik doğrulaması sağlamaz. Sunucuya erişim, istemcilerin IP adresleri veya ana bilgisayar adları tarafından kısıtlanır.

Bu öğreticide, Ubuntu 18.04'te NFSv4 Sunucusunun nasıl kurulacağını ele alacağız. Ayrıca istemciye bir NFS dosya sisteminin nasıl takılacağını da göstereceğiz.

Ön şartlar

Bu örnekte, Ubuntu 18.04 çalıştıran bir sunucunuz ve diğer herhangi bir Linux dağıtımını çalıştıran bir sunucunuz olduğu varsayılmaktadır. Sunucu ve istemciler özel bir ağ üzerinden birbirleriyle iletişim kurabilmelidir. Barındırma sağlayıcınız özel IP adresleri sunmuyorsa, genel IP adreslerini kullanabilir ve sunucu güvenlik duvarını 2049 numaralı bağlantı noktasında yalnızca güvenilir kaynaklardan gelen trafiğe izin verecek şekilde yapılandırabilirsiniz.

Bu örnekteki makineler aşağıdaki IP'lere sahiptir:

NFS Server IP: 192.168.33.10 NFS Clients IPs: From the 192.168.33.0/24 range

NFS Sunucusunu Ayarlama

NFS sunucusunu kurarak ve yapılandırarak başlayacağız.

NFS sunucusunu yükleme

Paketler dizinini yenileyin ve NFS sunucu paketini yükleyin:

sudo apt update sudo apt install nfs-kernel-server

Kurulum tamamlandığında, NFS hizmetleri otomatik olarak başlayacaktır.

Varsayılan olarak, Ubuntu 18.04'te NFS sürüm 2 devre dışıdır. Sürüm 3 ve 4 etkinleştirildi. Aşağıdaki cat komutunu çalıştırarak bunu doğrulayabilirsiniz:

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

NFSv2 artık oldukça eskidir ve etkinleştirmek için bir neden yoktur.

NFS sunucusu yapılandırma seçenekleri /etc/default/nfs-kernel-server ve /etc/default/nfs-common dosyalarında ayarlanır. Bizim durumumuzda varsayılan ayarlar yeterlidir.

Dosya sistemlerinin oluşturulması

Bir NFSv4 sunucusunu yapılandırırken, genel bir NFS kök dizini kullanmak ve gerçek dizinleri paylaşım bağlama noktasına bağlamak için iyi bir uygulamadır. Bu örnekte, /srv/nfs4 yöneticisini NFS kökü olarak /srv/nfs4 .

NFS bağlantılarının nasıl yapılandırılabileceğini daha iyi açıklamak için iki dizini ( /var/www ve /opt/backups ) farklı yapılandırma ayarlarıyla paylaşacağız.

/var/www/ kullanıcı ve www-data ve /opt/backups grubunun sahibi root .

mkdir komutunu kullanarak dışa aktarma dosya sistemini mkdir :

sudo mkdir -p /srv/nfs4/backups sudo mkdir -p /srv/nfs4/www

Gerçek dizinleri bağlayın:

sudo mount --bind /opt/backups /srv/nfs4/backups sudo mount --bind /var/www /srv/nfs4/www

Bağlama bağlarını kalıcı hale getirmek için /etc/fstab dosyasını açın:

sudo nano /etc/fstab

ve aşağıdaki satırları ekleyin:

/ Etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

Dosya sistemlerini dışa aktarma

Bir sonraki adım, NFS sunucusu tarafından dışa aktarılacak dosya sistemlerini, paylaşım seçeneklerini ve bu dosya sistemlerine erişmesine izin verilen istemcileri tanımlamaktır. Bunu yapmak için /etc/exports dosyasını açın:

sudo nano /etc/exports /etc/exports export dosyası, bir dizinin nasıl dışa aktarılacağını açıklayan yorumları da içerir.

Bizim durumumuzda www ve backups dizinlerini dışa www ve yalnızca 192.168.33.0/24 ağındaki istemcilerden erişime izin vermemiz gerekir:

/ Etc / ihracat

/srv/nfs4 192.168.33.0/24(rw, sync, no_subtree_check, crossmnt, fsid=0) /srv/nfs4/backups 192.168.33.0/24(ro, sync, no_subtree_check) 192.168.33.3(rw, sync, no_subtree_check) /srv/nfs4/www 192.168.33.110(rw, sync, no_subtree_check)

İlk satır /srv/nfs NFS kök dizinini tanımlayan fsid=0 içerir. Bu NFS birimindeki erişime yalnızca 192.168.33.0/24 alt ağındaki istemciler izin verilir. Dışa aktarılan bir dizinin alt dizinleri olan dizinleri paylaşmak için crossmnt seçeneği gereklidir.

İkinci satırda, bir dosya sistemi için birden çok dışa aktarma kuralının nasıl belirtileceği gösterilmektedir. /srv/nfs4/backups dizinini /srv/nfs4/backups ve 192.168.33.0/24 aralığının tamamına yalnızca okuma erişimine ve 192.168.33.0/24 /srv/nfs4/backups hem okuma hem de yazma erişimine izin verir. sync seçeneği, NFS'ye yanıt vermeden önce diske değişiklikler yazmasını söyler.

Son satır açıklayıcı olmalıdır. Mevcut tüm seçenekler hakkında daha fazla bilgi için terminalinize man exports yazın.

Dosyayı kaydedin ve paylaşımları dışa aktarın:

sudo exportfs -ra

/etc/exports dosyasını her değiştirdiğinizde yukarıdaki komutu çalıştırmanız gerekir. Herhangi bir hata veya uyarı varsa, bunlar terminalde gösterilecektir.

Mevcut etkin dışa aktarmaları ve durumlarını görüntülemek için şunu kullanın:

sudo exportfs -v

Çıktı, seçenekleriyle tüm paylaşımları içerecektir. Gördüğünüz gibi /etc/exports dosyasında tanımlamadığımız seçenekler de var. Bunlar varsayılan seçeneklerdir ve değiştirmek isterseniz bu seçenekleri açıkça ayarlamanız gerekir.

/srv/nfs4/backups 192.168.33.3(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/www 192.168.33.110(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4 192.168.33.0/24(rw, wdelay, crossmnt, root_squash, no_subtree_check, fsid=0, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/backups 192.168.33.0/24(ro, wdelay, root_squash, no_subtree_check, sec=sys, ro, secure, root_squash, no_all_squash)

Ubuntu'da root_squash varsayılan olarak etkindir. Bu, NFS güvenliği ile ilgili en önemli seçeneklerden biridir. İstemcilerden bağlanan kök kullanıcıların bağlı paylaşımlarda kök ayrıcalıklarına sahip olmasını engeller. Kök UID ve nogroup nobody / nogroup UID / GID nogroup .

İstemci makinelerindeki kullanıcıların erişebilmesi için NFS, istemcinin kullanıcı ve grup kimliklerinin sunucudakilerle eşleşmesini bekler. Başka bir seçenek de, kullanıcı ve grup kimliklerini adlara ve tam tersine çeviren NFSv4 idmap oluşturma özelliğini kullanmaktır.

Bu kadar. Bu noktada, Ubuntu sunucunuzda bir NFS sunucusu kurdunuz. Artık bir sonraki adıma geçebilir ve istemcileri yapılandırabilir ve NFS sunucusuna bağlanabilirsiniz.

Güvenlik duvarı yapılandırması

192.168.33.0/24 alt UFW erişime izin vermek için güvenlik duvarınızı yönetmek için UFW kullandığınızı varsayarsak, aşağıdaki komutu çalıştırmanız gerekir:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Değişiklik çalışmasını doğrulamak için:

sudo ufw status

Çıktı, 2049 numaralı bağlantı noktasındaki trafiğe izin verildiğini göstermelidir:

To Action From -- ------ ---- 2049 ALLOW 192.168.33.0/24 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6)

NFS İstemcilerini Ayarlama

Artık NFS sunucusu ayarlandı ve paylaşımlar dışa aktarıldı, bir sonraki adımda istemcileri yapılandırın ve uzak dosya sistemlerini bağlayın.

NFS paylaşımını macOS ve Windows makinelerine de ekleyebilirsiniz, ancak Linux sistemlerine odaklanacağız.

NFS istemcisini yükleme

İstemci makinelerde, yalnızca uzak NFS dosya sistemlerini monte etmek için gereken araçları yüklememiz gerekir.

  • Debian ve Ubuntu'ya NFS istemcisi yükleme

    Debian tabanlı dağıtımlarda NFS dosya sistemlerini bağlamak için programlar içeren paketin adı nfs-common . Yüklemek için şunu çalıştırın:

    sudo apt update sudo apt install nfs-common

    CentOS ve Fedora'ya NFS istemcisi yükleme

    Red Hat ve türevlerinde nfs-utils paketini kurun:

    sudo yum install nfs-utils

Montaj dosya sistemleri

/srv/nfs4/www dosya sistemine okuma ve yazma erişimi olan ve /srv/nfs4/backups dosya sistemine salt okuma erişimi olan IP 192.168.33.110 ile istemci makinede çalışacağız.

Bağlama noktaları için iki yeni dizin oluşturun. Bu dizinleri istediğiniz herhangi bir yerde oluşturabilirsiniz.

sudo mkdir -p /backups sudo mkdir -p /srv/www

Dışa aktarılan dosya sistemlerini mount komutuyla bağlayın:

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

Burada 192.168.33.10 , NFS sunucusunun IP'sidir. IP adresi yerine ana bilgisayar adını da kullanabilirsiniz, ancak istemci makine tarafından çözülmesi gerekir. Bu genellikle ana bilgisayar adını /etc/hosts dosyasındaki IP ile eşleyerek yapılır.

Bir NFSv4 dosya sistemi kurarken, /srv/nfs4/backups yerine /srv/nfs4/backups kullanmanız için NFS kök dizinini kullanmanız gerekir.

Mount veya df komutunu kullanarak uzak dosya sistemlerinin başarıyla bağlandığını doğrulayın:

df -h

Komut bağlı tüm dosya sistemlerini yazdırır. Son iki satır bağlı paylardır:

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% / devtmpfs 236M 0 236M 0% /dev tmpfs 244M 0 244M 0% /dev/shm tmpfs 244M 4.5M 240M 2% /run tmpfs 244M 0 244M 0% /sys/fs/cgroup /dev/sda2 1014M 87M 928M 9% /boot tmpfs 49M 0 49M 0% /run/user/1000 192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www

Montajları yeniden başlatma sırasında kalıcı hale getirmek için /etc/fstab dosyasını açın:

sudo nano /etc/fstab

ve aşağıdaki satırları ekleyin:

/ Etc / fstab

192.168.33.10:/backups /backups nfs defaults, timeo=900, retrans=5, _netdev 0 0 192.168.33.10:/www /srv/www nfs defaults, timeo=900, retrans=5, _netdev 0 0

Bir NFS dosya sistemini monte ederken kullanılabilir seçenekler hakkında daha fazla bilgi edinmek için terminalinize man nfs yazın.

Uzak dosya sistemlerini bağlamak için başka bir seçenek, autofs aracını kullanmak veya bir systemd birimi oluşturmaktır.

NFS Erişimini Test Etme

Her birine yeni bir dosya oluşturarak paylaşımlara erişimi test edelim.

İlk olarak, touch komutunu kullanarak /backups dizininde bir test dosyası oluşturmayı deneyin:

sudo touch /backups/test.txt

/backup dosya sistemi salt okunur olarak dışa aktarılır ve beklendiği gibi Permission denied hata iletisini görürsünüz:

touch: cannot touch '/backups/test': Permission denied

Ardından, sudo komutunu kullanarak /srv/www dizinine kök olarak bir test dosyası oluşturmayı deneyin:

sudo touch /srv/www/test.txt

Yine, Permission denied mesajını göreceksiniz.

touch: cannot touch '/srv/www': Permission denied

Uzak sunucudakiyle aynı UID ve GID sahip istemci makinede www-data kullanımınız olduğunu varsayarsak (örneğin, her iki makineye de nginx yüklediyseniz böyle olmalıdır) kullanıcı olarak bir dosya oluşturmak için test edebilirsiniz www-data şununla:

sudo -u www-data touch /srv/www/test.txt

Komut hiçbir çıktı göstermez, bu da dosyanın başarıyla oluşturulduğu anlamına gelir.

/srv/www dizinindeki dosyaları listelediğini doğrulamak için:

ls -la /srv/www

Çıktıda yeni oluşturulan dosya gösterilmelidir:

drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 www-data www-data 0 Jun 23 21:58 index.html -rw-r--r-- 1 www-data www-data 0 Jun 23 22:18 test.txt

NFS Dosya Sisteminin Bağlantısını Kesme

sudo umount /backups

Bağlama noktası /etc/fstab dosyasında tanımlanmışsa, satırı kaldırdığınızdan emin olun veya satırın başına # ekleyerek satırı yorumlayın.

Sonuç

Bu öğreticide, NFS sunucusunun nasıl kurulacağını ve uzak dosya sistemlerinin istemci makinelere nasıl bağlanacağını gösterdik. NFS'yi üretimde uyguluyorsanız ve mantıklı verileri paylaşıyorsanız, kerberos kimlik doğrulamasını etkinleştirmek iyi bir fikirdir.

NFS'ye alternatif olarak, uzak dizinleri bir SSH bağlantısı üzerinden bağlamak için SSHFS'yi kullanabilirsiniz. SSHFS varsayılan olarak şifrelenmiştir ve yapılandırılması ve kullanımı çok daha kolaydır.

Herhangi bir sorunuz varsa yorum bırakmaktan çekinmeyin.

ubuntu nfs dağı terminali