Samba
Samba는 리눅스와 유닉스 시스템에서 Windows와의 파일 및 프린터 공유를 지원하는 소프트웨어입니다. SMB (Server Message Block) 프로토콜을 구현하여, 윈도우 네트워크와의 호환성을 제공하는 역할을 합니다. 이를 통해서 리눅스와 윈도우간의 파일 공유를 편하게 할 수 있는 장점이 있습니다.
주요 기능
- 파일 공유 : Samba를 사용하면 리눅스/유닉스 서버에서 파일을 공유하고, Windows 클라이언트가 이 파일에 접근할 수 있습니다. 이는 네트워크 상의 다른 컴퓨터들과 파일을 쉽게 공유할 수 있게 해줍니다.
- 프린터 공유 : Samba는 프린터를 네트워크에서 공유할 수 있게 해주며, Windows 클라이언트에서 이 프린터를 사용할 수 있도록 설정할 수 있습니다.
- 도메인 서비스 : Samba는 Windows 도메인 컨트롤러 역할(AD-DC)을 할 수 있으며, 이는 대규모 네트워크에서 사용자 인증 및 권한 관리를 지원합니다.
- 사용자 인증 : 다양한 인증 방식을 지원하며, 사용자 계정을 통해 접근 권한을 관리하여 보안을 강화합니다.
파일 공유 서버 구축
Samba는 다양한 동작 방식(Standalone, Member, DC, ADDC)을 가지고 있습니다. 지금 글에서는 네트워크에서의 파일 공유만을 목적으로 하고 있기 때문에 최소한의 설정으로만 진행하고 다른 방식들에 대해서는 다른 포스트에서 다루도록 하겠습니다.
1. Installation
설치 방법은 여러가지가 있지만 대부분의 리눅스 배보판 패키지 매니저에서 samba 설치를 지원할 것 입니다. 저는 Debian에서 진행했기 때문에 아래의 설명도 Debian 기준으로 진행하겠습니다. Debian에서는 apt에 samba 패키지가 있기 때문에 apt를 이용해서 설치를 진행합니다.
$ sudo apt update && sudo apt install samba
2. Configuration
설치가 완료됬다면 Samba 설정을 진행합니다. 설정해야 되는 파일은 /etc/samba/smb.conf에 있습니다.
2.1. 홈디렉토리 공유
# 파일 공유 설정 부분
#======================= Share Definitions =======================
# 유저의 홈 디렉토리 공유 설정 (/home/user1, /home/user2등)
[homes]
comment = Home Directories
browseable = no
# 읽기 전용으로 공유할 건지에 대한 설정
read only = no
2.2. 그외의 경로 공유
# 유저의 홈 디렉토리 공유가 아닌 특정 경로를 공유하기 위한 설정
# 맨 밑줄에 작성하면 됩니다.
[공유이름]
comment = Some useful files
read only = no
path = /path_to_our_files # 공유할 경로 지정
guest ok = no # Guest(로그인 X) 허용 여부
3. 유저 추가
Standalone 서버에서 인증을 위해서는 운영 체제에서 로컬로 계정을 만들고 Samba 데이터베이스에도 추가적으로 계정을 만들어야 합니다. 기본적으로 Samba는 tdbsam 백엔드를 사용하고 데이터베이스를 /usr/local/samba/private/passdb.tdb 파일에 저장합니다.
만약에 Samba에서 사용할 로컬 계정이 없다면 아래의 명령어를 통해 새로운 계정을 생성합니다.
# -M : 홈 디렉토리도 같이 생성
# -s /sbin/nologin : Samba 파일 공유용으로만 사용할 계정이라면 이 옵션도 사용
$ useradd -m -s /sbin/nologin demoUser
생성한 계정을 아래의 명령어를 통해 Samba 데이터베이스에 추가합니다.
$ smbpasswd -a demoUser
이 과정이 귀찮다면 smb.conf에서 아래의 설정을 주석해제하면 smbpasswd -a 명령어를 사용할 때 알아서 만들어 줍니다.
# /etc/samba/smb.conf
128 # This allows Unix users to be created on the domain controller via the SAMR
129 # RPC pipe. The example command creates a user account with a disabled Unix
130 # password; please adapt to your needs
131 ; add user script = /usr/sbin/useradd --create-home %u
Samba 데이터베이스에 추가까지 완료했다면 아래의 명령어를 통해 확인해 볼 수 있습니다.
$ pdbedit -w -L
4. Apply Configuration
$ systemctl restart smbd.service
5. Firewall
# UDP 137, 138 / TCP 139, 445 포트 개방
$ iptables -A INPUT -p udp --dport 137 -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
$ iptables -A INPUT -p udp --dport 138 -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
$ iptables -A INPUT -p tcp --dport 139 -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
$ iptables -A INPUT -p tcp --dport 445 -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
클라이언트 설정 (Windows)
참고
https://wiki.debian.org/Samba/ServerSimple
Samba/ServerSimple - Debian Wiki
Translation(s): English - 简体中文 Samba file sharing server This is a minimal Samba setup to let other machines access files on a Debian machine. Installation and configuration Install the samba and samba-client packages Configure the Samba server by
wiki.debian.org
https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server
Setting up Samba as a Standalone Server - SambaWiki
Introduction In small networks, such as a home network, or to share folders on a host that is not part of a domain, you often do not want to set up an Active Directory or NT4 domain. The following documentation describes how to set up a Samba standalone se
wiki.samba.org