samba 설치

| 2018년 10월 28일 | 0 Comments

1. SAMBA 설치 및 설치

sambawindow 환경과 리눅스 환경에서 원활한 데이터 공유를 위해 사용하는 서비스입니다.

테스트 환경은 centos 6, windows server 2012입니다.

1.1 samba 설치

yum install을 통해 samba를 설치합니다.

[root@localhost ~]# yum install -y samba

1.2 samba 설정

samba의 설정 파일은 /etc/samba/ 아래에 위치합니다.

vi/etc/samba/smb.conf 파일을 열어 살펴보겠습니다.

Hosts allow = 115.68.216.

[global] 부분에 hosts allow를 수정합니다. 접근을 허용하는 IP나 해당 대역을 입력합니다.

저는 115.68.216 대역의 호스트는 모두 접근이 가능하도록 설정하였습니다.

security 영역은 user, share, server의 값으로 설정할 수 있습니다.

user는 계정 및 패스워드를 통해 인증을 거진 사용자에 한해 공유를 허가하며 share는 모든 공유 영역에 인증이 없이 접근이 가능합니다.

server는 공유 영역에 대한 사용 권한은 다른 호스트(NT 패스워드 서버)의 인증을 거친 사용자에 한하여 허가하도록 합니다.

Passdb backend 영역은 패스워드에 대한 인증 방식으로 tdbsam, ldapsam, smbpasswd의 값으로 설정할 수 있습니다.

tdbsamsamba 내장 TDB SAM 형식, ldapsamLDAP을 사용, smbpasswdsmbpasswd 텍스트 파일 인증 형식입니다.

저는 usertdbsam으로 설정하겠습니다.

설정파일 가장 하단에 공유 디렉토리 설정 부분을 추가하여 줍니다.

[smileserv] // 이 부분은 공유 폴더 이름입니다.

Comment는 해당 공유 폴더에 대한 설명입니다.

path는 공유 폴더의 경로를 기재합니다.

Writable은 이 폴더에 읽고 쓰기 권한에 대해 부여할 수 있습니다. 저는 yes로 하겠습니다.

browsable은 이 폴더가 리스트에 출력하게 될 것인지를 설정하는 것입니다.

Create mask는 새로운 디렉토리를 생성할 때 해당 권한으로 생성하게 됩니다.

Valid users는 접근할 수 있는 사용자를 설정할 수 있습니다.

설정이 완료되면 :wq로 파일을 저장하고 빠져나옵니다.

1.3 samba 계정 및 디렉토리 생성

samba는 리눅스 시스템 계정에 설정되어있는 패스워드는 사용할 수 없습니다.

‘Smbpasswd -a 계정 으로 패스워드를 설정하여야 합니다.

[root@localhost ~]# adduser smb

[root@localhost ~]# smbpasswd -a smb

New SMB password:

Retype new SMB password:

Added user smb.

/etc/samba/smb.conf 파일에 설정한 디렉토리 경로에 해당 디렉토리를 생성합니다.

[root@localhost ~]# mkdir /smileserv_samba

Samba 데몬을 재시작하여 설정을 적용하겠습니다.

[root@localhost ~]# /etc/init.d/smb restart

SMB 서비스를 종료함: [ OK ]

SMB서비스를 시작하고 있습니다: [ OK ]

[root@localhost ~]# netstat -nltp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:50514 0.0.0.0:* LISTEN 996/rpc.statd

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1144/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1251/master

tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 8470/smbd

tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 8470/smbd

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 976/rpcbind

tcp 0 0 :::46771 :::* LISTEN 996/rpc.statd

tcp 0 0 :::22 :::* LISTEN 1144/sshd

tcp 0 0 ::1:25 :::* LISTEN 1251/master

tcp 0 0 :::445 :::* LISTEN 8470/smbd

tcp 0 0 :::139 :::* LISTEN 8470/smbd

tcp 0 0 :::111 :::* LISTEN 976/rpcbind

2. SAMBA 테스트

2.1 window client

window 클라이언트에서 테스트해보겠습니다.

윈도우 클라이언 접속한 후 \\samba server ip를 입력합니다.

