Linux

Как да инсталирате и конфигурирате NFS сървър на Ubuntu 20.04

Как да инсталирате и конфигурирате NFS сървър на Ubuntu 20.04

NFS или Network File System е разпределен протокол на файлова система, който ви позволява да споделяте директории в мрежа. С NFS можете да монтирате отдалечени директории на вашата система и да работите с файловете на отдалечената машина, сякаш са локални файлове.

По подразбиране протоколът NFS не е криптиран и не осигурява удостоверяване на потребителя. Достъпът до сървъра е ограничен от IP адресите на клиента или имената на хостове.

Тази статия обяснява как да настроите NFSv4 сървър на Ubuntu 20.04. Ще ви покажем и как да монтирате файлова система NFS на клиентската машина.

Предпоставки #

Ще използваме две машини, едната работи с Ubuntu 20.04, който ще действа като NFS сървър, и друг, който изпълнява всяка друга Linux дистрибуция, на която ще монтираме споделянето. Сървърът и клиентите трябва да могат да комуникират помежду си през частна мрежа. Можете да използвате публични IP адреси и да конфигурирате защитната стена на сървъра, за да разрешите трафик на порт 2049 само от надеждни източници.

Машините в този пример имат следните IP адреси:

IP на NFS сървъра: 192.168.33.10 IP адреса на NFS клиенти: От 192.168.33.0/24 диапазон 

Настройте NFS сървъра #

Първата стъпка е да настроите NFS сървъра. Ще инсталираме необходимите пакети, ще създадем и експортираме директориите на NFS и ще конфигурираме защитната стена.

Инсталиране на NFS сървъра #

Пакетът NFS сървър осигурява поддръжка на потребителско пространство, необходима за стартиране на сървъра на ядрото NFS. За да инсталирате пакета, изпълнете:

sudo apt актуализацияsudo apt инсталирайте nfs-kernel-server

След като инсталацията приключи, услугите на NFS ще стартират автоматично.

На Ubuntu 20.04, NFS версия 2 е деактивирана. Версии 3 и 4 са активирани. Можете да проверите това, като изпълните следното котка команда:

sudo cat / proc / fs / nfsd / версии
-2 +3 +4 +4.1 +4.2 

NFSv2 вече е доста стар и няма причина да го активирате.

Конфигурацията на NFS сървъра е дефинирана в / etc / default / nfs-kernel-server и / etc / default / nfs-common файлове. Настройките по подразбиране са достатъчни за повечето ситуации.

Създаване на файлови системи #

Сървърът NFSv4 използва глобална коренна директория и експортираните директории са относителни към тази директория. Можете да свържете точката за монтиране на споделяне с директориите, които искате да експортирате, чрез свързване на монтиране.

В този пример ще зададем / srv / nfs4 директория като корен на NFS. За да обясним по-добре как могат да бъдат конфигурирани монтажите NFS, ще споделим две директории (/ var / www и / opt / архиви) с различни конфигурационни настройки. The / var / www / е собственост на потребителя www-данни, и / opt / архиви е собственост на корен.

Първо създайте основната директория и споделените точки за монтиране:

sudo mkdir -p / srv / nfs4 / архивиsudo mkdir -p / srv / nfs4 / www

Свържете монтирането на директориите към точките за монтиране на споделяне:

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

За да направите конзолите за свързване постоянни при рестартиране, отворете / и т.н. / fstab файл:

sudo nano / etc / fstab

и добавете следните редове:

/ и т.н. / fstab
/ opt / backups / srv / nfs4 / backups none bind 0 0 / var / www / srv / nfs4 / www none bind 0 0 

Експортиране на файловите системи #

Следващата стъпка е да добавите файловите системи, които ще бъдат експортирани, и на клиентите да бъде разрешен достъп до тези споделяния в / и т.н. / износ файл.

Всеки ред за експортирана файлова система има следната форма:

експортиране на хост (опции) 

Където износ е експортираната директория, домакин е име на хост или IP адрес / диапазон, които имат достъп до експортирането, и настроики са опциите за хост.

Отвори / и т.н. / износ файл и добавете следните редове:

sudo nano / и т.н. / износ
/ и т.н. / износ
192 Серия.168.33.0/24 (rw, sync, no_subtree_check, crossmnt, fsid = 0) / srv / nfs4 / архиви 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.20 (rw, sync, no_subtree_check) 

