Study/Linux

Ubuntu에서 Samba 파일 서버 구축하기: 사내 공유폴더 만들기 (사용자별 보안 설정 포함)

AC 2025. 7. 14. 18:47

Ubuntu에서 Samba 파일 서버 구축하기: 사내 공유폴더 만들기 (사용자별 보안 설정 포함)

안녕하세요! 오늘은 Ubuntu 서버를 이용해 사내 네트워크에서 모든 직원이 접속할 수 있는 파일 공유 서버를 구축하는 방법을 알아보겠습니다. 특히 사용자별로 전용 폴더를 만들고 비밀번호로 보호하는 방법까지 다루어 보겠습니다!

준비물

  • Ubuntu가 설치된 컴퓨터
  • 고정 IP 설정을 위한 네트워크 정보
  • 공유할 내장/외장 하드디스크
  • 직원 명단 (사용자 계정 생성용)

1단계: Samba 설치하기

Samba는 Linux와 Windows 간 파일 공유를 가능하게 해주는 프로토콜입니다.

sudo apt update
sudo apt install samba samba-common-bin

2단계: 고정 IP 설정하기

DHCP로 IP가 계속 바뀌면 불편하니 고정 IP를 설정해봅시다.

현재 IP 확인

ip addr show

GUI로 고정 IP 설정 (추천)

  1. 네트워크 설정 열기
  2. nm-connection-editor
  3. 현재 Wi-Fi 연결 선택 → 톱니바퀴 클릭
  4. IPv4 탭에서:
    • 방법: "수동" 선택
    • 주소: 192.168.0.50 (원하는 IP)
    • 넷마스크: 255.255.255.0
    • 게이트웨이: 192.168.0.1 (라우터 IP)
    • DNS: 8.8.8.8, 8.8.4.4
  5. 적용 후 Wi-Fi 재연결

설정 확인

ip addr show wlo1 | grep inet
# 192.168.0.50이 표시되면 성공!

3단계: 공유 폴더 구조 생성

공용 폴더 (모든 직원 접근 가능)

sudo mkdir -p /srv/samba/public
sudo chmod 777 /srv/samba/public

사용자별 전용 폴더

# 사용자 전용 폴더의 루트 디렉토리 생성
sudo mkdir -p /srv/samba/users

외장 하드디스크 설정

# 외장 하드 연결 확인
lsblk

# 마운트 포인트 생성
sudo mkdir -p /media/external

# 필요시 수동 마운트
sudo mount /dev/sdb1 /media/external

# 외장 하드에도 사용자 폴더 구조 생성
sudo mkdir -p /media/external/users

4단계: 사용자 계정 생성

직원별로 시스템 사용자와 Samba 사용자를 생성합니다.

예시: 김철수, 이영희, 박민수 직원 추가

# 시스템 사용자 생성 (홈 디렉토리 없이)
sudo useradd -M -s /sbin/nologin kimcs
sudo useradd -M -s /sbin/nologin leehy
sudo useradd -M -s /sbin/nologin parkms

# Samba 비밀번호 설정
sudo smbpasswd -a kimcs
sudo smbpasswd -a leehy
sudo smbpasswd -a parkms

# Samba 사용자 활성화
sudo smbpasswd -e kimcs
sudo smbpasswd -e leehy
sudo smbpasswd -e parkms

사용자별 전용 폴더 생성

# 내장 하드디스크
sudo mkdir -p /srv/samba/users/kimcs
sudo mkdir -p /srv/samba/users/leehy
sudo mkdir -p /srv/samba/users/parkms

# 소유권 설정
sudo chown kimcs:kimcs /srv/samba/users/kimcs
sudo chown leehy:leehy /srv/samba/users/leehy
sudo chown parkms:parkms /srv/samba/users/parkms

# 권한 설정 (본인만 읽기/쓰기 가능)
sudo chmod 700 /srv/samba/users/kimcs
sudo chmod 700 /srv/samba/users/leehy
sudo chmod 700 /srv/samba/users/parkms

5단계: Samba 설정

설정 파일 백업

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

설정 파일 편집

sudo nano /etc/samba/smb.conf

[global] 섹션에 다음 내용 추가:

