mount.nfs: сервер заборонений у доступі під час монтажу на машинах Ubuntu?


64

У мене три машини -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

і всі ці машини мають Ubuntu 12.04, встановлений у ній, і у мене є кореневий доступ до всіх цих трьох машин.

Тепер я маю робити внизу речі на своїх вищезгаданих машинах -

Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
 sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/

Я вже створив /opt/exhibitor/confкаталог на всіх цих трьох машинах, як згадувалося вище.

Зараз я намагаюся створити Точку Гори. Тому я дотримувався нижченаведеного процесу -

Встановіть файли підтримки NFS та сервер ядра NFS на всіх вищезазначених машинах

$ sudo apt-get install nfs-common nfs-kernel-server

Створіть спільний каталог на всіх вищезазначених трьох машинах

$ mkdir /opt/exhibitor/conf/

Редагував /etc/exportsта додав такий запис у всіх перелічених трьох машинах -

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/opt/exhibitor/conf/     10.66.136.129(rw)
/opt/exhibitor/conf/     10.66.138.181(rw)
/opt/exhibitor/conf/     10.66.138.183(rw)

Я спробував встановити на machineA, як нижче, від machineB і machineC, і це дає мені цю помилку-

root@machineB:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

root@machineC:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

Чи /etc/exportsдобре виглядав мій файл? Я майже впевнений, що я зіпсував свій exportsфайл. Оскільки я маю однаковий вміст у всіх трьох машинах у файлі експорту.

Будь-яка ідея, що я тут роблю? І який тут буде правильний /exportsфайл?


1
FYI подвійні перевірки дозволів для хоста / клієнта. Якщо хост NFS має дозволи 0750або 0700тоді клієнт, який намагається встановити, дуже ймовірно не вдасться із цим самим повідомленням про помилку. Я змінив хост з 0750на, 0755а потім помилка пішла і все було добре.
Тревор Бойд Сміт

Відповіді:


70

exportfs

Коли ви створюєте /etc/exportsфайл на сервері, вам потрібно переконатися, що ви експортуєте його. Зазвичай ви хочете виконати цю команду:

$ exportfs -a

Це експортує всі записи у файлі експорту.

показувати

Інша річ, яку я часто роблю, - це з інших машин, я перевіряю будь-яку машину, яка експортує акції NFS до мережі за допомогою showmountкоманди.

$ showmount -e <NFS server name>

Приклад

Скажімо, наприклад, що я ввійшов у скульптурну форму.

$ showmount -e mulder
Export list for mulder:
/export/raid1/isos     192.168.1.0/24
/export/raid1/proj     192.168.1.0/24
/export/raid1/data     192.168.1.0/24
/export/raid1/home     192.168.1.0/24
/export/raid1/packages 192.168.1.0/24

fstab

Щоб встановити їх на черевиках, ви додасте цей рядок до своїх клієнтських машин, які хочуть використовувати NFS-кріплення.

server:/shared/dir /opt/mounted/dir nfs rsize=8192,wsize=8192,timeo=14,intr

автоматичний монтаж

Якщо ви збираєтеся перезавантажувати ці сервери, я настійно пропоную розібратися в налаштуванні автоматичного автоматизації ( autofs), а не додавати ці записи до /etc/fstab. Це трохи більше роботи, але варто вартих зусиль.

Це дозволить перезавантажувати сервери більш незалежно один від одного, а також створюватиме кріплення NFS лише тоді, коли це фактично потрібно та / або використовується. Коли він не працює, він вимкнеться.

Список літератури


Дякуємо за пропозицію. Я просто це зробив і зараз це працює чудово. Замість бігу exportfs -aя побіг exportfs -rv. Чи є різниця між ними? І в моєму випадку showmount -e 10.66.136.129я буду робити з machineB і machineC. правильно?
арсенал

1
@TechGeeky - не дуже. exportfs -rvпросто робить реекспорт + є багатослівним. Все -aбуде експортувати. Щодо showmount -eтак, ви можете запустити його з тих машин або з тієї, що обслуговує акції.
slm

добре .. Спасибі, тепер має сенс. Одне останнє. Я вважаю, що є ще одна річ до цієї точки моменту, файл fstab .. правильно? Тепер, який файл файлу fstab я повинен змінити? І який вміст я повинен там додати? Будь-яка ідея?
арсенал

@TechGeeky див. Оновлення. Ви додаєте записи клієнтам, які хочуть споживати акції NFS.
slm