Първият ред съдържа fsid = 0 опция, която дефинира коренната директория на NFS (/ srv / nfs4). Достъпът до този том на NFS е разрешен само на клиентите от 192.168.33.0/24 подмрежа. The crossmnt опцията се изисква за споделяне на директории, които са поддиректории на експортирана директория.

Вторият ред показва как да зададете множество правила за експортиране за една файлова система. Достъпът за четене е разрешен за цялото 192.168.33.0/24 обхват, както и достъп за четене и запис само до 192.168.33.3 IP адрес. The синхронизиране опция казва на NFS да запише промени на диска, преди да отговори.

Последният ред е обяснителен. За повече информация относно всички налични опции тип човек изнася във вашия терминал.

Запазете файла и експортирайте споделянията:

sudo exportfs -ar

Трябва да стартирате командата по-горе всеки път, когато модифицирате / и т.н. / износ файл. Ако има някакви грешки или предупреждения, те ще бъдат показани на терминала.

За да видите текущия активен износ и състоянието им, използвайте:

sudo exportfs -v

Резултатът ще включва всички акции с техните опции. Както можете да видите, има и опции, които не сме дефинирали в / и т.н. / износ файл. Това са опции по подразбиране и ако искате да ги промените, ще трябва изрично да зададете тези опции.

