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 기능 제공
- CIFS(Common Internet File System)
삼바 설치하기
- 삼바(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일 때 사용자의 패스워드를 설정하는 방식
- comment : 간단한 설명 설정
- path : 공유 디렉터리의 경로 설정
- read only : 공유 디렉터리를 읽기 전용으로 설정
- writable, write ok : 공유 디렉터리를 쓰기 가능하게 설정
- valid users : 공유 디렉터리를 이용할 수 있는 사용자 지정
- write list
- 공유 디렉터리에 접근 및 쓰기 권한을 행사할 수 있는 사용자 지정
- 그룹인 경우, 그룹명 앞에 @를 붙이면 됨.
- public, guest ok : 다른 사용자들이 이용할 수 있도록 설정할 때 사용
- browseable, browsable : 공유 디렉터리의 리스트를 보여줄 때 사용
- printable : 공유 디렉터리에 스풀 파일을 지정할 때 설정
- create mask, create mode : 파일을 생성할 때 허가권을 지정할 경우 설정
관련 명령어
① smbclient
- 리눅스 및 유닉스에서 사용하는 삼바 클라이언트 명령
- 윈도 서버로 접근할 때 사용된다.
- 사용법
- ftp 클라이언트 명령과 유사하다.
- 접속한 후에 특정 명령어를 입력하여 작업 수행
- 접속된 후에 ?나 help라고 입력하면, 사용 가능한 명령어의 목록을 볼 수 있다.
- ftp 클라이언트 명령과 유사하다.
사용법
$ smbclient [option] [호스트명]
- 대상이 되는 호스트명
- 192.168.12.22처럼 IP 주소 도 가능
- 동일한 작업 그룹을 사용할 때,
- 리눅스 시스템인 경우
- 호스트 이름
- 윈도우 시스템인 경우
- 컴퓨터 이름
- 리눅스 시스템인 경우
- 호스트명 다음에 공유 디렉터리명을 입력할 수 있다.
- 다음 기호 모두 사용 가능
- \(Back Slash)
- 윈도우에서 NetBIOS를 이용하여 접속할 때
- 리눅스에서 smbclient 명령을 이용하여 \로 접근할 때는 일반적인 윈도우에서 사용하는 개수의 2배로 지정한다.
- 윈도우에서 NetBIOS를 이용하여 접속할 때
- /(Slash)
- 호스트명 앞 : 2개 사용
- 디렉터리 구분 : 1개 사용
- \(Back Slash)
- 윈도우 호스트에 접근할 때, 윈도우 운영체제가 대소문자를 구분하지 않는다.
- 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
그리드형(광고전용)
'Certificate > Linux Master' 카테고리의 다른 글
[리눅스마스터 1급 실기] 디스크 관련 정보 (UUID, blkid) (0) | 2022.05.10 |
---|---|
[리눅스마스터 1급 실기] 텔넷(telnet) (0) | 2022.05.10 |
[리눅스마스터 1급 실기] 프록시(Proxy) 서버 관리 (squid) (0) | 2022.05.10 |
[리눅스마스터 1급 실기] 커널 컴파일 (0) | 2022.05.10 |
[리눅스마스터 1급 실기] SSH(Secure Shell) (0) | 2022.05.09 |
[리눅스마스터 1급 실기] rsyslog (2) | 2022.05.09 |
[리눅스마스터 1급 실기] 디스크 확장 (마운트) (0) | 2022.05.08 |
[리눅스마스터 1급 실기] TCP Wrapper (0) | 2022.05.08 |