1
Для Ubuntu спочатку потрібно встановити nfs-kernel-сервер, щоб Exportfs був доступний. Джерело: manpages.ubuntu.com/manpages/trusty/man8/exportfs.8.html
flickerfly

40

Я побачив ту саму помилку ( mount.nfs: access denied by server while mounting...), і проблему виправили за допомогою -o v3наступного варіанта:

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • Сервер - Ubuntu 14.04, 64-бітний LTS.
  • Клієнт - 64-бітний CentOS 6.5.

2
Ніхто з решти не допоміг, це було рішення, в моєму випадку.
Урхіксидур

1
Я спробував цю і отримав mount.nfs: Connection timed out. (Клієнт - 64-розрядний Ubuntu 14.04 LTS. Сервер - це QNAP NFS з QTS 4.0.2 2016/01/09.)
Стів

Але коли я модернізував свій сервер до Ubuntu 16, це було проблемою та рішенням.
Шрідхар Сарнобат

2
Будьте обережні з цим. NFSv3 є давнім і давно застарілим; його справді більше не слід використовувати (і це було навіть правдою, коли цей пост був написаний).
Майкл Хемптон

7

У моєму випадку працює з використанням nfs4:

$ sudo mount -t nfs4 ім'я сервера: / / path / to / mount

У /etc/exportфайлі на сервері

/Path/to/export 192.168.1.0/24(rw,sync,fsid=0,no_root_squash,crossmnt,no_subtree_check,no_acl)

fsid=0робить /Path/to/exportкореневий каталог під час монтажу спільного доступу.

crossmnt, тому що у мене є деякі інші диски в експортованій файловій системі, до яких я також хочу отримати доступ.

no_root_squash, тому що я хочу отримати доступ як користувач root (su) з боку клієнта. Я майже впевнений, що я єдиний, хто може це зробити у своїй локальній мережі.

Сервер і клієнти - 64-бітний Ubuntu 14.04.

Якщо ви хочете використовувати nfs3, відповідь @ fumisky-wells працює і для мене.


Ви заробили собі нагороду пана; У мене є NAS, тому модерування файлу / etc / export не є варіантом, але вказавши повний шлях зробив свою справу. молодець.
MDMoore313

4

Я отримував те саме повідомлення про помилку, і моя проблема виявилася через те, що клієнтська машина має два мережеві інтерфейси, підключені до однієї локальної мережі. Сервер був налаштований на очікування конкретної IP-адреси, а трафік виходив на другий інтерфейс, який має dhcp IP-адресу. Тому я просто налаштував другий інтерфейс, щоб він мав статичну IP-адресу, а також додав другу статичну IP-адресу до конфігурації сервера.


Чоловік, якому я хотів би, щоб це було більше до вершини, саме це відбувалося в моєму випадку
Брайан Лейшман

3

/etc/exportsпотрібно редагувати на сервері сервера NFS , а не на клієнтах, як ви це заявляли, як це перевіряється сервером NFS, коли клієнт вимагає доступу до спільної доступу.

Якщо /etc/exportsна сервер NFS розмістити наступне , воно повинно працювати:

/opt/exhibitor/conf 10.66.136.129(rw)
/opt/exhibitor/conf 10.66.138.181(rw)
/opt/exhibitor/conf 10.66.138.183(rw)

Я вже маю це у своєму експортному файлі на machineA. А потім я монтую його з machineB і machineC, і він не працює якось .. Чи можливо я додав ту саму інформацію у всі три машини в експортному файлі, чи це буде проблема? Я повинен додавати тільки в machineA?
арсенал

1
@TechGeeky Ви завантажили експорт NFS після цього, використовуючи exportfs -a?
Кріс Даун

Я просто це зробив і зараз це працює чудово. Я намагаюся зрозуміти це все краще, тому перше моє запитання: machineA - це сервер NFS, а machineB і machineC - клієнти. Правильно? Друге питання: якщо machineA - це мій сервер NFS, то лише у файл / etc / export файла machineA я додаю вищевказані три рядки, як ви згадали у своєму рішенні, і ми не торкнемося файлу експорту machineB та machineC? Правильно?
арсенал

@TechGeeky Поки ви монтуєте долю на машині A, це правильно в обох випадках.
Кріс Даун

Дякую. Зараз я це розумію набагато краще. Чому я задав це питання, тому що у мене теж є подібні речі в постановочному середовищі. І те, що я робив на цих трьох машинах у режимі постановки, я додав однакові три рядки у всі мої файли / etc / export трьох машин замість того, щоб додавати їх лише у machineA, але він все одно працює добре. І тепер я зрозумів усю концепцію більш чітко. Дякую за допомогу.
арсенал

