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)

machineB와 machineC에서 아래와 같이 machineA에 마운트를 시도했지만이 오류가 발생합니다.

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
참고로 호스트 / 클라이언트에 대한 권한을 다시 확인하십시오. NFS 호스트에 권한이 0750있거나 0700마운트하려는 클라이언트가 이와 동일한 오류 메시지 로 실패 할 가능성이 큽니다 . 호스트를에서 (으) 0750로 변경 0755한 후 오류가 사라지고 모두 정상이었습니다.
Trevor Boyd Smith

답변:


70

exportfs

/etc/exports서버 에서 파일 을 작성할 때 파일을 내 보내야합니다. 일반적으로이 명령을 실행하려고합니다.

$ exportfs -a

내보내기 파일의 모든 항목을 내 보냅니다.

쇼 마운트

내가 자주 수행하는 다른 작업은 다른 컴퓨터에서 showmount명령을 사용하여 NFS 공유를 네트워크로 내보내는 컴퓨터를 확인하는 것입니다 .

$ 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.129machineB와 machineC에서 할 것입니다. 권리?
arsenal

1
@ TechGeeky-실제로는 아닙니다. exportfs -rv그냥 다시 내보내기를 수행 +는 장황하다. 은 -a모든 것을 내 보냅니다. 에 관해서는 showmount -e예 당신은 그 기계 또는 공유를 제공하는 하나에서 실행할 수 있습니다.
slm

알았어 .. 고마워, 이제 말이 되겠 어 이 마운트 포인트에 fstab 파일이 하나 더 있다고 생각합니다. 맞습니까? 이제 어떤 시스템 fstab 파일을 수정해야합니까? 그리고 거기에 어떤 내용을 추가해야합니까? 어떤 생각?
arsenal

@TechGeeky는 업데이트를 참조하십시오. NFS 공유를 사용하려는 클라이언트에 항목을 추가합니다.
SLM의

1
Ubuntu에서 exportfs를 사용하려면 먼저 nfs-kernel-server를 설치해야합니다. 출처 : 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입니다.
  • 클라이언트는 CentOS 6.5 64 비트입니다.

2
나머지는 도움이되지 않았습니다.이 경우 해결책이었습니다.
Urhixidur

1
나는 이것을 시도하고 얻었다 mount.nfs: Connection timed out. (클라이언트는 Ubuntu 14.04 LTS 64 비트입니다. 서버는 QTS 4.0.2 2016/01/09의 QNAP NFS입니다.)
Steve

그렇습니다. 서버를 Ubuntu 16으로 업그레이드했을 때 이것이 문제와 해결책이었습니다.
Sridhar Sarnobat

2
이것을 조심하십시오. NFSv3는 오래되고 오래되지 않습니다. 더 이상 사용해서는 안됩니다 (이 게시물이 작성되었을 때도 마찬가지였습니다).
Michael Hampton

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클라이언트 측에서 루트 사용자 (su)로 액세스하고 싶습니다. 로컬 네트워크에서 내가 할 수있는 유일한 사람이라고 확신합니다.

서버와 클라이언트는 Ubuntu 14.04 64 비트입니다.

nfs3을 사용하려면 @ fumisky-wells의 대답이 저에게 효과적입니다.


당신은 자신에게 공감대를 얻었습니다. NAS가 있으므로 / etc / export 파일을 수정하는 것은 옵션이 아니지만 전체 경로를 지정하면 문제가 해결되었습니다. 잘 했어.
MDMoore313

4

동일한 오류 메시지가 표시되고 클라이언트 시스템에 두 개의 네트워크 인터페이스가 동일한 LAN에 연결되어있는 것으로 나타났습니다. 서버가 특정 IP 주소를 예상하도록 구성되었으며 dhcp IP 주소가있는 두 번째 인터페이스에서 트래픽이 발생했습니다. 그래서 방금 두 번째 인터페이스가 고정 IP 주소를 갖도록 구성하고 두 번째 고정 IP 주소를 서버 구성에 추가했습니다.


이게 정상에 가까웠 으면 좋겠다. 내 사건에서 정확히 무슨 일이 있었는지
Brian Leishman

3

/etc/exports클라이언트가 공유에 대한 액세스를 요청할 때 NFS 서버에서 확인하므로 사용자가 말한대로 클라이언트가 아닌 NFS 서버 시스템에서 클라이언트를 편집해야합니다 .

/etc/exportsNFS 서버에 다음을 넣으면 작동합니다.

/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에만 추가해야합니까?
arsenal

1
@TechGeeky? 다음을 사용하여 NFS 내보내기를 다시로드 했습니까 exportfs -a?
Chris Down

