[CentOS 6.x] Samba 구축

글쓴이 Engineer Myoa 날짜

Samba
Samba logo 2010.svg
Initial release 1992; 24 years ago[1]
Stable release
4.4.5 / July 7, 2016; 4 months ago[3]
Preview release
4.5.0rc3[2] / August 29, 2016[2]
Repository git.samba.org
Development status Active
Written in C, C++, Python
Operating system Multiplatform
Type Network file system
License GPLv3
Website www.samba.org

출처: https://en.wikipedia.org/wiki/Samba_(software)

 

Samba는 Microsoft사가 Windows에서 Unix/Linux로 네트워크 smb/cifs 프로토콜을 이용해 파일 또는 프린터를 송수신 할 수 있도록 만든 소프트웨어입니다.

 

Windows에서 smb서비스를 운용하기는 너무 쉽습니다. GUI기반이고, 방화벽도 기본적으로 예외처리가 잘 돼있지요

하지만 CLI기반의 Linux상에서는 약간의 절차를 더 거쳐야만 합니다.

 

아래부터는  Samba가 아닌 패키지명 samba로 작성합니다.

 

이 글은 samba 컴파일 설치가 아닌 패키지 설치를 가정하여 작성합니다.

(APM처럼 아키텍쳐에 최적화되게 설치하여 큰 성능향상을 보지도 못할뿐더러 deps패키지도 없기 때문에 컴파일 설치가 굳이 필요하지 않습니다.)

 

다음 글에서 $는 유저의 쉘, #은 루트권한을 획득한 상태의 쉘입니다.

 

1.Samba 설치

# yum -y install samba

 

samba는 기본적으로 기타 dependence 패키지를 요구하지 않기때문에 -y옵션을 넣었습니다.

 

2. Samba 설정

정상적으로 samba 서버가 설치되었다면 /etc 아래경로에 samba 디렉터리가 생성됩니다.

vi(또는 vim)로 설정파일을 편집합니다.

# vim /etc/samba/smb.conf

 

[global]
workgroup = "워크그룹명" # 네트워크에서 사용하는 별도의 워크그룹명이 있다면 기입해줍니다.
server string = "서버를 알릴 문자열"

log file = /var/loog/samba/log.%m

security = user  # share로 설정시 보안취약.
# 허용된 사용자(비밀번호 질의)에게만 권한 허가

passdb backend = tdbsam
# tdbsam samba내장 DB
# smbpasswd samba내의 smbpasswd 파일 사용

follow symlinks = yes # 없으면 추가

dns proxy = yes  # 외부IP나 그에따른 ddns를 사용시 yes. 아니면 no
dns forwarder = 8.8.8.8 # google dns 기입. dns proxy가 no일 경우 주석처리

# 아래는 프린터설정이 필요한경우입니다.
# smb상에서 설정한다고 자동으로 프린터 드라이버가 잡히지 않고
# linux커널용 드라이버를 수동으로 설치해야합니다.
load printers = yes


[printers]
comment = 설명
path = /var/spool/samba # 프린트 파일을 스풀링할 경로입니다.
browseable = no # 보안을위해 no로 지정합니다
guest ok = yes # 프린터의경우 auth문제를 발생시키지 않기위해 guest사용을 허가합니다.
writable = yes # 쓰기가능(스풀파일)
printable = yes # 프린트 가능
create mask = 0700 # 소유주에 대해 모든권한을 부여합니다.


# [추가적으로 생성할 smb섹션]
# 만약 [test] 작성후 설정값을 주면
# \\xxx.xxx.xxx.xxx/test 로 접속 가능

[test]
comment = for test
path = /home/xxxxx
follow symlinks = yes
public = yes
writable = yes
create mask = 0777 # 클라이언트는 윈도우므로
directory mask = 0777

# hosts allow = x.x.0.0/16
# hosts deny = 0.0.0.0/0
# 과 같이 설정하면 해당 x.x 대역만 접속이 가능합니다.

3. samba 계정 추가

samba 리눅스 서버에서는 현재 리눅스 시스템에 존재하는 계정만 samba계정으로 추가가 가능합니다.

즉, /etc/passwd 파일에 등록되지않은 계정은 samba계정으로 추가할 수 없습니다.

 

추후 포스팅으로 계정보안에 대해서 설명하겠지만 samba용으로 생성한 계정에 대해서는 반드시 nologin 처리를 해야합니다.

samba를 위해 만든계정인데 로그인과 홈디렉터리가 존재하면 익스플로잇으로 번질 수 있기 때문이죠.

 

passwd파일 내 이미 존재하는 계정 “test”를 가지고 추가해보겠습니다.

 

# smbpassword -a test

비밀번호를 입력하라고 나옵니다.

리눅스에서 passwd명령어를 입력한것과 매우 유사하기 때문에

New SMB password:

Retype new SMB password:

에 대해 해당계정의 samba 비밀번호를 설정해주면 되겠습니다.

(주의 : 해당 리눅스 계정의 로그인 비밀번호와는 다른 비밀번호입니다. 보안을위해 다르게 설정하시면 되겠습니다.)

 

4. 서비스(데몬) 기동

설치, 설정, 계정추가까지 마쳤으므로 실제 데몬을 기동시켜야합니다.

# service smbd restart


# ps -ef | grep smbd

정상적으로 데몬이 돌고있음을 확인할 수 있습니다.

 

5. 실제 접속

윈도우즈 내에서 “윈키+R” 혹은 “실행”을 열어

\\서버의IP\섹션명

위의 예제에서는 test섹션을 생성했기 때문에 test를 넣어주면 됩니다.

그러면 위와 같이 계정명과 비밀번호를 묻는데

smbpasswd에서 사용했던 계정과 비밀번호를 입력하면

섹션내의 path의 내용들이 보일것입니다.

만약 path내의 파일들이 접속한 계정보다 권한이 다르거나 높다면

해당파일 접근(읽기, 쓰기, 삭제)이 안될 수도 있으므로

이때는 서버에서 chown으로 소유주와 그룹을 설정하고

chmod로 기존파일들을 Read Write 가 가능하도록 설정하시기 바랍니다.

 

 

이상입니다.


89개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다