별의 공부 블로그 🧑🏻‍💻
728x90
728x170

삼바(SAMBA) 서버

삼바(SAMBA)의 개요

  • 마이크로소프트와 인텔이 스템이 다른 시스템의 디스크나 프린터 등의 자원을 공유할 수 있도록 SMB(Server Message Block) 프로토콜을 개발하였다.
  • 삼바는 SMB를 이용하여 리눅스를 비롯한 유닉스 계열 운영체제와 윈도우 운영체제간의 자료 공유 및 하드웨어를 공유할 수 있도록 해준다.
    • 디렉터리 및 파일 공유
    • 프린터 공유
    • CD-ROM 공유
    • DVD-ROM 공유
    • USB 공유
  • 현재 SMB 프로토콜은 유닉스와 윈도 환경을 동시에 지원하는 CIFS(Common Internet File System)로 확장되었다.
    • CIFS(Common Internet File System)
      • IETF(Internet Engineering Task Force)에 의해 인터넷 표준으로 제안되었다.
      • TCP/IP 사용
      • NetBIOS 프로토콜 지원
      • LanManager 기능 제공

 

삼바 설치하기

  • 삼바(SAMBA)
    • GPL 기반의 공개 소프트웨어 및 자유 소프트웨어
    • 소스 파일 다운로드 : http://www.samba.org
    • 소스 설치 방법
      • 전통적인 방법
        • configure
        • make
        • make install
    • 레드햇 계열 리눅스에서는 rpm 패키지로 배포된다.

 

삼바 관련 주요 RPM 패키지

  • samba
    • 삼바 서버 패키지
    • 다음의 내용이 들어 있는 패키지로, 서버 구성 시에 반드시 설치해야 한다.
      • 삼바 데몬
      • 서버 관련 라이브러리
      • 실행 데몬 스크립트 등
  • samba-common
    • 삼바 서버와 클라이언트 모두에게 필요한 패키지
    • 삼바 서버의 주요 환경 설정 파일인 smb.conf 를 포함한다.
    • 다음의 명령어를 포함한다.
      • smbpasswd
      • testparm 
  • samba-client
    • 삼바 클라이언트 명령어가 들어 있는 패키지
    • 다음의 명령어를 포함한다.
      • smbclient
      • smbtree 
  • yum을 이용해서 다음과 같이 간단하게 설치할 수 있다.
# yum install samba
# yum install samba-common
# yum install samba-client

 

환경 설정 파일 : smb.conf

  • 삼바 서버의 환경 설정 파일
  • 삼바 서버를 제어하고, 공유시킬 시스템 자원에 대한 다양한 설정을 할 수 있다.
  • /etc/samba 디렉터리 내에 존재한다.
  • 파일 안의 구성은 윈도의 환경 설정 파일 win.ini 와 비슷하다.
  • smb.conf 파일은 크게 2가지 영역으로 나누어진다.
    • Global Setting 영역
    • Share Definitions 영역
  • 각 항목의 설정은 [ ] 기호를 이용해서 섹션(Section)으로 구분한다.

 

smb.conf 파일 내용 확인해보기
# cat /etc/samba/smb.conf
더보기
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
	workgroup = SAMBA
	security = user

	passdb backend = tdbsam

	printing = cups
	printcap name = cups
	load printers = yes
	cups options = raw

[homes]
	comment = Home Directories
	valid users = %S, %D%w%S
	browseable = No
	read only = No
	inherit acls = Yes

[printers]
	comment = All Printers
	path = /var/tmp
	printable = Yes
	create mask = 0600
	browseable = No

