728x90

삼바는 GPL 기반의 자유 소프트웨어로 리눅스와 윈도우 간 디렉토리, 파일, 프린터, USB 등을 공유하는데 사용할 수 있다.
삼바는 TCP/IP를 기반으로 NetBIOS상에서 동작하는 'SMB(Server Message Block) 프로토콜'을 이용한다.
 
삼바에서 설정한 그룹과 호스트명이 윈도우의 Network Neighborhood에 컴퓨터 이름으로 표시된다. 또한 삼바를 이용하면 상대 호스트의 IP주소 대신 '컴퓨터 이름'을 이용하여 접속할 수 있다. 이를 'WINS(Windows Internet Name Service)'라 한다. 'CIFS(Common Internet File System)'는 SMB를 인터넷까지 확장한 표준 프로토콜로, 유닉스와 유닉스 환경을 동시에 지원한다.
 
삼바 서버는 smbd와 nmbd로 구성되어 있다.
 nmbd : UDP(137, 138)
UDP 137, 138번 포트를 이용하여 컴퓨터(호스트)를 브로드 캐스팅 방식으로 검색한 후, TCP 139번 포트를 이용하여 컴퓨터 이름으로 접속한다.
 
smbd : TCP(445)
삼바 프로토콜의 주요 기능을 담당하여, TCP 445번 포트를 이용한다. 삼바 서버의 IP주소만 알고 있어도 IP주소를 이용한 직접 접속 방법으로 삼바 서비스를 사용할 수 있다.
 
삼바 서버의 구성 내용에 따라 TCP 139번, 445번 포트와 UDP 137번, 138번 포트를 방화벽에서 열어주어야 한다.
 

[2] 삼바 서비스 설치와 구성
(1) 삼바 관련 패키지 설치 
패키지 관리 프로그램을 이용하여 삼바 관련 패키지를 설치한다.
$ yum -y install samba samba-common samba-client
 
삼바 관련 주요 패키지 
samba : 삼바 데몬, 관련 라이브러리 및 스크립트 등을 포함하는 핵심 패키지
samba-common : 삼바 서버 및 클라에서 공통으로 사용하는 설정 및 명령어를 포함한다. 대표적으로 smb.conf 설정 파일과 설정파일을 검사하는 testparm등이 있다.
samba-client : smbclient, smbtree 등 삼바 클라 관련 명령어를 포함한다.
smaba-swat(Samba Web Administration Tool) : 삼바의 설정파일인 smb.conf를 웹을 이용하여 관리할 수 있도록 지원하는 패키지이다.
 
(2) 삼바 서비스 실행
주요 서비스 데몬인 smb와 nmb를 시작하고 동작을 확인.
이때, systemctl - l status <service> 명령어 형식을 이용.
 
$ systemctl start smb.service nmb.service
$ systemctl -l start smb.service nmb.service
 
'systemctl enable <service> 명령어 형식을 이용하여 부팅 시 자동으로 실행하도록 설정할 수 있다 .
'systemctl disable <service>' 명령어 형식을 이용하면 자동실행을 해제할 수 있다.
서비스의 설정을 변경한 경우, 'systemctl restart <service>' 명령어 형식을 이용하여 서비스를 재실행해야 한다.
 
 
(3) smb.conf 를 이용한 삼바 서비스 설정
삼바 서버는 /etc/samba/smb.conf 를 환경설정 파일로 이용한다.
smb.conf 설정 파일은 Global Section과 Share Definition 영역으로 구분되며, '[ ]' 기호를 이용하여 세부 섹션을 구성한다.
 
smb.conf 설정 파일의 주요 구성 항목 ( 주석 / 섹션 / 값 설정 )
주석 : # 혹은 ; 로 시작하는 행은 주석(comment)이다.
 
