samba는 이기종간의 파일,  CD-ROM, 프린터 등을 공유하기 위해 만들어진 프로그램이다.
samba는 마이크로소프트사와 인텔이 다른 시스템의 디스크나 프린터와 같은 자원을 공유하기 위해 개발한 프로토콜이다. SMB는 tcp/ip 기반의 NetBIOS 프로토콜을 사용한다.

samba는 서버는 크게 2개(smbd, nmbd)의 프로세스로 구성 되어 있다.
대부분의 처리는 smbd에서 한다. 포트 또한 tcp:445 만 열려 있으면 작동한다.  다만, 윈도우즈 사용자의  컴퓨터이름으로 접속할 수 있게 하기 위해서는 nmbd를 사용해야 한다. nmbd는 3개의 포트를 사용한다.  (tcp:139, udp:137,138) 

SAMBA를 사용하는 경우 tcp : 139, 445번과  udp : 137, 138번 포트가 열려있어야 한며, 방화벽설정에도 적용되어야 한다.

1. SAMBA 서버 설치

~]#  yum  -y  install  samba  samba-common  samba-client

2. SAMBA 시작 및 종료
samba server는 항상 실행하고 있는 서버 프로그램이다, smb는 systemd로 관리하며 systemctl로 제어할 수 있다.  smb,  nmb 가  있으며,   smb 만으로도 서비스 가능하다.

~]# systemctl  enable  smb  nmb
~]# systemctl  start  smb  nmb

3. SAMBA  사용자 계정 설정
samba 사용자는 시스템 사용자를 이용하며,  smbpasswd -a 명령으로  samba 접속 계정으로 설정할 수 있다.

~]#  useradd  ID
~]#  passwd   ID     ----->   리눅스 사용자 생성
~]#  smbpasswd  -a   ID    ----->   samba 계정 적용
New SMB password:
Retype new SMB password:
Added user ID.

4. SAMBA 설정
samba 설정 파일의 위치는 /etc/samba/smb.conf 이다.

[root@localhost samba]# more 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]     
  //  전역 설정 부분, 여기 아래에 옵션을 넣게 되면 모든 Samba 정보에 설정된다.

workgroup = SAMBA 
  //  윈도우의 workgroup과 일치 시키거나 NT 도메인 이름으로 설정한다. 

server string = Samba Server Version %v 
  //  윈도우 컴퓨터 설명과 유사, 공유시 폴더명 옆에 설명.
  //   %h 호스트명, %L NetBIOS 이름, %v Samba Version 표시


interfaces = lo eth0 192.168.1.2/24  192.168.2.2/24 
  // 두개의 네트워크에 Samba 가 물려있는 경우로 양쪽 네트워크에 대행 브라우징 및 서비스가 가능하다.

hosts allow = 127.   192.168.1.   192.168.2.  // 접근을 허가할 호스트 네임 혹은 ip 주소를 지정
   
log file = /var/log/samba/log.%m   // 서버에 접속한 호스트마다 개별적인 호그 파일을 생성하도록 설정  
max log size = 50

security = user 
  //   서버의 사용자 계정만 사용할 수 있도록 한다.
  //   user = Samba Server에서 계정 및 패스워드를 통한 인증을 거친 사용자에 한하여 공유를 허가
  //   share = 모든 공유 영역에 권한 없이 접근이 가능하도록 설정
  //   server =  공유 영역에 대한 사용 권한은 다른 호스트(NT 패스워드 서버)의 인증 과정을 거친 사용자에 한하여 허가  

passdb backend = tdbsam 
  //  패스워드에 해한 인증 방식.
  //   tdbsam = samba 내장 TDB SAM 형식
  //  ldapsam = LDAP 사용 ( LDAP 라이브러리 필요)
  //  sbmpasswd = smbpasswd 텍스트 파일 인증 형식 

