mount.nfs: truy cập bị từ chối bởi máy chủ trong khi gắn trên máy Ubuntu?


64

Tôi có ba máy đang sản xuất -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

và tất cả các máy đó đều cài đặt Ubuntu 12.04 và tôi có quyền truy cập root vào cả ba máy đó.

Bây giờ tôi phải làm những việc dưới đây trong các máy trên của tôi -

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

Tôi đã tạo /opt/exhibitor/confthư mục trong cả ba máy như đã đề cập ở trên.

Bây giờ tôi đang cố gắng tạo một Mount Point. Vì vậy, tôi đã làm theo quy trình dưới đây -

Cài đặt tệp hỗ trợ NFS và máy chủ nhân NFS trong cả ba máy trên

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

Tạo thư mục dùng chung trong cả ba máy trên

$ mkdir /opt/exhibitor/conf/

Chỉnh sửa /etc/exportsvà thêm mục như thế này trong cả ba máy ở trên -

# /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)

Tôi đã thử gắn trên máyA như bên dưới từ machineB và machineC và nó cho tôi lỗi này-

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/exportsTập tin của tôi có tốt không? Tôi khá chắc chắn, tôi đã làm hỏng exportstập tin của tôi . Vì tôi có cùng một nội dung trong cả ba máy trong tệp xuất.

Bất cứ ý tưởng những gì tôi đang làm sai ở đây? Và những gì sẽ là /exportstập tin chính xác ở đây?


1
FYI kiểm tra quyền trên máy chủ / máy khách. Nếu máy chủ NFS có quyền 0750hoặc 0700máy khách đang cố gắn kết rất có thể bị lỗi với cùng thông báo lỗi này. Tôi đã thay đổi máy chủ từ 0750đến 0755và sau đó lỗi đã biến mất và tất cả đều ổn.
Trevor Boyd Smith

Câu trả lời:


70

xuất khẩu

Khi bạn tạo một /etc/exportstệp trên máy chủ, bạn cần đảm bảo rằng bạn xuất nó. Thông thường bạn sẽ muốn chạy lệnh này:

$ exportfs -a

Điều này sẽ xuất tất cả các mục trong tệp xuất.

showmount

Một điều khác tôi thường làm là từ các máy khác Tôi sẽ kiểm tra bất kỳ máy nào xuất khẩu cổ phiếu NFS vào mạng bằng showmountlệnh.

$ showmount -e <NFS server name>

Thí dụ

Nói ví dụ tôi đang đăng nhập vào scully.

$ 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

Để gắn chúng khi khởi động, bạn thêm dòng này vào máy khách muốn sử dụng giá treo NFS.

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

tự động

Nếu bạn sẽ khởi động lại các máy chủ này thì tôi khuyên bạn nên xem xét việc thiết lập automounting ( autofs) thay vì thêm các mục này vào /etc/fstab. Đó là một công việc nhiều hơn một chút nhưng cũng đáng nỗ lực.

Làm như vậy sẽ cho phép bạn khởi động lại các máy chủ độc lập hơn với nhau và cũng sẽ chỉ tạo ra NFS mount khi thực sự cần thiết và / hoặc đang được sử dụng. Khi nó không hoạt động, nó sẽ được ngắt kết nối.

Người giới thiệu


Cảm ơn đã gợi ý. Tôi chỉ làm điều đó và bây giờ nó hoạt động tốt. Thay vì chạy exportfs -a, tôi chạy exportfs -rv. Có sự khác biệt nào giữa những cái đó không? Và trong trường hợp của tôi, showmount -e 10.66.136.129tôi sẽ làm từ machineB và machineC. đúng?
kho vũ khí

1
@TechGeeky - không thực sự. exportfs -rvchỉ cần một reexport + là dài dòng. Các -asẽ xuất khẩu tất cả mọi thứ. Như showmount -ecó, bạn có thể chạy nó từ các máy đó hoặc máy phục vụ cổ phiếu.
slm

ok .. Cảm ơn, ý nghĩa của makese bây giờ .. Một điều cuối cùng. Tôi tin rằng có một điều nữa cho điều gắn kết này, tập tin fstab .. đúng không? Bây giờ tập tin fstab của máy nào, tôi phải sửa đổi? Và nội dung nào tôi phải thêm vào đó? Ý tưởng nào không?
kho vũ khí

@TechGeeky xem cập nhật. Bạn thêm các mục vào máy khách muốn sử dụng cổ phiếu NFS.
slm

1
Trên Ubuntu, trước tiên bạn phải cài đặt nfs-kernel-server để exportfs có sẵn. Nguồn: manpages.ubfox.com/manpages/trusty/man8/exportfs.8.html
flickerfly

40

Tôi thấy lỗi tương tự ( mount.nfs: access denied by server while mounting...) và sự cố đã được khắc phục bằng -o v3tùy chọn như sau:

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • Máy chủ là Ubuntu 14.04 64 bit LTS.
  • Khách hàng là CentOS 6.5 64 bit.

2
Không có phần còn lại giúp đỡ, đây là giải pháp, trong trường hợp của tôi.
Urhixidur