섹션 : '[ ]'을 이용하여 섹션을 정의한다. 이후 정의한 값들은 해당 섹션 내에서 유효하다.
[global] - 삼바 서비스의 전체 설정을 담당한다.
[디렉토리명] - 해당 디렉토리에 대한 공유 설정 등을 지정한다.
[printers] - 프린터 공유 방식을 설정한다
 
값 설정 : 'name = value' 형식으로 옵션에 대한 값을 설정한다.
 
Global Section 의 주요 설정 항목
workgroup
:공유 그룹명을 지정하며, 윈도우의 작업 그룹과 같이 동작한다. 기본값 : workgroup = MYGROUP
server string
:서버에 대한 설명이다. 
netbios name
:이름을 이용하여 접속할 때 사용하는 명칭이다.
interface
:여러 개의 네트워크 인터페이스를 갖고 있을 경우 어떠한 것을 이용할지 설정한다. 이때 lo(localhost)는 생략할 수 없다. 
hosts allow
 
log file
 
max log size 
 
security
: 클라가 삼바서버에 접근할 때 인증레벨을 부여하는 보안옵션을 설정한다.
 
passdb backend
:security 가 user일 경우 사용하는 패스워드 저장 방식을 지정한다.
hid dot files = no 
: 리눅스의 숨김파일이 윈도우 운영체제의 파일목록에 표시된다 =.
 
smb.conf 의 security 옵션
user
: 삼바 서버에 접속할 시, OS에 로그온한 사용자명으로 패스워드를 확인한다. 기본 설정값이다.
share
: 인증 없이 삼바 서버에 접근할 수 있다. deprecated 되었다.
server 
: 윈도우 서버와 같은 다른 삼바 서버에 사용자명과 패스워드를 전달하여 확인한다. ( deprecated )
domain
: 윈도우 서버의 도메인 컨트롤러에 사용자명과 패스워드를 전달하여 확인한다. samba 3.0 부터 ads를 지정하여 Active Directory Service를 이용할 수 있다.
 

 

삼바서버는 /etc/samba/smb.conf 를 환경설정 파일로 이용하며, 각 공유 폴더(항목)별로 설정값을 지정한다.

삼바의 공유 폴더의 주요 설정 옵션과 설명은 아래와 같다.

[디렉토리 이름] - '[ ]' 사이에 공유폴더 이름을 지정한다.
comment -> 공유 폴더에 대한 설명을 기술한다
path -> 공유 디렉토리의 절대 경로를 지정한다
read only = yes -> 읽기만 가능하도록 설정한다
writiable = yes ->쓰기 가능하도록 설정한다
write list = [사용자명] -> 쓰기 가능한 사용자를 지정한다. @를 앞에 붙여서 그룹을 지정할 수 있다.
valid users = [사용자명] -> 접근 가능한 사용자를 지정하며, 만일 별도로 지정하지 않을 경우 전체 사용자가 접근 가능하게 된다.
public = no -> 개인 사용자만 사용할 수 있도록 설정한다
browseable = no -> 이용 가능한 공유 리스트에 표시되지 않도록 설정한다.
create mask = 값 -> 파일을 생성할 때 사용되는 기본 접근 모드를 지정한다 (0644)
follow symlinks = no -> 심볼릭 링크를 따르지 않도록 설정하여 잠재적인 보안위협을 제거한다.
printable = yes -> 삼바 프린터를 네트워크 프린터로 공유한다.
 
 
/etc/samba/smb.conf 설정 사례
[www]
comment = Web Directory
path = /usr/local/apache/htdocs
valid users = ihduser kaituser (구분자로 , 사용가능)
writables  = yes
 
윈도우에서 접근할 때 표시되는 폴더이름은 www으로 설정한다 
간단한 설명은 Web Directory이다 
공유 디렉토리 경로는 /user/local/apache/htdocs이다 
접근 가능한 사용자는 ihduser, kaituser만 가능하며, 두 사용자 모두 파일 생성 및 삭제 권한을 부여한다.
 
 
(4) 삼바를 이용할 사용자 등록과 패스워드 설정
삼바를 이용할 리눅스 계정을 등록한다
$ adduser smbuser
$ passwd smbuser
 