2

Якщо nfs-client намагається встановити експортований пап всередині контейнера Linux, контейнер повинен працювати у привілейованому режимі.

У випадку докера;

$ docker run -it --rm --privileged ubuntu:14.04


2

Для мене проблема полягала в тому, що я використовував ip-адресу сервера, /etc/exports/а не клієнтську .

Річ у тому, що ви повинні розмістити всі ips, до яких ви надаєте доступ, на сервері /etc/exports/


1

Після години боротьби з цим самим повідомленням про помилку моя проблема виявилася не більш складною, ніж старі старомодні права доступу до файлів Linux на хості NFS.

Папка, якою я намагався поділитися ( /home/foo/app/share), мала правильні дозволи, але оскільки в домашньому каталозі користувача ( /home/foo) був 0750режим на ній, NFS не зміг проникнути в неї, щоб отримати доступ до спільного режиму.

Як тільки я перевів домашній каталог користувача в режим 0751, служба NFS змогла пройти до нього, і я зміг змонтувати частку з моєї клієнтської машини.


0

Для мене проблема полягала в тому, що мій маршрутизатор змінив використаний IP-адресу клієнта, так що запис /etc/exportsна серверній машині дозволяв отримати доступ лише до IP-адреси, яка вже не використовувалася.


0

Те ж саме може статися, якщо ви спробуєте встановити спільний доступ до NFS на екземплярі Virtual Box з мережевим адаптером, налаштованим як NAT.

Вибір Bridged Adapterу мережевих налаштуваннях віртуальної машини вирішує цю проблему.


0

Я знаю, що це стара тема, але моя проблема стосувалася LXC та AppArmor .

Вбивство AppArmor або додавання профілю виключення виправили це.


дивіться також unix.stackexchange.com/q/396678/231113 у випадку, якщо ви використовуєте proxmox
myrdd

0

Ця помилка може бути викликана також спробою встановити зашифрований шлях. (Наприклад, у вашому домашньому каталозі, якщо ви вирішили зашифрувати його)


0

Єдине рішення, яке працювало для мене, - експорт файлових систем, починаючи з /srv. Схоже, це обмеження (принаймні, варіант за замовчуванням) для NFSv4.

Оскільки я намагався експортувати USB-накопичувач, який автономно працює /media, мені потрібен був спосіб встановити його /srv. Для цього:

sudo mkdir /srv/videos
sudo mount --bind /media/jim/wdportable/videos /srv/videos

І в /etc/exports:

/srv/videos 192.168.0.200(ro)

Коли я експортував /media/jim/wdportable/videosбезпосередньо, спроба встановити на клієнті завжди призводила до mount.nfs: access denied by server.

-o v3Рішення працювало, але я не хочу , щоб змусити v3.


2
Я майже можу гарантувати, що це було б завдяки дозволам на /media/jimпапку. Якщо каталог, яким ви намагаєтеся поділитися, є (або знаходиться всередині) dir з єдиним режимом 700або 750режимом, NFS не зможе потрапити в нього. Якщо ви змінили , /media/jimщоб 751було б , ймовірно , працювати.
Дейл Андерсон

@DaleAnderson має рацію. Після успішного sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(raspbian на Raspi 3 B +) я також спробував sudo chmod 751 /media/pi. Згодом мені більше не потрібно було -o v3: sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-shareзробив роботу (після відключення). Велике спасибі @DaleAnderson.
Томас Праксл

Це, мабуть, проблема. Я думаю, я звик до давніх часів, коли сервер NFS просто запускався як корінь і сліпо експортував те, що йому сказали. Я тестую це.
Джим Стюарт

0

Слід зазначити, що на пов'язаній сторінці, яка веде мене сюди, була моя правильна відповідь, яка полягає в тому, що НЕ можна використовувати * wildcard в IP-адресі при експорті. Він або * (усі IP-адреси), або використовується як підстановка у доменних іменах IE: * .domain.com.

Наприклад: це правильно

/Path/to/export 192.168.1.0/24(flags)

Це не працюватиме (принаймні, неправильно), але працювало на мене роками, поки я не спробував встановити експорт із Fedora VM.

/Path/to/export 192.168.1.*(flags)


Я думаю, що причиною цього не вдалося, можливо, NFSv4, тому що я знаю, що Fedora кровоточить нові речі, і мій старий VM працював чудово, але, ймовірно, використовував старішу версію NFS. Просто здогадка.
FreeSoftwareServers
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.