[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   security = user
   map to guest = never
   encrypt passwords = yes

파일 끝에 다음 내용 추가:

# 공용 폴더 (모든 직원 접근 가능)
[Public]
   comment = 공용 폴더
   path = /srv/samba/public
   browseable = yes
   read only = no
   guest ok = no
   valid users = @sambashare
   create mask = 0664
   directory mask = 0775

# 사용자별 전용 폴더 (자동 매핑)
[Users]
   comment = 개인 폴더
   path = /srv/samba/users/%U
   browseable = no
   read only = no
   valid users = %S
   create mask = 0600
   directory mask = 0700

# 김철수 전용 폴더
[kimcs]
   comment = 김철수 전용 폴더
   path = /srv/samba/users/kimcs
   browseable = yes
   read only = no
   valid users = kimcs
   create mask = 0600
   directory mask = 0700

# 이영희 전용 폴더
[leehy]
   comment = 이영희 전용 폴더
   path = /srv/samba/users/leehy
   browseable = yes
   read only = no
   valid users = leehy
   create mask = 0600
   directory mask = 0700

# 박민수 전용 폴더
[parkms]
   comment = 박민수 전용 폴더
   path = /srv/samba/users/parkms
   browseable = yes
   read only = no
   valid users = parkms
   create mask = 0600
   directory mask = 0700

# 외장 하드디스크 공용 폴더
[External_Public]
   comment = 외장 하드 공용 폴더
   path = /media/external/public
   browseable = yes
   read only = no
   valid users = @sambashare
   create mask = 0664
   directory mask = 0775

공용 폴더 접근을 위한 그룹 설정

# sambashare 그룹 생성
sudo groupadd sambashare

# 모든 사용자를 sambashare 그룹에 추가
sudo usermod -a -G sambashare kimcs
sudo usermod -a -G sambashare leehy
sudo usermod -a -G sambashare parkms

Samba 서비스 재시작

sudo systemctl restart smbd
sudo systemctl enable smbd

6단계: 방화벽 설정

# 방화벽 상태 확인
sudo ufw status

# Samba 포트 허용
sudo ufw allow samba

7단계: 외장 하드디스크 문제 해결

외장 하드가 인식되지 않는다면:

# NTFS 지원 설치 (Windows 포맷 하드디스크)
sudo apt install ntfs-3g

# exFAT 지원 설치
sudo apt install exfat-fuse exfat-utils

클라이언트 접속 방법

서버 IP는 192.168.0.50입니다.

Windows에서 접속

개인 폴더 접속

  1. Win + R 키
  2. \\192.168.0.50\사용자명 입력 (예: \\192.168.0.50\kimcs)
  3. 사용자명과 비밀번호 입력
  4. "자격 증명 기억" 체크하면 다음부터 자동 로그인

공용 폴더 접속

  1. \\192.168.0.50\Public 입력
  2. 본인의 사용자명과 비밀번호 입력

Mac에서 접속

개인 폴더 접속

  1. Finder 열기
  2. Cmd + K
  3. smb://192.168.0.50/사용자명 입력 (예: smb://192.168.0.50/kimcs)
  4. 연결 클릭
  5. 등록된 사용자 선택 후 사용자명과 비밀번호 입력

Linux에서 접속

파일 관리자에서 smb://192.168.0.50/사용자명 입력

사용자 관리

새 직원 추가

# 시스템 사용자 생성
sudo useradd -M -s /sbin/nologin 새사용자명

# Samba 비밀번호 설정
sudo smbpasswd -a 새사용자명

# 전용 폴더 생성
sudo mkdir -p /srv/samba/users/새사용자명
sudo chown 새사용자명:새사용자명 /srv/samba/users/새사용자명
sudo chmod 700 /srv/samba/users/새사용자명

# sambashare 그룹에 추가
sudo usermod -a -G sambashare 새사용자명

비밀번호 변경

sudo smbpasswd 사용자명

사용자 비활성화

sudo smbpasswd -d 사용자명

사용자 삭제

# Samba 사용자 삭제
sudo smbpasswd -x 사용자명

# 시스템 사용자 삭제
sudo userdel 사용자명

# 폴더는 수동으로 삭제 또는 백업

관리 팁

현재 연결 상태 확인

sudo smbstatus

특정 사용자 연결 확인

sudo smbstatus -u 사용자명

접속 로그 확인

sudo tail -f /var/log/samba/log.smbd

보안 강화 옵션

특정 IP 대역만 허용

smb.conf의 [global] 섹션에 추가:

hosts allow = 192.168.0.0/24
hosts deny = 0.0.0.0/0

접속 시간 제한

[global]
   deadtime = 30  # 30분 동안 활동 없으면 연결 종료

파일 버전 관리

[사용자폴더]
   vfs objects = recycle
   recycle:repository = .recycle
   recycle:versions = yes

자주 묻는 질문

Q: 비밀번호를 잊어버렸어요
A: 관리자가 sudo smbpasswd 사용자명 명령으로 재설정 가능

Q: 다른 사람 폴더가 보여요
A: 정상입니다. 보이기만 하고 접근은 불가능합니다. 숨기려면 browseable = no 설정

Q: 여러 명이 동시에 하나의 파일을 수정하면?
A: 먼저 연 사람이 쓰기 권한을 가지고, 나머지는 읽기 전용이 됩니다.

마무리

이제 각 직원이 자신만의 보안 폴더와 모두가 사용할 수 있는 공용 폴더를 가진 파일 서버가 완성되었습니다!

  • 서버 IP: 192.168.0.50
  • 개인 폴더: 본인만 접근 가능
  • 공용 폴더: 모든 직원 접근 가능
  • 보안: 사용자명/비밀번호 인증

추가로 부서별 그룹 폴더나 프로젝트별 폴더 등이 필요하다면 같은 방식으로 확장할 수 있습니다.

질문이나 문제가 있다면 댓글로 남겨주세요! 😊

 

LIST