Smb.conf 파일에서 인증을 통한 사용자만 접근할 수 있도록 설정하였기 때문에 계정 인증 절차를 행합니다.

접속이 되면 smb.conf 파일에서 설정한 디렉토리와 smb 계정의 디렉토리가 있는 것을 확인할 수 있습니다.

Smileserv 폴더로 진입하여 파일 생성을 해보겠습니다.

위와 같이 파일을 생성할 시에 권한으로 인하여 거부되는 것을 볼 수 있습니다.

[root@localhost /]# ll |grep smileserv_samba

drwxr-xr-x 2 root root 4096 2018-10-02 23:42 smileserv_samba

smileserv 파일은 root의 소유이며 디렉토리 권한은 755입니다. 현재는 smb 계정으로 접속하였기 때문에 생성 권한이 없어 해당 디렉토리에서 파일 생성은 불가능 한 것을 볼 수 있습니다.

그렇다면 해당 디렉토리에 있는 파일은 읽기가 가능한 지 테스트 해보겠습니다.

[root@localhost /]# cd smileserv_samba/

[root@localhost smileserv_samba]# touch samba_test

[root@localhost smileserv_samba]# ll

합계 0

-rw-r–r– 1 root root 0 2018-10-02 23:41 samba_test

위와 같이 공유 폴더 내에 파일을 하나 생성하였습니다. 권한은 644이며 root의 소유입니다.

정상적으로 파일 읽기는 가능한 것을 확인할 수 있습니다.

만약 파일의 소유자가 아닌 계정에서도 파일의 쓰기 및 삭제가 가능하도록 하기위해서는 공유폴더의 권한을 777로 부여해야합니다.

2.2 Linux client

linux client에서 테스트해보겠습니다. 리눅스 상에서는 공유 디렉토리를 서버에 마운트하여 사용할 수 있습니다.

삼바 서버와 다른 리눅스 클라이언트에서 진행해보겠습니다. Mount -t cifs -o user=계정이름,passwd=계정패스워드 //samba server ip/공유디렉토리 /마운트경로

[root@localhost ~]# mkdir /samba_test

[root@localhost ~]# mount -t cifs -o user=smb,passwd= //115.68.22.99/smileserv_samba /samba_test

[root@localhost ~]# df -Th

Filesystem Type Size Used Avail Use% Mounted on

/dev/sda3 ext4 55G 3.2G 49G 7% /

tmpfs tmpfs 934M 0 934M 0% /dev/shm

/dev/sda1 ext4 190M 67M 113M 38% /boot

//115.68.22.99/smileserv_samba cifs 98G 8.1G 91G 90% /samba_test

Samba 서버에서 설정된 공유 디렉토리를 클라이언트의 /samba_test 디렉토리로 마운트된 것을 확인할 수 있습니다.

** cifs란 네트워크를 위한 smb 파일 공유 프로토콜의 확장 버전입니다.

3. 네트워크 드라이브 연결

samba server에 접근 시 매번 IP를 입력하지 않고 추가 디스크처럼 드라이브로 디렉토리에 접근할 수 있도록 네트워크 드라이브로 연결해보겠습니다.

 

네트워크 드라이브 연결을 클릭 후 \\samba server ip/공유디렉토리이름을 기입 후 마칩을 클릭합니다.

인증 절차를 거칩니다.

Z 드라이브로 해당 디렉토리가 잡힌 것을 볼 수 있습니다.

4. SAMBA 세션 삭제

윈도우 클라이언트에서 해당 세션을 삭제하는 것은 리부팅이나 명령어로 저장된 기록을 제거하는 것입니다. cmd창을 열어 net use로 세션을 확인합니다.

현재 115.68.22.99 (samba server)의 세션이 연결되어있는 것을 확인할 수 있습니다. 이렇게 세션이 남아있는 경우에는 재접속 시 인증 절차를 거치지 않습니다. 다른 계정으로 접속할 때 다시 인증 절차를 거칠 수 없기 때문에 명령어로 세션을 삭제해보겠습니다.

net use \\samba server ip\IPC$ /delete 명령어로 세션을 삭제할 수 있습니다.

Category: 솔루션/IT기타

About the Author ()