Linux/Centos 7 1611

Centos 7 Samba 설치 (Standalone)

a1de61c172 2017. 1. 30. 12:58

윈도우 클라이언트와 파일 공유를 하려면 SMB/CIFS만큼 편한 것은 없다고 생각합니다. 윈도우 클라이언트도 NFS를 이용해 파일 공유가 가능하지만 NFS 클라이언트는 윈도우 10의 경우 Pro 에디션 이상에만 있습니다. 따라서 일반적인 경우라면 윈도우 파일 공유로 알려진 SMB/CIFS를 이용해 파일 공유를 하는게 좋죠.

Samba 서버 설치

Samba 서버 설치를 위해서는 다음 명령어를 입력하세요.

# yum install samba

Samba 서버 설정

Samba 서버의 설정 파일은 '/etc/samba/smb.conf'에 있습니다. 기본 설정 파일은 다음과 같습니다.

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
 workgroup = SAMBA
 security = user

 passdb backend = tdbsam

 printing = cups
 printcap name = cups
 load printers = yes
 cups options = raw

[homes]
 comment = Home Directories
 valid users = %S, %D%w%S
 browseable = No
 read only = No
 inherit acls = Yes

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

[print$]
 comment = Printer Drivers
 path = /var/lib/samba/drivers
 write list = root
 create mask = 0664
 directory mask = 0775

 [global]은 Samba 서버 전체에 영향을 미치는 설정입니다.

  • workgroup는 윈도우의 작업 그룹을 의미합니다. 윈도우를 처음 설치하면 작업 그룹은 'WORKGROUP'로 되어 있습니다. workgroup 설정은 'WORKGROUP'로 설정하는게 좋습니다.

  • security는 USER|ADS|DOMAIN 값을 가질 수 있습니다. 익명 접속을 위해 'security = share'로 바꾸라는 가이드들이 많던데, 이 방법은 더 이상 사용되지 않습니다.

  • netbios name은 네트워크에 보일 이름입니다. 기본적으로는 리눅스의 호스트 이름으로 되어 있는데 이를 호스트 이름을 변경하지 않고 Samba 서버에서만 다르게 할 수 있습니다.

smb.conf를 설정한 예를 보면 다음과 같습니다.

[global]
 workgroup = WORKGROUP
 netbios name = MyLinuxSAMBA
 security = user
 passdb backend = tdbsam

 map to guest = Bad User
 
 printing = cups
 printcap name = cups
 load printers = yes
 cups options = raw

'workgroup'을 'WORKGROUP'으로 설정해서 윈도우 설정을 바꾸지 않고 공유를 하려고 했구요. 'netbios name'를 'MyLinuxSAMBA'로 설정해서 네트워크 상에 '\\MyLinuxSAMBA'로 접근가능하게 했습니다. 그 다음 'map to guest'를 'Bad User'로 설정하여 암호 없는 공유가 가능하도록 수정했습니다.

위 사진처럼 'netbios name'을 수정하니 네트워크에도 수정 된 것을 확인할 수 있습니다.

암호 없는 공유

암호 없는 공유를 하려면 [global]에 'map to guest = Bad User'을 넣어주세요. 그 다음 공유하려는 곳에 'guest ok = yes' 혹은 'public = yes'를 넣어주면 됩니다. 'security = share'를 넣지 마세요! 이 방법은 더 이상 사용되지 않습니다.

[global]
 workgroup = SAMBA
 security = user

 passdb backend = tdbsam

 map to guest = Bad User
 
 printing = cups
 printcap name = cups
 load printers = yes
 cups options = raw

 

[<공유 이름>]

comment = public shares

path = <공유하고 싶은 폴더>

browseable = Yes

public = Yes

read only = No # 읽기 전용으로 공유하려면 Yes로 바꾸세요.

Microsoft Account (MSA) 계정의 익명 접속[각주:1]

윈도우 8(?) 부터 Microsoft 계정이라는게 생겨 Windows Live ID로 윈도우에 로그인이 가능해졌습니다. 이러한 MSA의 경우에는 Samba 서버로 익명 접속이 안될 수도 있는데요. 이유는 MSA가 Guest 접속을 보안상의 이유로 막았기 때문입니다. Guest 접속을 윈도우 레지스트리를 이용해 활성화 할 수도 있지만 이러면 번거롭기 때문에 레지스트리를 이용하지 않고 접속을 하겠습니다.

Samba 서버에 접속하면 아래와 같이 '사용자 이름 또는 암호가 잘못되었습니다.'라면서 새로운 계정 정보를 요구합니다.

암호 없는 공유에 접근하려면 아무 계정 정보나 입력하면 됩니다. 예를 들면 '사용자 이름'에 'Guest'를 넣고 '암호'에 아무 것도 없이 '확인'버튼을 누르면 접속이 가능합니다. 이 때, '내 자격 증명 기억'에 체크를 해서 다음에 또 물어보지 않도록 합니다. 그래야 kodi같은 프로그램이 Samba 공유에 접근할 수 있습니다.

암호 있는 공유

이건 귀찮으니 패스...

Samba 서버 실행

Samba 서버를 실행하려면 아래와 같은 명령어를 입력하면 됩니다. nmb는 Netbios 요청을 처리하는 서버입니다. Netbios는 윈도우에서 '\\<IP 주소>' 가 아니라 '\\<컴퓨터 이름>'으로 접속할 수 있게 해주는 건데, nmb 데몬이 켜져 있지 않으면 IP 주소로만 접속이 가능합니다.

# systemctl start nmb

# systemctl start smb

방화벽 예외 등록

Centos 7에는 방화벽 데몬으로 'firewalld'가 돌고 있습니다. 안전한 네트워크인 경우에는 방화벽을 꺼도 되겠지만 방화벽 예외로 등록하는게 안전하지 않을까 생각됩니다.

# firewall-cmd --add-service=samba --permanent

부팅 시, 실행

Samba를 부팅 시 자동으로 실행되도록 만드려면 다음과 같은 명령어를 입력하면 됩니다.

# systemctl enable smb

# systemctl enable nmb

SELinux 에러

다 잘 설정했다고 생각했는데 접속이 안되는 경우가 더러 있습니다. SELinux 문제이거나 퍼미션 문제가 많은데요. SELinux 설정 관련해서는 귀찮아서 그러는 것은 아니고, 여기에 설정하는 방법이 잘 나와 있으니 이 방법을 따라하시면 설정할 수 있습니다. 안전한 네트워크라면 SELinux를 끄는 것도 한 가지 방법이 될 수 있습니다만 추천하지는 않습니다.

  1. https://techjourney.net/cannot-connect-to-cifs-smb-samba-network-shares-shared-folders-in-windows-10/ [본문으로]

'Linux > Centos 7 1611' 카테고리의 다른 글

Centos 7 docker 설치하기  (0) 2017.03.18
Centos 7 NTFS 디스크 마운트  (1) 2017.01.14
Centos 7 설치하기  (0) 2017.01.14