1
Tôi đã thử cái này và nhận được mount.nfs: Connection timed out. (Máy khách là Ubuntu 14.04 LTS 64-bit. Máy chủ là NFS QFS với QTS 4.0.2 2016/01/09.)
Steve

Đúng, khi tôi nâng cấp máy chủ của mình lên Ubuntu 16, đây là vấn đề và giải pháp.
Sridhar Sarnobat

2
Hãy cẩn thận với điều này. NFSv3 là cổ xưa và lâu đời; nó thực sự không nên được sử dụng nữa (và điều này thậm chí còn đúng khi bài viết này được viết).
Michael Hampton

7

Trong trường hợp của tôi hoạt động bằng cách sử dụng nfs4:

$ sudo mount -t nfs4 tên máy chủ: / / path / to / mount

Trong /etc/exporttập tin trên máy chủ

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

fsid=0làm cho thư /Path/to/exportmục gốc khi bạn gắn kết chia sẻ.

crossmnt, bởi vì tôi có một số ổ đĩa khác trong hệ thống tệp được xuất mà tôi cũng muốn truy cập.

no_root_squash, bởi vì tôi muốn truy cập với tư cách người dùng root (su) từ phía máy khách. Tôi khá chắc chắn rằng tôi là người duy nhất có thể làm điều đó trong mạng cục bộ của mình.

Máy chủ và máy khách là Ubuntu 14.04 64 bit.

Nếu bạn muốn sử dụng nfs3, câu trả lời của @ fumisky-giếng cũng có tác dụng với tôi.


Bạn kiếm được cho mình một upvote thưa ông; Tôi có một NAS, vì vậy việc sửa đổi tập tin / etc / export không phải là một tùy chọn, nhưng việc chỉ định đường dẫn hoàn chỉnh đã thực hiện thủ thuật. làm tốt.
MDMoore313

4

Tôi đã nhận được thông báo lỗi tương tự và vấn đề của tôi hóa ra là do máy khách có hai giao diện mạng được kết nối với cùng một mạng LAN. Máy chủ đã được cấu hình để mong đợi một địa chỉ IP cụ thể và lưu lượng truy cập sẽ xuất hiện trên giao diện thứ hai có địa chỉ IP dhcp. Vì vậy, tôi chỉ cần cấu hình giao diện thứ hai để có một địa chỉ IP tĩnh và cũng đã thêm địa chỉ IP tĩnh thứ hai vào cấu hình máy chủ.


Người đàn ông tôi ước điều này sẽ hướng tới đỉnh cao hơn, đó chính xác là những gì đã xảy ra trong trường hợp của tôi
Brian Leishman

3

/etc/exportscần phải được chỉnh sửa trên máy chủ NFS , chứ không phải máy khách, như bạn nói, vì nó được máy chủ NFS kiểm tra khi máy khách yêu cầu quyền truy cập vào chia sẻ.

Nếu bạn đặt phần sau /etc/exportsvào máy chủ NFS, nó sẽ hoạt động:

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

Tôi đã có điều này trong tập tin xuất khẩu của tôi trên machineA. Và sau đó tôi đang gắn nó từ machineB và machineC và nó không hoạt động bằng cách nào đó .. Có thể tôi đã thêm cùng một thông tin trong cả ba máy trong tệp xuất, đó có phải là vấn đề không? Tôi chỉ nên thêm vào trong máyA?
kho vũ khí

1
@TechGeeky Bạn đã tải lại xuất khẩu NFS sau khi làm điều đó, bằng cách sử dụng exportfs -a?
Chris Xuống

Tôi chỉ làm điều đó và bây giờ nó hoạt động tốt. Tôi đang cố gắng hiểu toàn bộ điều này theo cách tốt hơn, vì vậy câu hỏi đầu tiên của tôi là, machineA là máy chủ NFS và machineB và machineC là máy khách .. Đúng không? Câu hỏi thứ hai là, nếu machineA là máy chủ NFS của tôi, thì chỉ trong tệp / etc / export của machineA, tôi sẽ thêm ba dòng trên như bạn đã đề cập trong giải pháp của bạn và chúng tôi sẽ không chạm vào tệp xuất của machineB và machineC? Chính xác?
kho vũ khí

@TechGeeky Miễn là bạn đang chia sẻ chia sẻ trên máy A, thì điều đó đúng trong cả hai trường hợp.
Chris Xuống

Cảm ơn. Bây giờ tôi hiểu điều này tốt hơn nhiều. Tại sao tôi lại hỏi câu hỏi này vì tôi cũng có những thứ tương tự trong môi trường dàn dựng. Và những gì tôi đã làm trong ba máy đó trong môi trường dàn dựng, tôi đã thêm ba dòng giống nhau trong tất cả các tập tin / etc / export của ba máy thay vì chỉ thêm nó trong machineA nhưng nó vẫn hoạt động tốt. Và bây giờ tôi đã hiểu toàn bộ khái niệm rõ ràng hơn. Cảm ơn đã giúp đỡ.
kho vũ khí

2