[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	write list = @printadmin root
	force group = @printadmin
	create mask = 0664
	directory mask = 0775

 

(1) smb.conf 파일 내부의 유형

  • #으로 시작하는 행
    • 주석 으로 간주되어 무시됨.
  • ;으로 시작하는 행
    • 주석 으로 간주되어 무시됨.
    • 보통 이런 행은 설정행이 작동하지 않도록 설정 하거나 설명을 추가할 때 사용함.
    • #과 ; 모두 주석으로 사용되는 이유
      • 유닉스 계열에서의 주석 : #
      • 윈도에서의 주석 : ;
  • [ ]을 사용하는 행
    • 섹션을 정의하는 역할
    • 하나의 섹션이 정의된 후, 그 다음 섹션이 정의될 때까지의 행들은 해당 섹션에 속함.
  • name = value 
    • 사용하는 옵션과 해당 값을 설정하는 행

 

(2) smb.conf의 주요 섹션

  • [global] : 삼바 서버의 전체적인 환경 설정을 담당하는 섹션
  • [homes] : 각 사용자들이 자신의 홈 디렉터리로 접근할 때의 권한을 설정하는 섹션
  • [printers] : 프린터 관련 권한을 설정하는 섹션

 

(3) Global Setting 영역의 주요 설정

항목 1

Workgroup = MYGROUP
  • 윈도우의 작업 그룹에 해당하는 항목
  • 공유 그룹명 지정

 

항목 2

server string = Samba Server
  • 서버에 대한 설명 설정

 

항목 3

netbios name = MYSERVER
  • 윈도우에서 이름으로 접속할 때 관련 이름 지정

 

항목 4

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
  • 네트워크 인터페이스별로 접근 제어를 할 때 설정

 

항목 5

host allow = 127.      192.168.12.   192.168.13.
  • 삼바 서버에 접속을 허용할 호스트를 지정하는데 사용
  • 접속을 허용할 호스트는 IP 주소, 호스트명 등을 지정할 수 있음.
    • 네트워크/넷마스크 형태로도 지정할 수 있음.
  • EXCEPT라는 키워드와 와일드 카드 문자 도 사용 가능함.
  • 삼바 서버에 접속이 불가능하게 하려면 hosts deny로 설정하면 됨.

 

설정 예

설정 예제 1

hosts allow = 192.168.1.  127.
  • 192.168.1.0 네트워크 대역에 속한 모든 호스트들과 로컬 시스템(127.0.0.0 네트워크)에서 접속이 가능함.

 

설정 예제 2

host allow = 192.168.1. EXCEPT  192.168.1.220   192.168.1.244
  • 192.168.1.220과 192.168.1.244를 제외한 192.168.1. 네트워크에 속한 모든 호스트들이 삼바 서버에 접속할 수 있음.

 

설정 예제 3

hosts allow = 192.168.1.0/255.255.255.0
  • 192.168.1.0 네트워크에 속한 모든 호스트들의 접속을 허용함.

 

설정 예제 4

hosts allow = starrykss_pc, yuloje_pc
  • starrykss_pc와 yuloje_pc라는 호스트들만 삼바 서버 접속을 허용함.

 


항목 6

log file = /var/log/samba/log.%m
  • 삼바 서버에 접속하는 호스트의 로그를 기록하는 파일을 지정함.

 

항목 7

max log size = 50
  • 로그 파일의 최대 크기를 설정하는 부분
  • 단위 : KB
  • 설정된 값을 초과하게 되면 .old라는 확장자를 갖는 파일로 저장하고, 새로운 파일이 생성됨.
  • 0으로 설정하면 파일 크기의 제한이 없음.

 

항목 8

security = user
  • 삼바 서버에 접속할 때 인증 모드 를 설정하는 항목
  • 주요 모드
    • user : 삼바 서버에 접속할 때 사용자명  패스워드 를 입력해야 함.
    • domain 또는 ads
      • 윈도우의 도메인 컨트롤러(Domain Controller) 에 전달하여 유효한 사용자 여부를 확인할 때 사용
      • ads : Active Directory Server 를 사용하는 경우에 지정

 

항목 9

passdb backend = tdbsam
  • security가 user일 때 사용자의 패스워드를 설정하는 방식

 

(4) Share Definitions 영역의 주요 옵션

  • comment : 간단한 설명 설정
  • path : 공유 디렉터리의 경로 설정
  • read only : 공유 디렉터리를 읽기 전용으로 설정
  • writable, write ok : 공유 디렉터리를 쓰기 가능하게 설정
  • valid users : 공유 디렉터리를 이용할 수 있는 사용자 지정
  • write list
    • 공유 디렉터리에 접근 및 쓰기 권한을 행사할 수 있는 사용자 지정
    • 그룹인 경우, 그룹명 앞에 @를 붙이면 됨.
  • public, guest ok : 다른 사용자들이 이용할 수 있도록 설정할 때 사용
  • browseable, browsable : 공유 디렉터리의 리스트를 보여줄 때 사용
  • printable : 공유 디렉터리에 스풀 파일을 지정할 때 설정
  • create mask, create mode : 파일을 생성할 때 허가권을 지정할 경우 설정

 

관련 명령어

 smbclient

  • 리눅스 및 유닉스에서 사용하는 삼바 클라이언트 명령
  • 윈도 서버로 접근할 때 사용된다.
  • 사용법
    • ftp 클라이언트 명령과 유사하다.
      • 접속한 후에 특정 명령어를 입력하여 작업 수행
      • 접속된 후에 ? help라고 입력하면, 사용 가능한 명령어의 목록을 볼 수 있다.

 

사용법

$ smbclient [option] [호스트명]
  • 대상이 되는 호스트명
    • 192.168.12.22처럼 IP 주소 도 가능
    • 동일한 작업 그룹을 사용할 때,
      • 리눅스 시스템인 경우
        • 호스트 이름
      • 윈도우 시스템인 경우
        • 컴퓨터 이름
    • 호스트명 다음에 공유 디렉터리명을 입력할 수 있다.
    • 다음 기호 모두 사용 가능
      • \(Back Slash)
        • 윈도우에서 NetBIOS를 이용하여 접속할 때
          • 리눅스에서 smbclient 명령을 이용하여 \로 접근할 때는 일반적인 윈도우에서 사용하는 개수의 2배로 지정한다.
      • /(Slash)
        • 호스트명 앞 : 2개 사용
        • 디렉터리 구분 : 1개 사용
  • 윈도우 호스트에 접근할 때, 윈도우 운영체제가 대소문자를 구분하지 않는다.
    • smbclient 명령어도 대소문자를 구문하지 않는다.

 

주요 옵션

주요 옵션 설명
-L 접속하려는 삼바 서버의 공유 디렉터리 정보 출력
- --list
-U - 삼바 서버에 접속할 때 사용자명을 입력함.
- --user=사용자명[%패스워드]
-M - 지정한 호스트명에 메시지를 전송할 때 사용
- 명령을 입력하고 전송하려면 [CTRL]+[D]를 누르면 됨.
- --message NetBIOS name
  •  

 

사용 예

예제 1

  • localhost의 공유된 목록을 확인함.
$ smbclient -L localhost

 

더보기

 

Enter SAMBA\starrykss's password: 
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	IPC$            IPC       IPC Service (Samba 4.10.16)
  source          Disk
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------

 

  • 패스워드가 설정되어 있는 경우, 패스워드를 입력하고 설정되어 있지 않으면 [Enter]키를 누름.
  • 공유된 디렉터리
    • Type 항목에서 Disk라고 쓰여져 있는 부분
  • 위의 예제에서는 source라는 디렉터리가 공유되어 있음.

 

예제 2

  • joon 이라는 호스트에 adminstrator 계정으로 접근하여 공유된 목록 확인
$ smbclient -L joon -U administrator

 

예제 3

  • joon 이라는 호스트에 adminstrator 계정으로 접근하는데 패스워드는 1234 임.
$ smbclient -L joon -U adminstrator%1234

 

예제 4

  • localhost의 공유 디렉터리인 source에 접속하여 ls 명령을 입력해서 파일을 확인함.
$ smbclient \\\localhost\\source
Enter SAMBA\starrykss's password: 
...
smb:  \> ls
  .                             D         0     Thu   Feb   5   19:39:31  2021
  ..                            D         0     Thu   Feb   5   19:39:31  2021
  httpd-2.2.29.tar.bz2          A   5625498     Thu   Feb   5   19:38:54  2021
  • 사용 가능한 명령은 ?를 입력해서 확인할 수 있음.
  • 파일을 복사하려면 ftp와 동일하게 get 명령을 사용하면 됨.
  • 접속을 종료하려면 quit 명령을 사용하면 됨.

 

예제 5

  • joon이라는 호스트의 공유 디렉터리인 source에 adminstrator 계정으로 접근함.
  • // 호스트명, 디렉터리명 앞에서는 \ 를 2배로 사용해준다. 
$ smbclient \\\\joon\\source -U adminstrator

 

예제 6

  • 호스트명 앞 : / 2개
  • 디렉터리명 앞 : / 1개
$ smbclient //localhost/source
Enter SAMBA\starrykss's password: 
...
smb:  \> ls
  .                             D         0     Thu   Feb   5   19:39:31  2021
  ..                            D         0     Thu   Feb   5   19:39:31  2021
  httpd-2.2.29.tar.bz2          A   5625498     Thu   Feb   5   19:38:54  2021
  • localhost의 공유 디렉터리인 source에 접근함.

 

 smbstatus

  • 삼바 서버에 사용하는 명령어
  • 클라이언트와 연결된 상태 출력

 

사용법

$ smbstatus

 

사용 예

  •  현재 연결된 클라이언트 상태 정보 출력
$ smbstatus

 

 testparm

  • 삼바의 환경 설정 파일인 smb.conf 의 설정 여부 확인

 

사용법

$ testparm [파일 경로] [호스트명 IP주소]

 

사용 예

  • 현재 서버의 smb.conf 설정 확인
$ testparm

 

  • IP 주소가 192.168.5.13이고, 호스트명이 www인 삼바 서버의 환경 설정 파일 확인
$ testparm /etc/samba/smb.conf www 192.168.5.13

 

④ nmblookup

  • WINS 서버에 질의할 때 사용 하는 명령
  • DNS 서버에 질의하는 nslookup 명령과 유사하다.

 

사용법

$ nmblookup [option]

 

주요 옵션

옵션 설명
-U 조회할 서버 이름 지정
-R 조회할 이름 지정

 

사용 예

  • samba.org 라는 서버에 IRIX 그룹의 1B라는 이름을 조회함.
$ nmblookup -U samba.org -R 'IRIX#1B'

 

  • 브로드캐스트 영역에 있는 모든 이름을 조회함.
$ nmblookup '*'

 

 mount.cifs

  • CIFS 기반의 마운트 명령
  • 보통 윈도우에 공유된 디렉터리를 마운트할 때 사용한다.
  • 다음의 명령과 동일하다.
    • # mount -t cifs

 

사용법

# mount.cifs //공유서버/디렉터리  /마운트_할_디렉터리

 

사용 예

  • 192.168.5.13 의 공유된 디렉터리인 photo를 /mnt로 마운트 함.
# mount.cifs //192.168.5.13/photo /mnt

 

⑥ smbpasswd

  • 삼바 사용자의 관련 정보를 변경하는 명령
    • 사용자 생성 및 삭제
    • 패스워드 변경
    • 활성 및 비활성화 등

 

사용법

$ smbpasswd [option] [사용자명]

 

주요 옵션

주요 옵션 설명
-a - 삼바 사용자를 추가할 때 사용
- 삼바 사용자는 리눅스 시스템에 존재하는 계정이어야 함.
-x 삼바 사용자를 제거할 때 사용
-d 삼바 사용자를 일시적으로 비활성화 할 때 사용
-e 삼바 사용자를 활성화할 때 사용
-n - 패스워드 없이 로그인이 가능하도록 할 때 사용
- smb.conf 파일에 다음을 추가로 설정해야 함.
=> null password = yes

 

사용 예

  • starrykss 라는 삼바 사용자를 생성하면서 패스워드를 부여함.
# smbpasswd -a starrykss

 

  • starrykss 의 삼바 패스워드 변경
# smbpasswd starrykss

 

  • 설정되어 있는 삼바 패스워드 변경
# smbpasswd

 

  • starrykss 삼바 사용자를 제거
# smbpasswd -x starrykss

 

  • starrykss 삼바 사용자를 비활성화
# smbpasswd -d starrykss

 

  • 비활성화된 starrykss 삼바 사용자를 활성화
# smbpasswd -e starrykss

 

  • starrykss 삼바 사용자의 패스워드를 없애서 암호 입력 없이 로그인이 되도록 설정
# smbpasswd -n starrykss

 

 pdbedit

  • 삼바 사용자의 데이터베이스 파일인 SAM database를 관리해주는 명령

 

사용법

# pdbedit [option] [사용자명]

 

주요 옵션

옵션 설명
-a - 삼바 사용자를 추가할 때 사용
- 삼바 사용자는 리눅스 시스템에 존재하는 계정이어야 함.
-L 등록된 삼바 사용자의 간단한 목록 출력
-v 등록된 삼바 사용자의 정보를 자세히 출력

 

사용 예

  • yuloje 라는 삼바 사용자를 생성하면서 패스워드 부여
# pdbedit -a yuloje

 

  • 등록된 삼바 사용자의 간단한 목록 출력
# pdbedit -L

 

  • 등록된 삼바 사용자의 정보를 자세히 출력
# pdbedit -L -v

 

공유 설정 예

예시 1

[sdata]
comment = share directory
path = /sdata
public = yes
write list = @insa
  • 윈도우에서 접근할 때의 폴더 이름은 sdata로 설정함.
  • 설명은 share directory로 설정함.
  • 공유 디렉터리 경로는 /sdata로 설정함.
  • 모든 사용자가 접근 가능하도록 설정함.
  • 파일 생성 및 삭제는 insa 그룹에 속한 사용자들만 가능하도록 설정함.

 

예시 2

[www]
comment = Web Directory
path = /usr/local/apache/htdocs
valid users = phpman webgirl
writable = yes
  • 윈도우에서 접근할 때의 폴더 이름은 www로 설정함.
  • 설명은 Web Directory로 설정함.
  • 공유 디렉터리 경로는 /usr/local/apache/htdocs로 설정함.
  • 접근 가능 사용자는 phpman과 webgirl만 설정함.
  • 두 사용자 모두 파일 생성 및 삭제 권한을 부여함.

 

예시 3

[www]
comment = Web Directory
path = /usr/local/apache/htdocs
valid users = phpman webgirl
write list = phpman
  • 윈도우에서 접근할 때의 폴더 이름은 www로 설정함.
  • 설명은 Web Directory로 설정함.
  • 공유 디렉터리 경로는 /usr/local/apache/htdocs로 설정함.
  • 접근 가능 사용자는 phpman과 webgirl만 설정함.
  • 파일 생성 및 삭제 권한은 phpman만 가능하도록 설정함.

 

삼바 사용하기

(1) 삼바 서버 설정

  • 삼바 서버의 /sdata 디렉터리를 공유 디렉터리로 설정하고, starrykss 사용자가 읽기 및 쓰기 작업 을 할 수 있도록 설정해본다.

 /sdata 디렉터리 생성 및 권한 확인

# mkdir /sdata
# chmod 1777 /sdata
# ls -ld /sdata
drwxrwxrwt. 2 root root 6 Jan 22 15:59 /sdata

 

 /etc/samba/smb.conf 파일 설정

  • 하단에 [sdata]라는 별도의 섹션을 추가하여 설정한다.
[sdata]
comment = Samba shared directory
path = /sdata
public = yes
writable = yes

 

 smb.conf 파일의 설정 오류 확인

# testparm

 

④ 해당 사용자를 삼바 사용자로 추가함.

# smbpasswd -a starrykss
New SMB password:
Retype new SMB passwd:
Added user starrykss.

 

⑤ 관련 데몬 구동

# systemctl start smb.service nmb.service

 

⑥ 관련 데몬의 동작 확인

  • ps 명령으로 데몬 동작 유무를 확인한다.
# ps aux | egrep 'smb | nmb'

 

⑦ 서버 동작과 관련된 메시지 확인

# systemctl -l status smb.service nmb.service

 

⑧ 부팅 시 관련 데몬 활성화

# systemctl enable smb.service nmb.service

 

(2) 삼바 클라이언트에서 접근하기

  • 윈도우 클라이언트(윈도우 10) 기준.
  • 웹 브라우저의 주소창이나 [윈도우키]+[r] 실행하면 실행 창이 뜨는데, 열기 부분에 삼바 서버의 IP 주소를 \\(백슬래시) 와 함께 기재한다.

 

① 삼바 서버의 주소 입력

열기(O): \\203.247.40.248

 

② 네트워크 자격 증명 입력 창에 아이디 및 패스워드 입력

 

③ 디렉터리 확인

  • 사용자의 홈 디렉터리와 함께 sdata라는 폴더가 나타난다.

 

④ 디렉터리 안에 파일 생성하기

1. 윈도우 PC에서 파일을 복사해본다.

systemd_180122.txt

 

2. 삼바 서버에서 파일이 생성된 것을 확인한다.

# ls -l /sdata
total 4
-rwxr--r--. 1 starrykss starrykss 536 Jan 22 16:36 systemd_180122.txt

 

문제 해결 전략

  • 명령어 관련 문제가 출제되었을 경우, man smbclient 명령을 사용하여 메뉴얼을 확인하면서 문제를 해결한다.
  • 삼바 환경 설정 파일인 smb.conf 관련 문제가 출제되었을 경우, man smb.conf 명령을 사용하여 메뉴얼을 확인하면서 문제를 해결한다.

 

문제 유형

① 삼바 서버 접속 클라이언트 접속 설정에 관한 문제

# smbclient (  -L  ) IHD
# smbclient (  //ihd_share (또는 \\\\ihd_share)  )
smb:   \>

 

② 삼바 서버를 설정하는 과정에 관한 문제

  • 조건이 주어지고, 조건에 맞게 삼바 서버를 설정하는 문제
# vi (  /etc/samba/smb.conf  )
(  [www]  )
(  comment = Web Directory  )
(  path = /usr/local/apache/htdocs  )
(  valid users = ihduser, kaituser  )
(  writable = yes  )

 

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