삼바(Samba)는 윈도우와 유닉스 계열 같이 타 시스템 간의 피일이나 프린터 자원을 공유할 수 있도록 도와주는 유닉스 계열 프로그램이다.
마이크로소프트와 인텔에서 개발한 SMB(Server Message Block) 네트워크 프로토콜을 사용한다.
현재는 CIFS(Common Internet File System)로 확장되어 있다고 한다.
1. 설치
# 데비안(우분투) 계열
apt install samba
# RHEL (록키, 센트) 계열
yum install samba # 7 이하
dnf install samba # 8 이상
2. 계정 등록하기
smbpasswd
명령어를 통해 samba 서버에 접속할 계정을 등록할 수 있다.
리눅스 계정으로 samba 계정을 등록할 수 있다. (리눅스에 없는 계정명은 등록 불가)
root 계정을 사용하지 않도록 유의하자.
# samba에 필요한 리눅스 계정 생성 (필요 시)
adduser username
# useradd로 생성하면 passwd로 비밀번호도 따로 설정해야 함
# samba 계정 생성
smbpasswd -a username
smbpasswd
옵션은 다음과 같다.
옵션 | 설명 | 예시 |
---|---|---|
-a | Samba 사용자 추가 | smbpasswd -a username |
-x | Samba 사용자 삭제 | smbpasswd -x username |
-d | 사용자 계정 비활성화 | smbpasswd -d username |
-e | 사용자 계정 활성화 | smbpasswd -e username |
-n | 사용자 암호 제거 | smbpasswd -n username |
-n
옵션을 사용하기 위해선 smb.conf
에 null password = yes
라고 설정되어 있어야 한다.
3. 설정 파일 작업
설정 파일 위치는 다음과 같다.
/etc/samba/smb.conf
에디터로 열어준다.
vi /etc/samba/smb.conf
vim /etc/samba/smb.conf
nano /etc/samba/smb.conf
기본적으로 4개의 Section으로 구성되어 있다.
- [global] : 전역 설정
- [homes] : 각 홈디렉토리 권한
- [printers] : 프린터 관련 권한
- [print$] : 프린터 드라이버
공유하기 위한 폴더 섹션을 추가해 준다.
대괄호 []
안의 내용이 폴더로 보여준다.
[share]
comment = samba share directory
path = /app
browseable = yes
read only = no
writable = yes
guest ok = no
valid user = username
create mask = 0755
directory mask = 0755
옵션 | 설명 | 값 |
---|---|---|
path | 공유 디렉토리 경로 | /share/directory |
comment | 공유 설명 | 텍스트 |
browseable | 공유 목록에 표시 여부 | yes/no |
read only | 읽기 전용 여부 | yes/no |
writable | 쓰기 가능 여부 | yes/no |
guest ok | 게스트 접근 허용 | yes/no |
valid users | 접근 허용할 사용자/그룹 | user1 @group1 |
write list | 쓰기 허용할 사용자/그룹 | user1 @group1 |
create mask | 파일 생성 권한 | 0660, 0644 |
directory mask | 디렉토리 생성 권한 | 0770, 0755 |
force group | 강제 그룹 지정 | groupname |
force user | 강제 사용자 지정 | username |
자세한 건 공식 문서를 참고
4. 서비스 재시작
# 서비스 재시작
systemctl restart smbd
# 서비스 상태 확인
systemctl status smbd
- 방화벽을 사용하는 경우 UDP 138, 139 포트가 열려 있어야 한다.
5. 클라이언트에서 접속하기
서버 ip 확인하기
ip addr
또는 ifconfig
명령어를 통해 서버 ip를 확인한다.
ip addr
- ifconfig
Windows에서 접속
탐색창 또는 실행(Win
+ R
)에서 다음과 같이 입력해준다.
₩₩{아이피 주소}
전에 등록한 계정과 비밀번호를 입력한다.
모두 접근할 수 있게 했다면 입력하지 않고 확인을 누른다.
접속할 폴더를 선택하면 된다.
browseable
옵션을 no로 한 폴더는 보여주지 않는다.
(서버에 연결에서 폴더까지 입력하면 된다. 예 : ₩₩172.30.1.2₩docker
)
폴더에 접근한 것을 확인할 수 있다.
Mac에서 접속
Finder에서 command
+ K
를 누르면 서버에 연결 팝업창이 뜬다.
samba로 연결하니 다음과 같이 입력해준다.
smb://{접속할 아이피}
전에 등록한 계정과 비밀번호를 입력한다.
모두 접근할 수 있게 했다면 방문자로 연결한다.
접속할 폴더를 선택하면 된다.
browseable
옵션을 no로 한 폴더는 보여주지 않는다.
(서버에 연결에서 폴더까지 입력하면 된다. 예 : smb://172.30.1.2/docker
)
로그인에 성공했다면 폴더에 접근한 것을 확인할 수 있다.
접송 상태 확인
smbstatus
명령어를 통해 samba 서버에 접속한 클라이언트와 상태를 확인할 수 있다.