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)
*. p 옵션은 프로세스이름을 출력하기 위한 옵션
*. t 옵션은 연결되어 있는 포트를 출력하기 위한 옵션
*. lt 옵션은 대기중인 포트를 출력하기 위한 옵션
nfs 서버 설정
nfs 서버는 standalone 방식으로 구동되며 /etc/init.d/nfs 스크립트 파일을 실행하면 된다.
- 설정파일은 /etc/exports 파일
nfs 서버에서 방화벽 설정을 해제한다(방화벽은 서비스 설정은 nfs 서버 테스트 후 하도록 한다)
client 에서
nfs 서비스의 사용자 권한
nfs 클라이언트의 root 는 nfs 서비스 공유자원에 대해서 디폴트 권한은
nfsnobody(uid:65534) 계정및 nfsnobody(gid:65534) 그룹 권한을 갖는다.
nfs 클라이언트의 일반 사용자 계정의 nfs 서버의 공유자원에 대해서
디폴트 권한은 자신의 권한이다.
그러나 nfs 사용자의 권한설정은 공유옵션으로 다른권한을 부여할수 있게 설정할수 있다.
nfs client 에서
root 계정이 nfs 서버의 공유자원에 대해서 자신의 권한을 갖지 못하여 파일 저장을 못한다.
테스트를 위해서 777 로 변경하고 다시 업로드 해서 확인.
nfs 서버에서
그리고 클라이언트에서 테스트.
server 에서 확인
- root 계정이 nfsnobody 계정권한 및 nfsnobody 그룹권한으로 access 한것을 알수 있다.
- 일반 사용자인경우에는 nfs 서버측의 사용자 uid 와 클라이언트 측의 사용자 uid 가 같은 경우에는
공유자원에 파일 업로드 할경우 소유주가 자신의 id 로 표시가 되면 uid 가 서로 일치하지 않는경우에
client 에서는 업로드 파일의 소유주가 nobody 가 된다.
nfs 권한 설정 옵션 및 기타 설정 옵션
위에 설정중 주요옵션
root_squash : 공유자원에 대해서 클라이언트의 root 가 anonuid, anongid 의 권한을 갖는다.
no_root_sqush: 공유자원에 대해서 클라이언트의 root 가 root 권한을 갖는다.
all_squash : 공유자원에 대해서 모든 사용자가 anonuid,anongid 의 권한을 갖는다.
참고로 공유설정에 anonuid 및 anongid 옵션을 생략하면 디폴트 값은 각각 65534 번이 된다.
65534번은 nfsnobody 및 nfsnobody 그룹이다.
- 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]#
댓글목록
등록된 댓글이 없습니다.