삼바(Samba) 서버는 Windows 운영체제를 사용하는 PC에서 Linux 계열의 서버에 접근하여 파일이나 프린터를 공유할 수 있도록 서비스되는 소프트웨어다. 보통의 경우 파일을 공유할 목적으로 서버를 설치할 경우가 있다. Windows 운영체제로 파일을 공유할 경우 간편하지만, 불필요한 리소스를 잡아먹는게 싫다. 리눅스에서 무료로 사용가능한 삼바서버(Samba)를 이용할 경우 Private, Public 공간을 자유롭게 설정해서 파일을 공유할 수 있다. 삼바 서버의 개념을 잡 잡고 셋팅하면 정말 간편하고 강력한 도구다.

 

 

 

 

 

본인의 경우 하나의 리눅스 시스템에 총 두개의 디렉터리를 공유할 것인데, 한개는 암호를 걸어두고 다른 한개는 암호 없이 누구나 접근이 가능한 파일 공유 시스템을 구축하는것이 목표다. 각 공유할 디렉터리의 경로는 자유롭게 설정이 가능하지만 루트 경로에 생성할 것이다.

 

 

 

# Samba Server Setup

삼바 서버의 설치는 아래의 명령어로 한번에 설치가 가능하다.

 

[root@localhost /]# yum install samba

 

 

 

# Samba Server Configuation

아래의 경로에 접근하면 삼바서버 설정파일이 있으며, 간단한 설명을 담은 예제파일도 있다.

[root@localhost /]# vi /etc/samba/smb.conf

 

위의 설정파일을 오픈하면 기본적으로 [global], [printers], [home]와 같은 3가지 구역이 보인다. 각 구역을 필요에 따라 설정해줘야 하며 간략한 설정은 아래와 같다.

 

[global]: Samba Server 전체에 영향을 미치는 설정

[printers]: 프린터와 관련된 설정

[home]: 리눅스 계정의 홈경로(/home/[user])에 대한 설정

 

 

[global] 구역은 시스템 전체에 적용되어야할 사항들만 간단하게 설정했으며, [printers] 구역은 기본설정 그대로 놓았다. [home] 구역은 삼바서버에 등록된 리눅스 계정의 홈 디렉터리가 그대로 노출되어 통째로 지웠다. 본인의 경우 공유할 경로를 직접 설정할 것이기 때문에 리눅스 계정의 홈디렉터리 공유는 필요하지 않았다. 아래와 같이 설정한 뒤, 접근 시 암호가 필요한 경로누구나 접근이 가능한 경로를 추가 설정해주면 된다.

 

[global]
        workgroup=WORKGROUP
        server string = SambaFileServer
        map to guest = bad user
        dns proxy = no
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

 

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

 

 

 

 

 

 

# 암호가 필요한 공유

암호가 필요한 공유를 위해서는 리눅스 계정 생성이 필요하다. 삼바서버는 기본적으로 리눅스 계정을 기반으로 사용되기 때문이다. 아래와 같은 리눅스 기본 명령어로 사용자를 생성하고 패쓰워드 설정을 할 수 있다.

 

[root@localhost /]# useradd wookoa

[root@localhost /]# passwd wookoa

 

위와 같이 리눅스 계정을 생성했으면, 삼바 서버에 리눅스 계정을 등록해줘야 한다. 위에서도 언급했듯이 삼바서버는 리눅스 계정을 기반으로 서비스되기 때문이다.

 

[root@localhost /]# smbpasswd -a wookoa

New SMB password:

Retype new SMB password:

Added user wookoa.

 

위와 같이 삼사 서버에 리눅스 계정이 끝났다면, 아래와 같이 삼바 서버의 설정(/etc/samba/smb.conf)에 해당 내용을 추가해줘야 한다.

 

[PrivateFileServer]       << Windows 운영체제에 표시될 폴더 이름
        path = /PrivateDirectory       << 실제로 공유될 디렉터리 경로
        browsable = yes
        writable = yes
        guest ok = No
        read only = No
        write list = wookoa       << 삼바서버에 등록된, 접근을 통제할 계정명
        directory mask = 0777
        create mask = 0777
        directory mask = 0777

 

 

 

# 암호가 필요 없는 공유

암호가 필요 없는 공유는 리눅스 계정을 추가생성할 필요없이 옵션값 변경으로만 설정이 가능하다.

 

[Share]       << Windows 운영체제에 표시될 폴더 이름
        path = /Share       << 실제로 공유될 디렉터리 경로
        browsable = Yes
        writable = Yes
        guest ok = Yes       << 해당 옵션을 Yes로 변경함으로써 누구나 접근 가능
        read only = No
        write list = nobnody       << 리눅스에서 default로 생성되는 nobody 계정을 입력
        directory mask = 0777
        create mask = 0777
        directory mask = 0777

 

 

 

 

 

 

추가로 설정해야할 부분이 아직 남았지만, 아래는 본인의 삼바 서버의 설정(/etc/samba/smb.conf) 파일의 전체이며 Windows 운영체제에서 접근했을 때 공유된 파일서버의 모습이다.

 

[global]
        workgroup=WORKGROUP
        server string = SambaFileServer
        map to guest = bad user
        dns proxy = no
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

 

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

 

[PrivateFileServer] 
        path = /PrivateDirectory 
        browsable = yes
        writable = yes
        guest ok = No
        read only = No
        write list = wookoa
        directory mask = 0777
        create mask = 0777
        directory mask = 0777

 

[Share]   
        path = /Share
        browsable = Yes
        writable = Yes
        guest ok = Yes
        read only = No
        write list = nobnody
        directory mask = 0777
        create mask = 0777
        directory mask = 0777

 

 

 

 

# Selinux Disabled

위 설정까지 마쳐도 파일서버에 접근이 안된다. 아래와 같은 경로의 설정값 중 CentOS의 selinux 옵션을 비활성화 해야한다. 기존의 주석을 풀고 disabled 값으로 변경하면 된다. 변경 후 시스템 재부팅이 필요하다.

 

[root@localhost /]# vi /etc/seliux/config

 

 

 

 

# Firewall Exception adding

삼바 파일서버로 접근하기 위한 방화벽도 오픈해줘야 한다. 아래와 같이 간단한 명령어로 해결이 가능하다.

 

[root@localhost /]# firewall-cmd --permanent --zone=public --add-service=samba

[root@localhost /]# firewall-cmd --reload

 

 

 

# Service Register

삼바 서버를 구동하기 위해서는 삼바 서버를 서비스에 등록해줘야 한다.

 

[root@localhost /]# systemctl enable smb

[root@localhost /]# systemctl start smb

 

 

위와 같은 과정을 모두 마친 후 시스템을 재부팅해보면 삼바서버가 자동으로 기동되는것을 확인할 수 있다. 본인의 경우 [home] 구역을 지우지 않아서 계정명(wookoa)가 파일 서버에 계속 생성되는 것을 두고 한참을 씨름한 뒤에 알아 차렸다.

 

Private comment