방금 그렇게했고 지금은 잘 작동합니다. 이 모든 것을 더 잘 이해하려고 노력하고 있으므로 첫 번째 질문은 machineA는 NFS 서버이고 machineB와 machineC는 클라이언트입니다. 두 번째 질문은 machineA가 내 NFS 서버 인 경우 machineA의 / etc / exports 파일에만 솔루션에 언급 한대로 위의 세 줄을 추가하고 machineB와 machineC의 내보내기 파일을 건드리지 않습니까? 옳은?
arsenal

@TechGeeky 머신 A에 공유를 마운트하는 한 두 경우 모두 맞습니다.
Chris Down

감사. 이제 나는 이것을 훨씬 더 잘 이해합니다. 준비 환경에도 비슷한 내용이 있기 때문에이 질문을 한 이유는 무엇입니까? 그리고 스테이징 환경의 세 컴퓨터에서 수행 한 작업은 machineA에만 추가하는 대신 세 컴퓨터의 모든 / etc / exports 파일에 동일한 세 줄을 추가했지만 여전히 잘 작동합니다. 그리고 이제 전체 개념을 더 명확하게 이해했습니다. 도와 주셔서 감사합니다.
arsenal

2

nfs-client가 Linux 컨테이너 내에 내 보낸 공유를 마운트하려고 시도하면 컨테이너가 권한 모드로 실행되어야합니다.

도커의 경우;

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


2

나에게 문제는 클라이언트/etc/exports/ 대신 서버의 IP 주소를 사용하고 있다는 것입니다.

문제는 서버에 액세스 권한을 부여한 모든 IP를 넣어야한다는 것입니다. /etc/exports/


1

몇 시간 동안이 같은 오류 메시지로 싸우고 나면 내 문제는 NFS 호스트에서 좋은 구식 Linux 파일 권한보다 더 복잡한 것으로 판명되었습니다.

공유하려는 폴더 ( /home/foo/app/share)에 올바른 권한이 있었지만 사용자의 홈 디렉토리 ( /home/foo)에 0750모드 가 있었기 때문에 NFS가 공유 디렉토리에 액세스하기 위해 해당 폴더 를 탐색 할 수 없었습니다.

사용자의 홈 디렉토리를 mode로 설정하자마자 0751NFS 서비스가이를 통과하여 클라이언트 시스템에서 공유를 마운트 할 수있었습니다.


0

나에게 문제는 내 라우터가 클라이언트의 사용되는 IP 주소를 변경 /etc/exports하여 서버 시스템 의 항목이 더 이상 사용되지 않은 IP 주소에 대해서만 액세스를 허용했다는 것입니다.


0

로 구성된 네트워크 어댑터를 사용하여 Virtual Box 인스턴스에 NFS 공유를 마운트하려고하면 동일한 문제가 발생할 수 있습니다 NAT.

Bridged Adapter가상 머신 네트워크 설정을 선택하면 이 문제가 해결됩니다.



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폴더 에 대한 권한으로 인한 것임을 거의 보증 할 수 있습니다 . 공유하려는 디렉토리가 700또는 750모드를 가진 디렉토리 이거나 디렉토리 안에 있으면 NFS는 해당 디렉토리 로 이동할 수 없습니다. 로 변경 /media/jim하면 751아마도 작동했을 것입니다.
데일 앤더슨

@DaleAnderson이 맞습니다. 성공한 후 sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(Raspi 3 B +의 raspbian) 나도 시도했습니다 sudo chmod 751 /media/pi. 그 후, 나는 -o v3더 이상 필요 하지 sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share않았다 : (마운트 해제 후) 일을했다. @DaleAnderson에게 많은 감사합니다.
토마스 Praxl

이것은 아마도 문제 일 것입니다. NFS 서버가 루트로 실행되어 그 내용을 맹목적으로 내 보낸 고대에 익숙한 것 같습니다. 이것을 테스트하겠습니다.
Jim Stewart

0

내 페이지로 연결되는 링크 된 페이지에는 내보내기에서 IP 주소에 와일드 카드를 사용할 수 없다는 정답이 있습니다. * (모든 IP)이거나 도메인 이름 IE에서 와일드 카드로 사용됩니다 : * .domain.com.

예 : 이것은 맞습니다

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

이것은 작동하지 않지만 (적어도 올바르지 않습니다) Fedora VM에서 내보내기를 마운트하려고 시도 할 때까지 몇 년 동안 저에게 효과적이었습니다.

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


Fedora가 최신의 새로운 기능을 사용하고 있으며 이전 VM이 제대로 작동했지만 이전 NFS 버전을 사용했기 때문에 실패한 이유는 NFSv4 일 가능성이 있습니다. 그냥 추측.
FreeSoftwareServers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.