필요할 경우 /etc/samba/smbusers 설정파일을 이용하여 '리눅스 계정'과 '삼바 이용자명'을 맵핑한다.
/etc/samba/smbusers 파일은 시스템의 계정과 관계없는 삼바의 고유한 설정파일이다. 다음 내용은 'root administrator 및 admin으로 매칭'되고, 'nobody는 guest, pcguest, smbguest로 매칭'된것을 보여준다.
 
$ vi /etc/samba/smbusers
# Unix_name = SMB_name1 SMB_name2
root = administrator admin
nobody = guest pcguest smbguest
 
smbpasswd 명령을 이용하여 삼바 계정과 패스워드를 설정한다. 이때 삼바 계정은 리눅스 시스템에 등록된 계정이어야 한다. smbpasswd는 삼바 사용자이 생성과 삭제, 패스워드 변경, 사용자 활성(enable) 및 비활성화(disable) 등을 수행하는 명령어로 'smbpasswd [옵션] [사용자계정]'을 실행 형식으로 한다. 아무런 옵션을 지정하지 않으면 패스워드를 변경하며 사용자 계정을 지정하지 않으면 현재 로그인한 사용자를 대상으로 한다.
 
smbpasswd 의 주요 옵션(root권한 필요)
-a 
: 삼바 사용자 계정을 추가하고 패스워드를 설정한다.  추가하는 삼바 계정은 리눅스 시스템에 등록된 계정이어야 한다.
 
-x
: 삼바 사용자 계정을 제거한다.
 
-d
: 삼바 사용자 계정을 비활성화한다 
 
-e
: 삼바 사용자 계정을 활성화
 
-n
: 패스워드를 제거하여, 패스워드 없이 로그인이 가능하도로고 설정한다 
smb.conf 설정항목으로 'null passwords =yes' 를 추가해야한다. 
 
pdbedit 명령을 이용하여 삼바 사용자 목록 및 세부 내용을 확인할 수 있다. pdbedit 명령은 'pdbedit [옵션] [사용자계정]'을실행 형식으로 하며, 삼바 사용자 계정과 패스워드가 기록된 passdb.tdb 의 내용을 보거나 젖ㅇ보를 설정할 수 있다.
 
pdbedit 명령의 주요 옵션 
-L 
등록된 삼바 사용자의 목록을 출력
 
-v
사용자 목록 출력시 상세한 정보를 표시 
 
-u
사용자 이름을 지정
 
-a
삼바 사용자 계정
-r
삼바 사용자 계정
-x 
삼바 사용자 계정을 제거
 
 
 
이어서
 
 
https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-%EC%82%BC%EB%B0%94SAMBA-%EC%84%A4%EC%B9%98-%EC%84%A4%EC%A0%95-%E2%80%BB-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

🐧 삼바(SAMBA) 설치 & 설정 방법 [리눅스 ↔ 윈도우]

삼바(SAMBA) 란? 윈도우, 리눅스 OS 끼리 파일을 서로 옮길 경우 이 일이 얼마나 번거로운지에 동감할 것이다. 보통은 FTP, SFTP 서버를 열어두고 FileZilla 같은 파일공유 툴을 이용하여 옮겼을 것이다.

inpa.tistory.com

 

'Linux' 카테고리의 다른 글

[Linux] /etc/fstab 파일  (0) 2023.05.31
[Linux] 커널 컴파일 (Kernel compile)  (0) 2023.05.31
[Linux] Shell 쉘 정리  (0) 2023.04.29
[Linux] rpm, dnf  (0) 2023.04.07
[Linux] Shell programming | Shell script 쉘스크립트 정리 (수정)  (0) 2023.02.08

+ Recent posts