개인 서버 구축 세번째 시간 입니다.
오늘은 M$ 윈도우에서 "파일 공유", "네트워크 공유 문서" 등으로 불리우는 Samba 서버를 구축해 보도록 하겠습니다.
대부분 Windows를 사용하면서 Linux를 공부하신다는 점에서 미루어,
Windows PC와 Linux PC 간의 파일을 가장 효과적으로 공유할 수 있는 방법의 하나인 Samba에 대해 알아봅니다.
우선 2대의 PC가 있다는 전제에서 시작하며, 한 대는 Windows PC이고 다른 하나는 Linux PC 입니다.
(당연 Linux PC가 Samba의 서버 역할을 할 것이며, 하모니카가 설치되어 있겠지요.)
■ samba 설치
samba는 터미널에서 아래 명령으로 쉽게 설치할 수 있습니다.
$ sudo apt-get install samba
[sudo] password for user: 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 다음 패키지를 더 설치할 것입니다: libsmbclient python-samba samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules smbclient 제안하는 패키지: bind9 bind9utils ldb-tools ntp smbldap-tools winbind heimdal-clients 다음 패키지를 업그레이드할 것입니다: libsmbclient python-samba samba samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules smbclient 9개 업그레이드, 0개 새로 설치, 0개 제거 및 267개 업그레이드 안 함. 7,181 k바이트 아카이브를 받아야 합니다. 이 작업 후 13.3 k바이트의 디스크 공간을 더 사용하게 됩니다. 계속 하시겠습니까? [Y/n] y -- 이하 생략 -- |
■ samba 설정
samba는 설치보다 설정이 더 중요합니다.
※ 대부분 설정 단계에서 어려움을 느끼고 중도 포기하게 되는데요.
일단 가장 간략하게 구동 가능한 상태까지를 세팅해보고, 추가 옵션은 이후 별도 세션에서 다루도록 하겠습니다.
$ sudo vi /etc/samba/smb.conf
================================================================================ # workgroup는 네트워크 공유 그룹 이름입니다. # 기업이나 단체에서는 단일 네트워크 내에 여러 PC가 있기에 group을 지정합니다만, # 개인용으로 사용하시는 거라면 group이 별 의미가 없습니다. 그냥 그대로 둡니다. workgroup = WORKGROUP # 서버 이름을 표시합니다. Windows에서 네트워크로 검색해보면 나오는 PC 이름에 해당합니다. # 기본으로는 호스트명(%h)을 표시하도록 되어 있습니다. 본인이 원하는 이름으로 바꾸셔도 됩니다. # (예) server string = HamoniKR Samba server server string = %h server (Samba, Linux Mint) # samba 서버에 접속할때, ID 계정을 확인하여 접속 유무를 허용한다면 "user"로 설정하고, # ID 계정 없이 누구나 접속하게 하려면 "share"로 설정합니다. # 여기서는 보안상 계정 확인이 안전하므로, user 상태 그대로 두겠습니다. security = user # 설정에 필요한 항목들이 너무너무 많습니다만, 세부적인건 고급 세션 시간에 다루기로 하고 건너뜁니다. # 제일 아래쪽으로 가시면 대괄호로 묶여 있는 5~6라인 정도의 글뭉치들이 보일겁니다. 예: [print$] # 이를 참조해서 공유 디렉터리를 아래와 같이 등록해 줍니다. [Data] # 공유할 폴더명 입니다. 적절한 이름을 넣어 주세요. comment = data # 폴더명과 같이 표현될 설명문 입니다. path = /var/data # 실제 서버의 디렉터리 경로(path) 입니다. writable = yes # 파일을 저장할 수 있도록 쓰기(write) 권한을 부여합니다. 읽기전용이면 "no" public = yes # 누구나 접근할 수 있도록 공개(public) 설정을 줍니다. ================================================================================ |
위 설정은... /var/data 디렉터리를 누구나 접근해서 읽고/쓰기를 할 수 있도록 설정한 내용입니다.
설정과 같이 /var/data 디렉터리를 만들어줍니다.
$ sudo mkdir /var/data
그리고 누구나 접근할 수 있게 퍼미션을 지정합니다.
$ sudo chmod 777 /var/data
■ 사용자 등록
samba로 접근시 사용할 계정을 등록합니다. 앞서 설정파일에서 "user"로 정의하였으므로 사용자를 등록해야 합니다.
실제 리눅스 시스템에 등록되어 있는 계정과 samba 계정은 서로 다르다고 보시면 됩니다.
그렇지만 개인적으료 사용할때는 구분에 의미는 없으므로,
시스템 계정과 samba 계정을 매칭하는 방식으로 등록하도록 하겠습니다.
아래 명령으로 samba 사용자를 추가합니다.
$ sudo smbpasswd -a ***** # ← 여기서 ***** 부분에 ID를 기록하며, 이미 등록되어 있는 ID여야 합니다.
New SMB password: # 적적한 패스워드를 입력합니다. 편의상 시스템 ID의 암호를 같이 사용해도 됩니다.
Retype new SMB password:
Added user *****.
■ 서비스 구동
간략히 설정을 마쳤다면, samba 서비스를 구동합니다. (smbd, nmbd)
$ sudo service smbd restart
smbd stop/waiting
smbd start/running, process 4320
$ sudo service nmbd restart
nmbd stop/waiting
nmbd start/running, process 4409
■ 클라이언트 접속
이제 Windows PC의 탐색기를 열고, 상단 주소입력창에 아래와 같이 samba 서버의 IP 주소를 넣어 봅니다.
\\192.168.xx.xx # IP 앞에 역슬래쉬(\)가 2개 들어갑니다. 슬래쉬(/) 아닙니다.
위 그림과 같이 앞서 설정한 "Data" 공유 디렉터리가 나타납니다.
더블클릭하면 아래와 같이 ID/PW를 묻는 창이 나타나며, 앞서 설정한 ID/PW를 넣고 로그인합니다.
※ 위 설정은 기본 설정만 다룬 관계로 별다른 제한 없이 접속해서 사용할 수 있는 개인용으로 세팅되었습니다. (초급)
이외에도 접속 대역 제한, 사용자 제한, 권한 설정 등 많은 세부 설정사항들이 있으나,
이는 추후 중급/고급 섹션에서 다루도록 하겠습니다.
--------------------------------------------------------------
# 개인 서버 구축 가이드 - 전체 목록
[개인 서버 구축 가이드] ① SSH 서버 (openssh-server)
[개인 서버 구축 가이드] ② FTP 서버 (vsftpd)
[개인 서버 구축 가이드] ③ 파일 공유 서버 (samba-초급)
[개인 서버 구축 가이드] ④ 파일 공유 서버 (samba-중급)
[개인 서버 구축 가이드] ⑤ 파일 공유 서버 (samba-고급)
[개인 서버 구축 가이드] ⑥ 파일 공유 서버 (nfs)
[개인 서버 구축 가이드] ⑦ 파일 공유 서버 (autofs)
[개인 서버 구축 가이드] ⑧ DB 서버 (mariadb)
--------------------------------------------------------------
삼바 설정 및 사용자 등록을 GUI 툴을 사용하여 쉽게 하실 수도 있습니다.
아래 명령으로 GUI 툴을 설치합니다.
$ sudo apt-get install system-config-samba
"메뉴 > 프로그램 > 관리 > 삼바"를 실행하거나, 터미널에서 아래와 같이 입력합니다.
$ sudo system-config-samba
아래 그림과 같이 GUI 환경에서 삼바 서버 설정 및 사용자 관리를 할 수 있습니다.
※ 사용자명 입력시 아래와 같이, 리눅스 계정과 Samba 계정을 매칭시켜 줍니다.
(동일해도 무방)
- Unix 사용자명 : 현재 리눅스 시스템에 등록되어 있는 사용자ID를 선택합니다.
- Windows 사용자명 : Windows에서 접속할때 사용할 ID를 지정합니다.