samba

• 네트워크를 통해 파티션을 공유하도록 제공하는 서비스
• 유닉스 시스템과 windows 시스템간 파일 시스템 공유
• 유닉스 계열의 거의 모든 시스템에서 제공
• 시스템의 리소스를 직접 제공하는 서비스이므로 보안에 주의한다.
  - 응용을 제공하는 것이 아니라 리소스를 제공하는 서비스이다.

 

samba 구성

 

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

 

samba 서버 확인

 


실습

실습 내용

192.168.10.131번 컴퓨터에서 실행

st01, st02, test 계정이 공동으로 사용할 st 를 구현한다.
• st01, st02는 자원에 대한 모든 권한이 있지만 test는 read only로 지정한다. (패스워드는 12로 설정)

 

작업일지

1) 리눅스에 samba 설치 및 확인

2) 그룹 및 사용자 생성, samba 계정 생성

3) samba로 test할 디렉토리 생성 ( /home/st ) 및 권한 변경

4) smb.conf 파일 수정 및 samba 서비스 실행

5) 윈도우에서 st01, st02, test 테스트

 

1) 리눅스에 samba 설치 및 확인

리눅스에 samba 가 설치되어있는지 yum list samba로 확인한다.

 

yum install -y samba 로 samba 를 설치한다.

 

2) 그룹 및 사용자 생성, samba 사용자 생성

groupadd -g 1600 st 그룹 생성

 

useradd -g 1600 -u 160# st## 유저 생성

 

패스워드는 모두 12 로 한다.

 

samba 계정도 만들어준다

 

3) samba로 test할 디렉토리 생성 및 권한 변경

/home/st 디렉토리 생성

 

권한을 777로 준다.

 

권한을 777로 주지 말고 아래와 같이 그룹소유자와 권한을 변경해 확인한다.

# chown st01.st st

# chmod 770 st

# ll

 

4) smb.conf 파일 수정 및 samba 서비스 실행

vi /etc/samba/smb.conf

[st]
    comment = Test dir
    path = /home/st
    public = no
    writable = no
    write list = st01 st02
    create mask = 0755
    directory mask = 0755
    valid users = st01 st02 test
    browseable = yes

 

systemctl start smb.service 시작한다.

 

 

5) 윈도우에서 st01, st02, test 테스트

st01

 

st01로 로그인한다.

st와 st01이 잘 보이는 것을 확인한다.

 

st01에서 txt 파일을 생성하면 읽기와 쓰기가 가능하므로 작업이 가능하다.

파일이 잘 생성되는 것을 확인할 수 있다.

 

st01에서 test_02를 읽으면 잘 읽힌다.

 

다른 계정으로 실행하기 위해 cmd 창에서 net use /delete \\192.168.10.131 을 입력해 연결을 해제한다.

이 방법이 안된다면 컴퓨터를 리부트하는 방법도 있다.

 

st02

st02로 로그인 한다.

 

읽기와 쓰기가 잘 된다.

 

 

test

test계정으로 쓰기하려면 쓰기가 안된다. read only 설정이라 저장 권한이 없다.

 

 

현재 사용하고 있는 계정을 알고 싶으면 net use 를 입력한다.

 

+ Recent posts