| 항목 | 내용 |
|---|
| 풀네임 | Network File System |
| 개발 | Sun Microsystems |
| 상대 | 유닉스·리눅스 사이 |
| 기반 | RPC(Remote Procedure Call) |
| 설정 파일 | /etc/exports |
| 관련 데몬 | nfsd, rpcbind(옛 portmap) |
[서버] /data 를 내보낸다(export)
│
▼
[클라이언트] mount 해서 자기 디렉터리처럼 쓴다
# 서버: /etc/exports
/data 192.168.0.0/24(rw,sync)
exportfs -a # 설정 반영
showmount -e 서버주소 # 내보낸 목록 확인
# 클라이언트
mount -t nfs 서버:/data /mnt
- 원격 디렉터리를 마운트해 로컬처럼 쓴다. 사용자는 네트워크 너머라는 것을 느끼지 못한다.
- RPC 기반이라는 점이 삼바와 구별되는 핵심이다.
/data 192.168.0.0/24(rw,sync)
└─┬─┘ └─────┬──────┘└───┬───┘
│ │ └── 옵션 (괄호 안, 쉼표로 구분)
│ └────────────── 접근을 허용할 대상 (호스트·대역)
└─────────────────────────── 내보낼 디렉터리
| 옵션 | 뜻 |
|---|
ro / rw | 읽기 전용 / 읽고 쓰기 |
sync | 디스크에 실제로 쓴 뒤 응답한다 — 안전 |
root_squash | 클라이언트의 root를 권한 없는 사용자로 바꿔 취급 (기본값) |
no_root_squash | 클라이언트의 root를 서버에서도 root로 인정 — 위험 |
- 대상과 괄호 사이에 공백을 넣지 않는다.
192.168.0.0/24 (rw) 처럼 띄우면 대역과 옵션이 따로 떨어져 엉뚱한 범위에 쓰기 권한이 열린다.
root_squash가 기본인 이유는, 그렇지 않으면 자기 PC에서 root인 사람이 서버의 공유 파일까지 마음대로 할 수 있기 때문이다.
- 파일을 고친 것만으로는 반영되지 않는다.
exportfs -a(전부 내보내기) 또는 exportfs -r(다시 읽어 반영)을 실행한다. exportfs -v는 지금 내보내고 있는 목록을 보여 준다.
$ showmount -e 192.168.0.10
Export list for 192.168.0.10:
/data 192.168.0.0/24
# mount -t nfs 192.168.0.10:/data /mnt
$ df -h /mnt
Filesystem Size Used Avail Use% Mounted on
192.168.0.10:/data 50G 20G 30G 40% /mnt
- 마운트 대상을
서버:디렉터리 로 적는다. df의 Filesystem 칸에 /dev/sda1 같은 장치 대신 이 꼴이 보이면 NFS다.
showmount -e는 클라이언트에서 "저 서버가 무엇을 내놓았나"를 볼 때, exportfs는 서버에서 "내가 무엇을 내놓았나"를 다룰 때 쓴다.
- NFS는 소유자를 이름이 아니라 UID 번호로 주고받는다. 서버에서 alice(uid 1001)의 파일은, 클라이언트에서 uid 1001을 가진 사람의 것으로 보인다. 4주 차에 본 "파일에는 번호가 저장된다"가 여기서도 그대로 통한다.
- 포트는 NFS가 2049번, RPC 서비스의 위치를 알려 주는
rpcbind가 111번이다.
| 항목 | 내용 |
|---|
| 목적 | 리눅스와 윈도 사이의 파일·프린터 공유 |
| 프로토콜 | SMB, 이를 확장한 CIFS |
| 이름 관리 | NetBIOS |
| 설정 파일 | /etc/samba/smb.conf |
| 데몬 | smbd(파일 공유), nmbd(이름 관리) |
| 줄임말 | 풀네임 |
|---|
| SMB | Server Message Block |
| CIFS | Common Internet File System — SMB를 확장한 것 |
| NetBIOS | Network Basic Input/Output System |
⚠️ "삼바의 구성 요소와 거리가 먼 것은?" 이라는 문제에 SMB · CIFS · NetBIOS · RPC 가 보기로 나온다. 답은 RPC 다. RPC는 NFS가 쓰는 것이지 삼바의 요소가 아니다.
smbclient -L //서버 # 공유 목록 보기
mount -t cifs //서버/공유 /mnt # 마운트
testparm # smb.conf 문법 검사
[global]
workgroup = WORKGROUP
security = user
[share]
path = /srv/share
writable = yes
valid users = alice
| 섹션 | 뜻 |
|---|
[global] | 서버 전체에 적용되는 설정 |
[homes] | 각 사용자의 홈 디렉터리를 자동으로 공유 |
[printers] | 프린터 공유 |
그 밖의 [이름] | 공유 하나. 대괄호 안의 이름이 윈도에서 보이는 공유 이름 |
[global]·[homes]·[printers] 셋은 미리 뜻이 정해진 이름이고, 나머지는 관리자가 마음대로 짓는 공유 이름이다.
- 삼바는 리눅스 계정과 별도로 삼바용 비밀번호를 둔다. 리눅스에 alice 계정이 있어도
smbpasswd -a alice 로 등록해야 삼바에 로그인할 수 있다.
- 두 데몬의 일이 갈린다 —
smbd는 파일·프린터 공유와 인증, nmbd는 NetBIOS 이름으로 컴퓨터를 찾게 해 주는 일이다. 포트도 smbd가 TCP 139·445, nmbd가 UDP 137·138로 나뉜다.
- 공유를 적는 법이 운영체제마다 다르다. 윈도는 역슬래시로
\\서버\공유, 리눅스는 슬래시로 //서버/공유 다.
smbclient //서버/share -U alice 로 들어가면 smb: \> 프롬프트가 뜨고, FTP처럼 get·put 으로 파일을 주고받는다. 마운트하지 않고 잠깐 꺼내 올 때 쓴다.
- 삼바(Samba) 라는 이름은 프로토콜 이름 SMB 에서 따왔다.
| 구분 | NFS | 삼바(Samba) |
|---|
| 상대 | 유닉스·리눅스 | 윈도 |
| 프로토콜 | RPC 기반 NFS | SMB / CIFS |
| 이름 관리 | — | NetBIOS |
| 설정 파일 | /etc/exports | /etc/samba/smb.conf |
| 데몬 | nfsd | smbd, nmbd |
- "윈도와 공유하려면?" → 삼바, "유닉스끼리 공유하려면?" → NFS 로 바로 답한다.
| 구분 | NFS | 삼바 |
|---|
| 주요 포트 | 2049 (+ rpcbind 111) | 139 · 445 |
| 마운트 | mount -t nfs 서버:/data /mnt | mount -t cifs //서버/공유 /mnt |
| 공유 목록 보기 | showmount -e 서버 | smbclient -L //서버 |
| 설정 반영·검사 | exportfs -r | testparm |
| 사용자 인증 | 주로 호스트(IP) 기준으로 허용 | 사용자 이름·비밀번호 (smbpasswd) |
- 마운트 명령은
-t 뒤의 낱말과 원격 표기가 갈린다. nfs는 서버:/경로, cifs는 //서버/공유다.
- NFS·삼바와 어제의 FTP는 쓰는 느낌이 다르다. NFS·삼바는 "마운트해서 내 디렉터리처럼" 쓰고, FTP는 "접속해서 파일을 주고받는다." 그래도 셋 다 "파일 공유·전송" 묶음에 든다.
| 증상 | 원인 | 조치 |
|---|
mount.nfs: access denied by server | /etc/exports에 내 주소가 허용되어 있지 않거나 아직 반영 전 | 서버에서 exports 확인 후 exportfs -r |
| NFS로 마운트는 됐는데 쓰기가 안 된다 | 옵션이 ro이거나, 디렉터리 권한이 그 UID에 쓰기를 주지 않는다 | exports의 rw, 서버 디렉터리의 권한 |
클라이언트의 root가 만든 파일 소유자가 nobody(배포판에 따라 nfsnobody) | root_squash가 root를 낮춰 취급했다 | 정상 동작이다 |
| 삼바 접속에서 비밀번호가 계속 거부된다 | 삼바 비밀번호를 등록하지 않았다 | smbpasswd -a 사용자 |
smb.conf를 고친 뒤 공유가 사라졌다 | 문법 오류 | testparm으로 검사 |
| 서비스 | 하는 일 |
|---|
| Gopher | 메뉴 방식으로 정보를 찾아가는 서비스. 웹의 전신 |
| Usenet | 뉴스그룹 — 주제별 게시판. 프로토콜은 NNTP |
| Archie | FTP 서버의 파일을 검색해 주는 서비스 |
| Veronica | Gopher 안의 내용을 검색 |
| IRC | 실시간 채팅 |
| WAIS | 문서 데이터베이스 검색 |
| Telnet | 원격 접속 |
- Gopher는 웹(WWW)이 나오기 전의 정보 검색 서비스다. 메뉴를 따라 내려가는 방식이라 하이퍼링크가 없었다.
- Usenet은 뉴스그룹이고 프로토콜이 NNTP(Network News Transfer Protocol)다.
- Archie는 FTP 검색이다. 이름이 낯설어 보기로 쓰이기 쉽다.
| 검색 서비스 | 무엇을 찾아 주나 |
|---|
| Archie | 익명 FTP 서버에 있는 파일 이름 |
| Veronica | Gopher 서버들의 메뉴 항목 |
| WAIS | 문서의 본문 내용(키워드 검색) |
- 셋 다 "검색"이지만 뒤지는 대상이 다르다. Archie–FTP, Veronica–Gopher로 짝을 지어 둔다.
- Gopher와 WWW의 차이는 문서를 잇는 방식이다. Gopher는 위에서 아래로 메뉴를 골라 내려가고, WWW는 문서 속 하이퍼링크를 눌러 어디로든 건너뛴다. Gopher는 70번, WWW(HTTP)는 80번 포트다.
- Usenet은 메일과 달리 "여럿이 함께 보는 게시판" 이다. 글은
comp.os.linux처럼 점으로 나뉜 주제별 뉴스그룹에 올라간다. NNTP의 포트는 119번이다.
- 리누스 토르발스가 1991년에 리눅스를 처음 알린 곳도 Usenet의 뉴스그룹
comp.os.minix였다. 1주 차에 본 리눅스의 탄생과 이어진다.
| 이름이 닮은 프로토콜 | 무엇에 쓰나 |
|---|
| SMTP | 메일 전송 |
| NNTP | 뉴스그룹(Usenet) 전송 |
| NTP | 시간 동기화 |
| SNMP | 네트워크 장비 관리 |
- 넷은 철자가 한두 글자씩만 달라 보기에 함께 나온다. 약자를 풀어서 가른다 — SMTP의 M은 Mail, NNTP의 둘째 N은 News, NTP의 T는 Time, SNMP의 M은 Management다.
| 묶음 | 서비스 |
|---|
| 파일 공유·전송 | FTP · NFS · Samba · SCP · SFTP |
| 원격 접속 | TELNET · SSH · rlogin |
| 정보 검색 | WWW · Gopher · Archie · WAIS |
| 메시지·게시판 | 메일 · Usenet · IRC |
이 묶음이 그대로 문제가 된다. 예를 들어 WWW · SAMBA · TELNET · GOPHER 중에서 성격이 다른 것을 고르라면, WWW·Gopher는 정보 검색, TELNET은 원격 접속, SAMBA는 파일 공유이므로 무엇을 기준으로 묶는지 문장을 잘 읽어야 한다.
| 서비스 | 하는 일 | 포트 |
|---|
| DHCP | IP 주소를 자동으로 할당 | 67/68 |
| NTP | 시간 동기화 | 123 |
| SNMP | 네트워크 장비 관리·감시 | 161 |
| LDAP | 디렉터리(계정 정보) 서비스 | 389 |
| Syslog | 로그 수집 | 514 |
- DHCP는 IP 자동 할당, NTP는 시간 맞추기라는 대응을 기억한다. DNS(이름 변환)와 헷갈리지 않도록 주의한다.
- DHCP의 두 포트는 67번이 서버, 68번이 클라이언트다. DHCP가 내려 주는 것은 IP 주소만이 아니라 서브넷마스크·기본 게이트웨이·DNS 서버 주소까지다. 9주 차에 손으로 넣던 값들을 한꺼번에 받는 셈이다.
- 주소는 영구히 주는 것이 아니라 기간을 정해 빌려준다(임대). 기간이 끝나기 전에 갱신하지 않으면 그 주소는 다른 컴퓨터에 돌아간다.
- 이 표의 서비스 가운데 DHCP·NTP·SNMP는 UDP를 쓴다. 짧게 묻고 답하는 일이라 연결을 맺는 TCP가 필요 없다.
내일은 이번 주의 인터넷 서비스를 한 장으로 묶어 정리한다.
- NFS : 유닉스·리눅스 사이의 파일 공유 시스템. RPC를 기반으로 하며
/etc/exports로 설정한다.
- RPC : 원격 프로시저 호출. NFS가 사용하는 통신 방식이다.
- 삼바(Samba) : 리눅스와 윈도 사이의 파일·프린터 공유를 제공하는 소프트웨어.
- SMB / CIFS : 삼바가 사용하는 파일 공유 프로토콜과 그 확장 규격.
- NetBIOS : 삼바에서 이름 관리를 담당하는 규격.
- Gopher : 메뉴 방식으로 정보를 찾던 웹 이전의 서비스.
- Usenet : 주제별 뉴스그룹 서비스. NNTP 프로토콜을 사용한다.
- Archie : FTP 서버에 있는 파일을 검색해 주던 서비스.
📝 연습 문제
선택지를 클릭하면 정답·해설이 펼쳐집니다.
다음 중 유닉스와 리눅스 시스템 사이에서 디렉터리를 공유해 원격 디렉터리를 로컬처럼 사용하는 서비스로 알맞은 것은?
다음 중 리눅스와 윈도 시스템 사이에서 파일과 프린터를 공유하기 위해 사용하는 소프트웨어로 알맞은 것은?
다음 중 삼바의 구성 요소와 거리가 먼 것으로 알맞은 것은?
다음 중 웹이 등장하기 전에 메뉴 방식으로 정보를 찾아가던 서비스로 알맞은 것은?
다음 중 Usenet 뉴스그룹에서 사용하는 프로토콜로 알맞은 것은?