printing = cups 
printcap name = cups 
load printers = yes 
  //  Samba에서 별도의 프린터 설정을 하지 않고, printcap name 에서 설정한 프린트 설정을 불러온다.
cups options = raw 





[homes]      //   사용자  계정을 통해서 자기 홈 경로를 접근 할 수 있다.
comment = Home Directories       //   폴더에 대한 설명
valid users = %S, %D%w%S       //     
browseable = No    //  이 폴더의  표출여부 설정, yes로 하면 접속 권한이 없어도 네트웍의 모든 PC에서 확인 가능.   
read only = No     //  버전 따라 writable 로 표시되기도 한다. 읽고, 쓰기 권한 설정.
inherit acls = Yes 
create mask = 0664   //  생성되는 파일 권한  
directory mask = 0755    //  생성되는 폴더 권한


[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


# 여러 사용자가 함께 사용할 수 있는 공유 폴더 설정하기
# "[ ]"  안에 접속할 경로를 설정한다,  만일 "[share]"로  세팅했을 경우, 윈도우에서의 접속은
# "\\server\share" 로 접속할 수 있다. 

[share]
comment = shared Files
path = /data/samba/share   //  실제 파일이 저장될 공간으로 , 설정이 끝나고 폴더를 생성해 주어야 한다.
browseable = yes  //  공유 내역을 브라우징 리스트에 나타나게 할 것인지에 대한 옵션
read only = no
create mask = 0664
diretory mask = 0755
guest ok = yes  //  Anonymous로 접속 간으하게 하려면 아래 주석을 풀어준다. 이때는 read only을 추천한다.




# 옵션 설명
# vlid users   -->  공유 영역에 접근 가능한 사용자 혹은 그룹 지정사용자를 여러명 지정할 경우 공백으로 구분하여 지정
#                          그룹명일 경우 @ 그룹명 으로  그룹임을 명시한다.
#  write list  -->  공유 영역에 대한 쓰기 가능한  사용자 혹은 그룹 지정사용자를 여러 명 지정할 경우 공백으로 구분.
#                          그룹명일 경우 @ 그룹명 으로 그룹임을 명시한다.


5. 방화벽 설정
Samba는   tcp 139, 445 포트를 사용한다.

(참고)  삼바서버 포트 번호
netbios-ns         137/udp                       # NETBIOS Name Service 
netbios-dgm     138/udp                       # NETBIOS Datagram Service 
netbios-ssn       139/tcp                         # NETBIOS session service 
microsoft-ds     445/tcp 


6. 삼바 서버  접속 클라이언트
위도우즈에서 다음과 같은 방법으로 접속할 수 있다.

   1) 윈도우즈에서 접속하기

시작 → 실행   ,  \\IP(또는 호스트명)           ,     아이디/비번으로 접속할 수 있다.

   2)  리눅스에서 접속하기

GUI 환경의  리눅스에서는  "파일브라우저" 를  실행하여  "네트워크 찾아보기" 에서  
smb://컴퓨터명/공유이름   
형식으로  접근 할수 있다.

   3) MC(Midnight  Commander)를  이용하여 접속하기  

명령어 창에서 mc를  입력하여 작동한 후 f9 키를 눌러 메뉴에서 "smb 연결"을 선택하여 접근할 수 있다.

  4)  smbclient 를 이용한 smb 서버 접속
samba에서 제공하는 smbclient 명령어를 이용하여  SMB에 접속할 수 있다.
접속한 후  ftp 처럼 동작하며, help 명령어로 사용할 수 있는 명령어를 확인할 수 있다.
 get, put 등의 명령어로 파일을 다운로드 업로드 할 수 있다.

~]# smbclient   //컴퓨터이름/공유명  -U  사용자명
Enter user_id's  password :  패스워드
smb: \> ls 

   5)  linux   SMB   마우트 하기.

~]# mount   -t   cifs    //아이피/공유명     /smb_dir    -o  user=사용자,password=패스워드


+ Recent posts