- Published on
SAMBA 서버 구성, 클라이언트 연결 실습
- Authors
- Name
- 신주용
이전 글에서 NFS 서버-클라이언트 실습을 해봤습니다. NFS도 유용한 파일 공유 프로토콜이긴 하지만 기본적으로는 Unix-like 시스템을 위한 프로토콜입니다. 그래서 이번에는
SAMBA란?
Samba는 SMB 프로토콜을 다시 구현한 소프트웨어로 다양한 Windows 클라이언트에서 파일이나 프린터를 공유할 수 있도록 해줍니다. 그리고 윈도우 뿐만 아니라 리눅스, AIX, macOS 같은 Unix-like 시스템에서도 동작하는 소프트웨어입니다1.
작동 방식
SMB 서버-클라이언트 동작 방식은 NFS와 유사하게 서버의 파일, 디렉토리를 클라이언트 로컬 파일 시스템인 것처럼 사용할 수 있습니다. 하지만 기본적으로 NFS는 파일과 디렉토리 공유만 지원하는 반면 SMB는 파일, 프린터, 스토리지 등 다양한 리소스를 공유할 수 있습니다2.
Rocky Linux에 SAMBA 서버 설치
그럼 지금부터는 설치 실습을 해보겠습니다. 실습 환경은 일반적으로 서버는 리눅스로 많이 운영되기 때문에 서버 역할을 할 Rocky Linux VM과 클라이언트 역할의 Windows VM을 준비했습니다3.
samba
패키지를 설치합니다.$ dnf install samba
Samba 서비스를 위한 계정을 따로 만들어서 사용하겠습니다.
$ useradd sambauser $ passwd sambauser Changing password for user sambauser. New password: Retype new password: passwd: all authentication tokens updated successfully.
공유할 디렉토리를 생성하고 필요한 권한을 줍니다.
$ mkdir -p /home/sambauser/samba $ chmod 777 /home/sambauser/samba $ chown sambauser:sambauser /home/sambauser/samba
Samba 서비스 기본 설정을 해줍니다.
/etc/samba/smb.conf
파일 제일 아래에 다음 내용을 추가해줍니다./etc/samba/smb.conf[Shared] comment = Samba shared directory path = /home/sambauser/samba read only = no writable = yes valid users = sambauser browseable = yes
이전에 생성한
sambauser
를 Samba 서비스에 등록해줍니다.$ smbpasswd -a sambauser New SMB password: Retype new SMB password: Added user sambauser.
- 이 비밀번호는 2단계 계정 생성때 비밀번호와 달라도 됩니다.
- 이후 Windows 클라이언트에서 연결 시 이 비밀번호를 사용하니 기억해둬야 합니다.
Samba 서비스를 시작합니다.
$ systemctl start smb nmb $ systemctl enable smb nmb
잊지 않고 방화벽도 열어줍니다.
$ firewall-cmd --add-service=samba --permanent $ firewall-cmd --reload $ firewall-cmd --list-all public (active) # ... services: samba ssh ... # ...
연결이 잘 됐는지 확인하기 위해 더미 파일과 디렉토리를 생성해봅시다.
$ cd /home/sambauser/samba $ touch test1 $ mkdir test2 $ ls test1 test2
Samba 서버에 연결
로컬에서 마운트
클라이언트 역할을 할 Windows VM에서 연결해보기 전 우선 로컬에서 마운트를 해보겠습니다. 다시 말해 Linux도 클라이언트로 사용할 수 있습니다.
먼저 클라이언트로 사용하기 위해 필요한
cifs-utils
패키지를 설치합니다.$ dnf install cifs-utils
마운트 할 디렉토리를 생성하고 마운트 합니다. 파일, 디렉토리 생성/삭제도 해봅니다.
$ mkdir -p /mnt/samba-local $ mount -t cifs //localhost/Shared /mnt/samba-local -o user=sambauser Password for sambauser@//localhost/Shared: $ cd /mnt/samba-local $ ls
- 로컬에서 연결하는 것이므로
localhost
를 사용했고,Shared
는smb.conf
파일에서 구분자로 사용했던 것입니다.
- 로컬에서 연결하는 것이므로
만약 여기서
ls: reading directory '.': Permission denied
와 같은 오류가 발생한다면 SELinux 설정을 수정해봅시다4./etc/sysconfig/selinux
파일에서SELINUX=permissive
로 변경하고 재부팅해주세요.
원격지에서 마운트
그러면 이제 원격지(Windows VM)에서 마운트 해봅시다.
Windows에서는 탐색기에서 '내 PC' 또는 '네트워크'를 우클릭하고 '네트워크 드라이브 연결'을 클릭합니다.
여기서는 다른 VM이기 때문에
localhost
대신\\서버IP주소\Shared
경로를 사용하여 연결합니다.smbpasswd
로 등록해줬던 사용자/비밀번호를 입력해주면 연결이 완료됩니다.여기서도 파일 생성/삭제를 해보고 리눅스 서버에서도 잘 되는지 확인해봅니다.
이렇게 Samba 서버-클라이언트 구성 및 연결 실습을 해봤습니다. 유용하게 잘 사용하시길 바라겠습니다.
참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.
- SMB/CIFS
Footnotes
Wikipedia. "Samba (software)." Wikipedia. https://en.wikipedia.org/wiki/Samba_(software) (accessed Nov. 13, 2024). ↩
AWS. "NFS와 SMB의 차이점은 무엇인가요?" aws.amazon.com. https://aws.amazon.com/ko/compare/the-difference-between-nfs-smb/ (accessed Nov. 13, 2024). ↩
Rocky Linux. "Lab 8: Samba." Rocky Linux Documentation. https://docs.rockylinux.org/labs/networking/lab8-samba/ (accessed Nov. 13, 2024). ↩
rlawlstjd007. "[Linux] SMB 사용시 "ls: reading directory .: Permission denied" 에러 발생 해결법." 진성 소프트:티스토리. https://jinseongsoft.tistory.com/287 (accessed Nov. 13, 2024). ↩