07. 리눅스 - Samba(+ 실습)
samba
• 네트워크를 통해 파티션을 공유하도록 제공하는 서비스
• 유닉스 시스템과 windows 시스템간 파일 시스템 공유
• 유닉스 계열의 거의 모든 시스템에서 제공
• 시스템의 리소스를 직접 제공하는 서비스이므로 보안에 주의한다.
- 응용을 제공하는 것이 아니라 리소스를 제공하는 서비스이다.
Samba 서버 확인 및 설치
# yum list samba
# yum install -y samba
데몬
/usr/sbin/smbd
- 공유 기능을 담당하는 데몬 (139번 포트 이용)
/usr/lib/systemd/system/smb.service
- 데몬 실행 스크립트
/etc/samba/smb.conf
- Samba 설정파일
데몬 실행
# systemctl start smb.service
관련 파일
• 환경 설정 파일 : /etc/samba/smb.conf
관련 명령어
• 사용자 등록 및 password 변경 : /usr/bin/smbpasswd
- smbpasswd [-a] 유저명
-a : 유저 등록
-x : 유저 삭제
-d, -e : 사용중지, 재사용
• 삼바 계정 확인 :
- pdbedit -w -L
• smb.conf 구문 검사 : /usr/bin/testparm
• NetBIOS명 검색 : /usr/bin/nmblookup
Samba – smb.conf [Global]
workgroup
: NT 도메인 명 지정
netbios name
: 네트워크 이름
(기본값 : 호스트명)
hosts allow (allow 지정된 것만 접속 가능)
: 허가 항목 지정(지정된 것만 접속 가능)
ex) host allow = 1.1.1. EXCEPT 1.1.1.11 1.1.1.12
= 1.1.1.0/255.255.255.0
hosts deny
: 접속 거부 항목 지정 (형식은 hosts allow와 동일)
guest account
• 윈도우의 quest 사용자 매핑 계정 설정
• nobody 또는 유닉스 계정으로 매핑 가능
• 주석 처리하면 guest 접속 불가(권장)
security
• user, share, server(domain) 중 설정
- security = user
- passdb backend = tdbsam
• 일부 예전 버전의 경우 user 설정 시 추가 설정 필요
- encrypt passwords = yes
- smb passwd file = /etc/samba/smbpasswd
Link 디렉토리 접근
보안 설정으로 인해 Symlink 디렉토리에 대한 기본 접근이 불허된다.
이를 허용하기 위해서는 아래와 같이 추가한다.
follow symlinks = yes
wide links = yes
unix extensions = no
언어셋 지정 (반드시 test 후 설정한다.)
unix charset = utf-8
dos charset = cp949
유닉스 계열의 언어셋과 클라이언트인 윈도의즈 계열의 언어셋이 서로
다름으로 반드시 지정해야 한다.
Smb.conf 파일에 다음을 내용 추가
• server signing = auto
[auto | mandatory | disabled]
• mandatory는 smb2만 지원하므로 이전 버전의 windows에서는 접
속이 불가능 할 수도 있다.
윈도우 XP와 같은 Samba 접속이 거부되는 운영체제의 경우 다음
설정을 활성화 해준다.
lanman auth = yes
ntlm auth = yes
비활성화\ 된 경우 SPNEGO 지원의 클라이언트만 허용한다.즉 이는 NTLMv2
가 NTLMSSP 내에서만 지원됨을 의미한다.
• SPNEGO는 The Simple and Protected GSS-API Negotiation
Mechanism(IETF RFC 2478)에 정의된 표준 스펙.
• NTLM은 Windows 네트워크에서 NT LAN Manager는 Microsoft 보안 제품
군으로 사용자에게 인증, 무결성 및 기밀성을 제공하기위한 프로토콜로 이전
Microsoft 제품인 Microsoft LAN Manager의 인증 프로토콜의 후속 제품
입니다.
comment = 여기는 공유 경로입니다.
• 주석 처리
path = /home/data
• 공유 경로 지정
browseable = no
• 공유 정보를 제공할지 여부(yes/no)
• 권한이 없는 사용자에게는 보이지 않는다.
writable = yes
• 쓰기 권한 접근 허용여부(yes/no)
• Write list 설정과 무관하게 퍼미션이 있으면 쓰기 가능하다.
Public = no
• 누구에게나 접근을 허용 할지 여부(yes/no)
Read only = yes
• 읽기 전용 접근 여부(yes/no)
valid users = fred
• 접근 가능한 사용자
write list = +group user
• 공유 경로에서 쓰기 가능한 그룹이나 유저
(force) create mask = 644
(force) directory mask = 755
(force) group = 그룹명
[homes]는 기본 이름으로 사용됨
• 각 계정의 홈 디렉토리 사용
[homes]
comment = Home Directories
browseable = no
writable = yes
Samba – smb.conf [Share]
설정 예
[public] // 누구나 접근 가능
comment = Public dir
path = /home/pub
public = yes
writable = no
write list = +te usr01 // te 그룹에 속한 사람 업로드 가능
[project] //몇명만 사용 가능
comment = project //이름 지정하는거라 아무거나 지정
valid users = usr01 usr02
path = /home/pro1
public = no
browseable = yes
writable = yes
설정 예
[public]
comment = Public dir
path = /home/pub
public = yes
writable = no
write list = +te usr01
[project]
comment = project
valid users = usr01 usr02
path = /home/pro1
public = no
browseable = yes
writable = yes
실습
1) 리눅스에 samba 설치 및 확인
리눅스에 samba 가 설치되어있는지 yum list samba로 확인한다.
yum install -y samba로 samba를 설치한다.
2) 그룹 및 사용자 생성, samba 사용자 생성
groupadd -g 1200 ST 그룹 생성
useradd -g 1200 -u 120# st## 유저 생성(+ TEST도 생성)
계정생성 - 패스워드는 12로 고정
smaba 계정생성 - 패스워드는 12로 고정
3) samba로 test할 디렉토리 생성 및 권한 변경
/home/ST 디렉토리 생성
디렉토리생성후 권한부여
4) smb.conf 파일 수정 및 samba 서비스 실행
vi /etc/samba/smb.conf