Nếu nfs-client đang cố gắn kết chia sẻ đã xuất trong container linux thì container sẽ chạy ở chế độ đặc quyền.

Trong trường hợp bến tàu;

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


2

Đối với tôi, vấn đề là tôi đã sử dụng địa chỉ IP của máy chủ /etc/exports/thay vì địa chỉ máy khách .

Vấn đề là, bạn nên đặt tất cả các ips bạn cấp quyền truy cập vào máy chủ /etc/exports/


1

Sau khi chiến đấu với cùng một thông báo lỗi này trong nhiều giờ, vấn đề của tôi hóa ra không có gì phức tạp hơn các quyền truy cập tệp Linux lỗi thời trên máy chủ NFS.

Thư mục tôi đang cố gắng chia sẻ ( /home/foo/app/share) có quyền chính xác, nhưng vì thư mục chính của người dùng ( /home/foo) có 0750chế độ trên đó, NFS không thể truy cập vào nó để truy cập thư mục được chia sẻ.

Ngay khi tôi đặt thư mục chính của người dùng thành chế độ 0751, dịch vụ NFS có thể truy cập vào nó và tôi có thể gắn kết chia sẻ từ máy khách của mình.


0

Đối với tôi, vấn đề là bộ định tuyến của tôi đã thay đổi địa chỉ IP đã sử dụng của máy khách, do đó, mục nhập /etc/exportstrên máy chủ chỉ cho phép truy cập vào địa chỉ IP không được sử dụng nữa.


0

Điều tương tự có thể xảy ra nếu bạn cố gắn một chia sẻ NFS trên phiên bản Virtual Box với bộ điều hợp mạng được cấu hình là NAT.

Chọn Bridged Adaptertrong cài đặt mạng máy ảo khắc phục sự cố này.


0

Tôi biết đây là một chủ đề cũ, nhưng vấn đề của tôi phải làm với LXCAppArmor .

Giết AppArmor hoặc thêm một hồ sơ ngoại lệ, đã sửa nó.


xem thêm unix.stackexchange.com/q/396678/231113 trong trường hợp bạn đang sử dụng proxmox
myrdd

0

Lỗi này cũng có thể được gây ra bằng cách cố gắng gắn một đường dẫn được mã hóa. (Ví dụ: trong thư mục nhà của bạn, nếu bạn chọn mã hóa nó)


0

Giải pháp duy nhất hiệu quả với tôi là xuất các hệ thống tập tin bắt đầu bằng /srv. Có vẻ như đây là một giới hạn (hoặc ít nhất là tùy chọn mặc định) của NFSv4.

Vì tôi đang cố gắng xuất một ổ USB tự động sang /media, tôi cần một cách để có được 'gắn kết' bên dưới /srv. Để thực hiện điều đó:

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

Và trong /etc/exports:

/srv/videos 192.168.0.200(ro)

Khi tôi xuất /media/jim/wdportable/videostrực tiếp, cố gắng gắn vào máy khách luôn dẫn đến mount.nfs: access denied by server.

Các -o v3giải pháp làm việc, nhưng tôi không muốn để buộc v3.


2
Tôi gần như có thể đảm bảo điều này sẽ là do quyền trên /media/jimthư mục. Nếu thư mục bạn đang cố gắng chia sẻ là (hoặc nằm trong) một thư mục chỉ có 700hoặc 750chế độ, NFS sẽ không thể truy cập vào nó. Nếu bạn đổi /media/jimthành 751, nó có thể sẽ hoạt động.
Dale Anderson

@DaleAnderson nói đúng. Sau khi thành công sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(raspbian trên Raspi 3 B +), tôi cũng đã cố gắng sudo chmod 751 /media/pi. Sau đó, tôi không cần -o v3nữa: sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-shaređã hoàn thành công việc (sau khi kết thúc). Rất cám ơn @DaleAnderson.
Thomas Praxl

Đây có lẽ là vấn đề. Tôi đoán rằng tôi đã quen với thời xa xưa khi máy chủ NFS chỉ chạy bằng root và xuất khẩu một cách mù quáng những gì nó được nói. Tôi sẽ kiểm tra điều này.
Jim Stewart

0

Cần lưu ý rằng một trang được liên kết dẫn tôi đến đây có câu trả lời đúng của tôi đó là bạn KHÔNG thể sử dụng * ký tự đại diện trong địa chỉ IP trong quá trình xuất. Nó là * (tất cả IP) hoặc được sử dụng làm ký tự đại diện trong tên miền IE: * .domain.com.

Vd: điều này đúng

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

Điều này sẽ không hoạt động (hoặc ít nhất là không chính xác), nhưng đã hoạt động trong nhiều năm cho đến khi tôi thử gắn kết xuất từ ​​máy ảo Fedora.

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


Tôi nghĩ lý do thất bại có thể là NFSv4 vì tôi biết Fedora đang làm hỏng công cụ mới và VM cũ của tôi hoạt động tốt nhưng có lẽ đã sử dụng phiên bản NFS cũ hơn. Chỉ là một phỏng đoán.
FreeSoftwareServers
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.