linux class(new) 1 페이지

본문 바로가기
사이트 내 전체검색


회원로그인

linux class(new)

nfs 서비스

페이지 정보

작성자 admin 작성일16-03-24 18:03 조회1,013회 댓글0건

본문

NFS 서비스
- unix 또는 리눅스 host 간의 파일시스템 및 디렉토리 공유.

- 주요 nfs 서비스 관련 데몬
rpcbind - rpc 서비스의 프로그램 번호를 포트번호로 변환.
rpc.mountd - nfs client 의 마운트 요청을 처리한다.
rpc.rquotad - nfs 서비스의 quota 설정을 처리
nfsd - 원격 파일전송 처리 및 nfs 사용자 권한 체크

nfs 서비스 연결 과정
- nfs server 요청 및 접속 image

*. 연결되어있는 port 나 대기중인(listen)상태인 port를 확인하려면
netstat를 사용하면 된다.
netstat -tp ; 연결되어 있는 port 주소(서비스명)를 출력한다.
netstat -ntp ; 연결되어 있는 port 주소를 숫자로 출력한다.
netstat -ltp ; 대기중인 port 주소를 출력한다.
netstat -nltp ; 대기중인 port 주소를 숫자로 출력한다.
netstat -nulp ; 대기중인 서비스 중 udp 기반 서비를 출력한다.
ex)

svr1[root /]# netstat -ntp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.10.3:22 192.168.10.1:55986 ESTABLISHED 2621/sshd

svr1[root /]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2010/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1835/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2145/sendmail
tcp 0 0 0.0.0.0:57406 0.0.0.0:* LISTEN 2901/rpc.mountd
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1694/rsyslogd
tcp 0 0 0.0.0.0:55747 0.0.0.0:* LISTEN 2901/rpc.mountd
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:875 0.0.0.0:* LISTEN 2896/rpc.rquotad
tcp 0 0 0.0.0.0:50414 0.0.0.0:* LISTEN 2901/rpc.mountd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1744/rpcbind
tcp 0 0 0.0.0.0:48784 0.0.0.0:* LISTEN 1793/rpc.statd
tcp 0 0 :::40850 :::* LISTEN 2901/rpc.mountd
tcp 0 0 :::22 :::* LISTEN 2010/sshd
tcp 0 0 :::23 :::* LISTEN 2020/xinetd
.... 이하 생략.


*. p 옵션은 프로세스이름을 출력하기 위한 옵션
*. t 옵션은 연결되어 있는 포트를 출력하기 위한 옵션
*. lt 옵션은 대기중인 포트를 출력하기 위한 옵션


nfs 서버 설정
nfs 서버는 standalone 방식으로 구동되며 /etc/init.d/nfs 스크립트 파일을 실행하면 된다.
- 설정파일은 /etc/exports 파일

svr1[root /etc]# service nfs start
NFS 서비스를 시작하고 있습니다: [ OK ]
NFS 쿼터를 시작하고 있습니다: [ OK ]
NFS mountd를 시작중 입니다. [ OK ]
NFS 데몬을 시작함: [ OK ]
RPC idmapd를 시작 중: [ OK ]
svr1[root /etc]# exportfs
/var/share centos2
/var/share2 centos2
/var/share2 192.168.10.203
/var/share3 192.168.10.0/24
svr1[root /etc]#


nfs 서버에서 방화벽 설정을 해제한다(방화벽은 서비스 설정은 nfs 서버 테스트 후 하도록 한다)

svr1[root /root]# iptables -F ; 방화벽 설정 해제.


client 에서

mkdir /mnt/nfs
centos2[root /]# showmount -e centos ; 서버의 공유디렉토리 확인
Export list for centos:
/var/share3 192.168.10.0/24
/var/share2 192.168.10.203,centos2
/var/share centos2
centos2[root /]#
centos2[root /]# mount -t nfs centos:/var/share /mnt/nfs
centos2[root /]# df -h -t nfs
Filesystem Size Used Avail Use% Mounted on
centos:/var/share 9.5G 659M 8.4G 8% /mnt/nfs
centos2[root /]#


nfs 서비스의 사용자 권한
nfs 클라이언트의 root 는 nfs 서비스 공유자원에 대해서 디폴트 권한은
nfsnobody(uid:65534) 계정및 nfsnobody(gid:65534) 그룹 권한을 갖는다.
nfs 클라이언트의 일반 사용자 계정의 nfs 서버의 공유자원에 대해서
디폴트 권한은 자신의 권한이다.
그러나 nfs 사용자의 권한설정은 공유옵션으로 다른권한을 부여할수 있게 설정할수 있다.

nfs client 에서

