서버/리눅스

[리눅스] SAMBA / wins-lux 공유 폴더 연결 / 에러발생

장동규 2017. 4. 14. 21:45

SAMBA

리눅스와 윈도우즈 간의 사용 가능 ( 공유폴더 )


목차


구성

서버 : Windows

클라이언트 : Linux


서버 구성 ( Windows )

          

 추가




확인


권한 : 읽기/쓰기

 윈도우키 > 고급 공유 

 맨아래 > 

암호 보호 

공유 끄기




클라이언트 구성 ( Linux )

#1. 패키지 설치

samba-client.x86_64

cifs-utils.x86_64

#>yum install -y samba-client.x86_64

#>yum install -y cifs-utils.x86_64

#>yum update -y

: 일단 yum을 업그레이드 해보자


윈도우에서 cmd > ipconfig 

 이더넷 어댑터 로컬영역 > IPv4 주소를 본다.



Windows에서 따온 ip주소를 입력한다.

#>smbclient -L <server_ip>

#>smbclient -L 


#결과


공유 폴더 연결( 마운트 )

서버의 폴더와 리눅스안의 빈 디렉터리와 연결( 마운트 ) 시켜 접근한다.

>> 파티션과 비슷하다.

#>mount -t cifs <server_path> <mount_point>

option : -t를 사용해 cifs 프로토콜을 입력 ( 네트워크를 위한 samba 파일 규약 프로토콜 )


>> server path는 컴퓨터 검색창에서 내 ip를 입력하면 공유 폴더로 접근이 된다.

여기서 공유된 폴더를 찾아서 path를 복사한다.

저는 \\192.168.3.176\linux 이네요 ( 인코딩 방식에 따라 \로 표시된다 ) 

 


또한 테스트를 위해 윈도우 폴더에 file.txt를 만듭니다.


*소스코드

#>mkdir /samba

#>mount -t cifs \\\\192.168.3.176\\linux /samba


마운트할 directory를 만들어준다.

\ : escape seqence 이므로 2배로 작성한다. ( 싱글쿼터를 사용해도 괜찮다 )


#실행결과

*소스코드

#>df -h



#읽기 쓰기



바꿔서 테스트

서버 : Linux

클라이언트 : Windows


Linux 서버 만들기

#패키지 설치

samba.x86_64

#>yum install -y samba.x86_64

but : 현재 ( 2017.4.17 ) 기준 4.4.4_version이다 ( #> rpm -qa | grep samba )

www.samba.org 에서 소스코드로 업그레이드가 가능하다.


#Samba 사용자 설정

삼바로 접속할 계정은 리눅스pw, 삼바용pw 2개를 가지게 된다.

#>useradd samba

#>passwd samba

: samba

#>smbpasswd -a samba 

: samba

smbpasswd <option> <user_name>

-a : 추가

-x : 삭제

samba pw는 linux pw와 달라도 가능하다.


#공유폴더 만들기

#>mkdir /samba

#>chmod 777 /samba

공유 폴더를 만들고 권한을 추가해준다.


#samba 설정 설명서

/etc/samba/smb.conf.example


#설정

#>cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

#>vi /etc/samba/smb.conf

:%d

: 먼저 백업 본을 하나 만들고 설정을 한다.

%d로 전체 삭제 한다.


share모드 간단한 설정

[global]

workgroup = WORKGROUP

server string = Samba Server Version %v 

security =  user

map to guest = Bad Password


[public]

path = /samba

public = yes

writable = yes

guest ok =yes


[global]

workgroup = WORKGROUP

server string = Samba Server Version %v 

security =  user

log file = /var/log/samba/log.%m

max log size = 50

hosts allow = 100.100.100.1

hosts deny = 100.100.100


[public]

path = /samba

public = yes

writable = yes

read only = no

browseable = yes

valid users = samba user01 user02


[homes]

comment - Home Directories

browseable = no



:wq

[global] : samba 전반적인 설정이 global 단락에 있다.

workgroup 과 secutiry 만 있으면 동작이 가능


[public] : 제공할 디렉터리

path랑 public만 있어도 읽기전용으로 동작 가능


[homes] : 로그인한 사용자의 홈 디렉터리

기본으로 사용자의 홈디렉터리 ( 2개가 보여짐 )

comment만 있어도 동작가능


%v : version

%m : netBios


[global]

workgroup = ( 컴퓨터 > 속성 에서 확인 )


server string = [ comment ] : 그냥 string 설명이다.

security =    user    : 사용자 명과 패스워드 확인 후 접속 ( 틀리면 접속 불가 )

share  : 사용자명과 패스워드 없이 접속한다 ( ghest )

server : 인증서버로 인증 후 접속 ( 인증에 관련된 서버를 따로 둔다. )

samba_ver2 에서는 사용하지않다고 samba_ver4에서는 지원하지 않는 옵션이 되었다.

#share (사용자명과 패스워드 없이 접속)

       map to guest = <bad_user>

      Bad Passwd : 암호가 틀릴시 guest로 동작인데 ( windows가 계정을 물어본다면 아무거나 입력.)

이 옵션을 사용하면 public에 있는 valid user 옵션을 지워야 원하는 동작을 수행할 수 있다.


log file = 로그 경로를 지정한다.

max log size = 로그파일의 사이즈를 지정한다 ( 0인 경우 무한 )

hosts allow = 100.100.100.10 100.100.100.20 .. ip로 허용된 ip만 접근시킨다.

     100.100.100.     (100.100.100.1~100.100.100.254)   네트워크 대역대로 가능

이 네트워크는 windows cmd > ipconfig로 확인이 가능하다.

hosts deny = 100.100.100. 특정 ip / 네트워크 대역대를 차단한다.



[public]

path = 제공할 파일, 디렉터리 path

public = yes : 대괄호 [ ~ ] 안에 들어있는 이름으로 공유폴더가 표시

read only = yes ( 읽기전용으로 설정 기본값 )

writable = yes ( yes : 쓰기 설정 기본값 (no) )

read only , writable 둘중 하나의 옵션만 사용하면 된다.

browseable = 목록 표시 ( 기본값 yes )

valid user = 사용자 지정 하기

guest ok = 게스트의 출입을 허가한다.


[homes]

comment = 설명

browseable =[homes]를 안보이게한다 : 로그인한 사용자의 홈디렉터리만 보이게 된다.


:wq


#방화벽 추가

#>firewall-cmd --permanent --zone=public --add-service=samba

firewall-cmd --reload

samba에 대한 방화벽을 해제한다.


#실행

#>systemctl restart smb


#Client 접속

linux ip 확인

en~ ( 뒤에는 다를 수 있음 ) : inet 부분이 ip주소


window + R

<server_IP> 입력


만들어 놓은 계정으로 로그인



#확인

접속한 사용자 목록 (서버)

#>smbstatus


접속 기록 (클라이언트)

cmd > net use ( 접속 기록을 저장해 다음 공유폴더 사용시 id, pw를 안쳐도 된다.)

 하지만 지운다.

cmd > net use \delete *

[y/n] : y



Error 수정

1. selinux 설정

#>vi /etc/selinux

disabled로 변경


2. firewall - inactive ( 방화벽 설정이 귀찮으면 테스트할때만 꺼둔다 )

#>systemctl stop firewall

#>systemctl disable firewalld

3. SAMBA 오타

#>vi /etc/samba/smb.conf

오타수정


4. Windows 반복 에러 

윈도우 재부팅