Profile picture

삼바(samba) 서버를 구축하는 방법 (리눅스 - 윈도우)

JaehyoJJAng2023년 06월 08일

Samba

요즘 리눅스를 자주 사용하게 되면서 윈도우와 리눅스 간의 파일 전송이 매우 번거롭게 느껴지기 시작했다.


본인의 경우 리눅스에서 작업한 데이터를 윈도우에서 WinSCP 등의 파일 공유 도구를 사용하여 옮기고는 하는데,

매번 이런식으로 작업한 데이터를 리눅스 -> 윈도우로 옮기려고 하니 뭔가 굉장히 번거롭달까 ..?


그래서 윈도우 폴더에서 리눅스 폴더로, 리눅스 폴더에서 윈도우 폴더로 바로바로 파일을 옮길 수 있는 가장 간편한 방법인 Samba를 서버에 설치해보기로 하였다!


삼바(=Server Message Block)는 네트워크 프로토콜을 이용해 윈도우와 유닉스 계열의 운영체제나 다른 시스템 간의 자원을 공유할 수 있도록 만든 프로그램이다.


윈도우 - 리눅스 간의 파일 공유 방법으로 Samba 말고 NFS도 있기는 한데,

nfs의 경우 윈도우와 리눅스 간 호환성과 접근성이 좋지 않아 사용되지 않고 있다.


특히나 삼바의 경우 SMB 프로토콜을 이용해서 작동하기 때문에 해당 프로토콜이 설치된 시스템만 사용이 가능하다.



하지만 삼바는 보안성이 취약하기 때문에 보안이 강조되는 환경(=공유 폴더 사용 불가 등)에서는 쓰이지 않는다.

이런 상황에서는 samba가 아닌 sftp를 도입하여야 한다.


삼바 설치

삼바의 경우 서버에 설치한다고 끝이 아니다.


삼바를 설치하고 설정하는 순서는 크게 다음과 같다.

  • 1. Samba 설치하기
  • 2. 계정 등록하기
  • 3. 공유 디렉토리 설정하기
  • 4. 삼바 환경 설정 파일(/etc/samba/smb.conf) 수정
  • 5. 윈도우 삼바 설정하기

1. 삼바 설치

# Debian
sudo apt-get install -y samba

# Redhat
sudo yum install -y samba

2. 삼바 계정 등록 (생성)

삼바 패키지 설치가 완료되었다면,

이제 samba 서버로 접속할 수 있는 samba 전용 계정을 생성해줘야 한다.


이 때 리눅스 서버에 이미 등록되어있는 유저를 지정하거나,

adduser 등의 명령어로 삼바 계정용 유저를 따로 생성해줘야 한다.


본인의 경우 adduser 명령어로 forsamba 라는 유저를 생성한 후,

해당 유저를 삼바 계정으로 지정해주도록 하겠다.

# 'forsamba' 라는 유저 생성
adduser forsamba

# `forsamba` 유저를 삼바 계정으로 지정
smbpasswd -a forsamba

2-1. 삼바 서버에 등록된 유저 확인

내가 등록한 삼바 계정이 뭐가 있는지 확인하려면 다음 명령을 실행한다.

sudo pdbedit -L -v 

2-2. smbpasswd

smbpasswd는 samba의 패스워드 및 전반적인 사용자 수정 정보를 담당한다.


삼바 사용자 생성 / 삭제 / 패스워드 변경 / 활성 및 비활성화 등 전체적인 관련 정보를 변경한다.

플래그 설명
-a 삼바 사용자 추가 시 사용
삼바 사용자는 리눅스 시스템에 존재하는 계정이어야 한다!
-x 삼바 사용자 제거 시 사용
-d 삼바 사용자 일시적 비활성화 시 사용
-e 삼바 사용자 활성화 시 사용
-n 패스워드 없이 로그인이 가능하도록 하고 싶을 때 사용
추가로 /etc/samba/smb.confnull password = yes가 추가되어야 한다

3. 공유 디렉토리 생성

윈도우에서 리눅스로 접근할 수 있는 공유 디렉토리를 생성해주자.

mkdir /share

# 권한 수정
chmod 777 /share

4. 삼바 환경 설정 파일 수정

이제 삼바의 환경 설정 파일을 수정하여 어떤 폴더를 공유할 것인지,

특정 IP 대역을 허용할건지, 파일을 읽거나 쓸수만 있도록 할 것인지 등에 대한 세부 설정을 해줘야 한다.


삼바 환경 설정 파일 위치

/etc/samba/smb.conf


/etc/samba/smb.conf 파일을 열면

  • [global], [homes], [printers]

위 세 개의 섹션이 보일 것이다.


각 섹션은 필요에 따라 설정해주면 된다.

  • [global]: 삼바 서버 전체 환경 설정
  • [homes]: 각 사용자가 서버의 홈 디렉토리 접근 시 처리될 권한
  • [printers]: 프린터 관련 권환

우리는 공유 디렉토리 생성 챕터에서 만들었던 /share 공유 디렉토리에 대한 접근 권한을 설정해줄 것이기 때문에

맨 하단으로 커서를 이동하여 새로운 섹션을 다음과 같이 추가한다.

[share] # 섹션 정의: 윈도우에서 접근 시 \\<삼바서버IP>/<섹션이름> 등으로 접근한다. Ex. \\192.168.219.179/share
  comment = share directory # 공유 폴더 설명
  path = /share
  read only = no # 읽기만 하는가?
  writable = yes # 쓸 수 있는가?
  guest ok = no # 다른 사용자들도 이용할 수 있는가?
  valid user = forsamba # 공유 디렉토리를 이용할 수 있는 사용자 설정
  create mask = 0777 # 파일 허가권
  directory mask = 0777 # 디렉토리 허가권

참고로 위 예제에서 사용되지 않은 여러 옵션들도 존재한다.

옵션 예시 설명
comment text 공유 폴더 설명
path text 공유 폴더 경로
read only yes/no 공유 폴더 읽기 전용으로 설정 여부
writable yes/no 공유 폴더 쓰기 가능으로 설정 여부
valid users id,id,id,.. 공유 폴더 접근 가능 유저 목록
write list id,id,id,.. 공유 폴더 쓰기 가능 유저 목록
public, guest ok yes/no 게스트 이용 가능 여부
browsable yes/no 파일 목록 보여줄 것인지 여부
create mask, create mode 0644 / 0777 / ... 생성 권한
force group group,group,.. 접근 가능 그룹 지정
directory mask 0644 / 0777 / .. 공유 폴더 권한

5. 삼바 데몬 재시작

설정 변경 후 삼바 데몬을 재시작 하는 것을 잊지 말자.

sudo systemctl restart smbd

6. 윈도우에서 삼바 접근하기

image
image


네트워크 연결 성공 시 자격 증명 입력 란이 나오는데

여기에는 삼바에서 등록했었던 계정 아이디와 암호를 입력하면 된다.
image


섹션이 연결된 걸 확인해보려면 서버에서 다음 명령을 쳐보자.

sudo smbstatus # 삼바 서버와 클라이언트의 연결 상태 확인

Loading script...