centos2[root /]# df -h -t nfs
Filesystem Size Used Avail Use% Mounted on
centos:/var/share 9.5G 659M 8.4G 8% /mnt/nfs
centos2[root /]#
centos2[root /]# cp /etc/issue /mnt/nfs
cp: cannot create regular file `/mnt/nfs/issue': 허가 거부
centos2[root /]#

root 계정이 nfs 서버의 공유자원에 대해서 자신의 권한을 갖지 못하여 파일 저장을 못한다.
테스트를 위해서 777 로 변경하고 다시 업로드 해서 확인.

nfs 서버에서

svr1[root /etc]# ls -ld /var/share
drwxr-xr-x. 2 root root 4096 2016-03-23 18:28 /var/share
svr1[root /etc]# chmod 777 /var/share
svr1[root /etc]#
client 에서


그리고 클라이언트에서 테스트.

centos2[root /]# cp /etc/issue /mnt/nfs
centos2[root /]#


server 에서 확인

svr1[root /etc]# ls -l /var/share
합계 4
-rw-r--r--. 1 nfsnobody nfsnobody 47 2016-03-23 18:31 issue
svr1[root /etc]#

- root 계정이 nfsnobody 계정권한 및 nfsnobody 그룹권한으로 access 한것을 알수 있다.
- 일반 사용자인경우에는 nfs 서버측의 사용자 uid 와 클라이언트 측의 사용자 uid 가 같은 경우에는
공유자원에 파일 업로드 할경우 소유주가 자신의 id 로 표시가 되면 uid 가 서로 일치하지 않는경우에
client 에서는 업로드 파일의 소유주가 nobody 가 된다.


centos2[root /]# su - user1
[user1@centos2 ~]$ touch /mnt/nfs/testfile
[user1@centos2 ~]$ ls -l /mnt/nfs/testfile
-rw-rw-r--. 1 user1 user1 0 2016-03-23 18:45 /mnt/nfs/testfile
[user1@centos2 ~]$ id user1
uid=500(user1) gid=500(user1) groups=500(user1)
[user1@centos2 ~]$



svr1[root /]# ls -l /var/share/testfile
-rw-rw-r--. 1 user1 user1 0 2016-03-23 18:45 /var/share/testfile
svr1[root /]# id user1
uid=500(user1) gid=500(user1) groups=500(user1)
svr1[root /]#



[cuser1@centos2 ~]$ touch /mnt/nfs/testfile2
[cuser1@centos2 ~]$ ls -l /mnt/nfs/testfile2
-rw-rw-r--. 1 nobody nobody 0 2016-03-23 18:48 /mnt/nfs/testfile2
[cuser1@centos2 ~]$ id cuser1
uid=555(cuser1) gid=555(cuser1) groups=555(cuser1)
[cuser1@centos2 ~]$



svr1[root /]# useradd --uid 555 suser1
svr1[root /]# ls -l /var/share/testfile2
-rw-rw-r--. 1 suser1 suser1 0 2016-03-23 18:48 /var/share/testfile2
svr1[root /]# id suser1
uid=555(suser1) gid=555(suser1) groups=555(suser1)
svr1[root /]#


nfs 권한 설정 옵션 및 기타 설정 옵션

svr1[root /etc]# cat exports
/var/share centos2(rw)
/var/share2 centos2(rw) 192.168.10.203(ro)
/var/share3 192.168.10.0/24(rw)
# --- nfs 권한 설정 옵션 및 기타옵션 테스트 ---
/var/test1 centos2(rw,root_squash,anonuid=65534,anongid=65534)
/var/test2 centos2(rw,no_root_squash)
/var/test3 centos2(rw,all_squash)
/var/test4 centos2(rw,all_squash,anonuid=500,anongid=10)
svr1[root /etc]#

위에 설정중 주요옵션
root_squash : 공유자원에 대해서 클라이언트의 root 가 anonuid, anongid 의 권한을 갖는다.
no_root_sqush: 공유자원에 대해서 클라이언트의 root 가 root 권한을 갖는다.
all_squash : 공유자원에 대해서 모든 사용자가 anonuid,anongid 의 권한을 갖는다.
참고로 공유설정에 anonuid 및 anongid 옵션을 생략하면 디폴트 값은 각각 65534 번이 된다.
65534번은 nfsnobody 및 nfsnobody 그룹이다.


svr1[root /etc]# exportfs -r ; 공유설정정보 갱신
svr1[root /etc]# exportfs ; 공유정보 확인(옵션까지 자세히 출력하려면 -v 옵션 사용)
/var/share centos2
/var/share2 centos2
/var/share2 192.168.10.203
/var/test1 centos2
/var/test2 centos2
/var/test3 centos2
/var/test4 centos2
/var/share3 192.168.10.0/24
svr1[root /etc]#

댓글목록

등록된 댓글이 없습니다.


접속자집계

오늘
62
어제
75
최대
611
전체
448,112
개인정보취급방침 서비스이용약관 twoseven.kr All rights reserved.
상단으로