/ srv / nfs4 / архиви 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.20 (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 / архиви 192.168.33.0/24 (ro, wdelay, root_squash, no_subtree_check, sec = sys, ro, secure, root_squash, no_all_squash) 

На Ubuntu, root_squash е активиран по подразбиране. Това е една от най-важните опции относно сигурността на NFS. Той предотвратява root потребители, свързани от клиентите, да имат root права на монтираните споделяния чрез картографиране на root UID и GID да се Никой/nogroup UID/GID.

За да имат достъп потребителите на клиентските машини, NFS очаква идентификаторите на потребителя и групата на клиента да съвпадат с тези на сървъра. Друга възможност е да използвате функцията за идентификация на NFSv4, която превежда идентификатори на потребители и групи в имена и обратното.

Това е. На този етап сте настроили NFS сървър на вашия сървър на Ubuntu. Вече можете да преминете към следващата стъпка и да конфигурирате клиентите и да се свържете с NFS сървъра.

Конфигурация на защитната стена #

Ако инсталирате Jenkins на отдалечен сървър на Ubuntu, който е защитен от защитна стена, ще трябва да активирате трафика на NFS порта:

sudo ufw позволяват от 192.168.33.0/24 до всеки порт nfs

Проверете промяната:

sudo ufw статус

Резултатът трябва да покаже, че трафикът на порт 2049 е позволено:

Към действие от - ------ ---- 2049 ПОЗВОЛЯВА 192.168.33.0/24 22 / tcp ALLOW Anywhere 22 / tcp (v6) ALLOW Anywhere (v6) 

Настройте клиентите на NFS

Сега, когато NFS сървърът е настроен и споделянията се експортират, следващата стъпка е да конфигурирате клиентите и да монтирате отдалечените файлови системи.

Ще се съсредоточим върху Linux системи, но можете също да монтирате NFS споделянето на macOS и Windows машини.

Инсталиране на NFS клиент #

На клиентските машини трябва да инсталираме само инструментите, необходими за монтиране на отдалечена файлова система NFS.

Монтиране на файлови системи #

Ще работим на клиентската машина с IP 192.168.33.20, която има достъп за четене и запис до / srv / nfs4 / www файлова система и достъп само за четене до / srv / nfs4 / архиви файлова система.

Създайте две нови директории за точките на монтиране:

sudo mkdir -p / архивиsudo mkdir -p / srv / www

Можете да създавате директориите на всяко място, което искате.

Монтирайте експортираните файлови системи с монтиране команда:

sudo mount -t nfs -o vers = 4 192.168.33.10: / архиви / архивиsudo mount -t nfs -o vers = 4 192.168.33.10: / www / srv / www

Където 192.168.33.10 е IP на NFS сървъра. Можете също да използвате името на хоста вместо IP адреса, но трябва да бъде разрешимо от клиентската машина. Това обикновено се прави чрез картографиране на името на хоста към IP в / etc / hosts файл.

Когато монтирате файлова система NFSv4, пропуснете основната директория на NFS. Използвайте / архиви, вместо / srv / nfs4 / архиви.

Проверете дали отдалечените файлови системи са монтирани успешно, като използвате или монтирането, или df команда:

df -h

Командата ще отпечата всички монтирани файлови системи. Последните два реда са монтираните споделяния:

Размер на използваната файлова система Наличност Използване% Монтиран на udev 951M 0 951M 0% / dev tmpfs 199M 676K 199M 1% / run / dev / sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% / dev / shm tmpfs 5.0M 0 5.0M 0% / стартиране / заключване tmpfs 994M 0 994M 0% / sys / fs / cgroup / dev / sda1 456M 197M 226M 47% / boot tmpfs 199M 0 199M 0% / run / user / 1000 192.168.33.10: / архиви 124G 2.8G 115G 3% / архиви 192.168.33.10: / www 124G 2.8G 115G 3% / srv / www

За да направите монтирането постоянно за рестартиране, отворете / и т.н. / fstab файл и добавете следните редове ::

sudo nano / etc / fstab
/ и т.н. / fstab
192.168.33.10: / резервни копия / архивиране на nfs по подразбиране, timeo = 900, retrans = 5, _netdev 0 0 192.168.33.10: / www / srv / www nfs по подразбиране, timeo = 900, retrans = 5, _netdev 0 0 

За информация относно наличните опции при монтиране на файлова система NFS напишете човек nfs във вашия терминал.

Друга възможност за монтиране на отдалечени файлови системи е да се използва или autofs инструмент или за създаване на systemd единица.

Тестване на NFS достъп #

Нека тестваме достъпа до споделянията, като създадем нов файл за всеки от тях.

Първо, опитайте се да създадете тестов файл в / архиви директория с помощта на докосване команда:

sudo touch / архиви / тест.текст

The / архивиране файловата система се експортира като само за четене и както се очаква ще видите a Разрешението е отказано съобщение за грешка:

докосване: не може да се докосне „/ архиви / тест“: Разрешението е отказано 

След това опитайте да създадете тестов файл в / srv / www директория като корен, използвайки Судо команда:

sudo touch / srv / www / test.текст

Отново ще видите Разрешението е отказано съобщение.

touch: не може да се докосне '/ srv / www': Разрешението е отказано 

Ако си спомняте, / var / www директория е собственост на www-данни потребител и този дял има root_squash набор от опции, който преобразува основния потребител в Никой потребител и nogroup група, която няма разрешения за запис на отдалеченото споделяне.

Ако приемем, че имате www-данни използване на клиентската машина със същото UID и GID както на отдалечения сървър (което трябва да се случи, ако например сте инсталирали nginx и на двете машини), можете да опитате да създадете файл като потребител www-данни:

sudo -u www-data touch / srv / www / test.текст

Командата няма да покаже изход, което означава, че файлът е създаден успешно.

За да го проверите, избройте файловете в / srv / www директория:

ls -la / srv / www

Резултатът трябва да показва новосъздадения файл:

drwxr-xr-x 3 www-data www-data 4096 10 април 22:18 . drwxr-xr-x 3 корен корен 4096 10 април 22: 29 ... -rw-r - r-- 1 www-data www-data 0 10 април 21:58 индекс.html -rw-r - r-- 1 www-data www-data 0 10 април 22:18 тест.текст 

Демонтиране на NFS файлова система #

Ако отдалеченото споделяне на NFS вече не е необходимо, можете да го демонтирате като всяка друга монтирана файлова система, използвайки umount команда.

Например, за да демонтирате / архивиране споделете, ще изпълните:

sudo umount / архиви

Ако точката на монтиране е дефинирана в / и т.н. / fstab файл, не забравяйте да премахнете реда или да го коментирате, като добавите # в началото на реда.

Заключение №

Показахме ви как да настроите NFS сървър и как да монтирате отдалечените файлови системи на клиентските машини. Ако внедрявате NFS в производството и споделяте разумни данни, е добра идея да активирате kerberos удостоверяване.

Като алтернатива на NFS можете да използвате SSHFS за монтиране на отдалечени директории през SSH връзка. SSHFS е криптиран по подразбиране и е много по-лесен за конфигуриране и използване.

Чувствайте се свободни да оставите коментар, ако имате въпроси.

Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...
Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...