LINUX(Server)

Samba

천천히, 한 걸음씩 2024. 4. 24. 00:06

Samba

- 리눅스 서버에서 원격지의 리눅스 및 윈도우를 비롯한
  SMB/CIFS 프토콜을 사용하는 다양한 운영체제의
클라이언트에게 파일 및 프린터 공유 서비스를
제공하는 오픈 소스 프로그램(samba.org)
- SMB(Server Meassge Block) 프로토콜 사용
(마이크로소프트와 인텔이 개발)
-> CIFS(Common Internet File System)
( SMB + LanManager+NetBIOS )

1. Server-A(Client) , Windows(Server)
1) Windows에서 공유폴더(samba) 설정
2) 설치
samba-client
cifs-utils

#>yum install -y samba-client.x86_64
#>yum install -y cifs-utils.x86_64

3) 공유 폴더 확인
#>smbclient -L <host> -U <user_name>

ex) W?indows SAMBA서버에서 공유되고 있는 폴더 확인
#>smbclient -L 192.168.6.254 (본인 Windows_IP)
Enter root's password:(enter)

4) 마운트
#>mount -t cifs <server_공유폴더> <mount_point>

ex) Windows samba공유폴더를 /share/samba 마운트
#>mount -t cifs \\\\192.168.6.254\\samba /share/samba
ERROR : mount.cifs: bad UNC (\192.168.6.254samba)

- 확인
#>df -h
\\192.168.6.254\samba
                      112G   91G   22G  81% /share/samba

2. Server-A(Server) , Windows(Client)
1) 설치
samba.x86_64

#>yum install -y samba.x86_64

- 확인
#>rpm -qa | grep samba
samba-3.6.23-46el6_9.x86_64

2)설정
/etc/samba/smb.conf
(백업파일  /etc/samba/smb.conf.bak)

**man command**
#>yum install -y man.x86_64

ex) Server-A 에서 /share/samba 디렉터리 공유 설정
[global]
          workgroup = WORKGROUP
         security = user

[public]
         path = /share/samba
        read only = yes

3) 서비스 시작
#>service smb start
#>service smb status

- samba 사용자 설정
#>useradd samba
( #>passwd samba )
#>smbpasswd <option> <user_name>
-a 추가
-x  삭제
4) 방화벽
#>getenforce   
#>setenforce 0

#>service iptables status 
#>service iptables stop


5) Windows Client
\\100.100.100.100

[실습 - 사용자 홈디렉터리]
[global]
        workgroup = WORKGROUP
        security = user

[public]
        path = /share/samba
        read only = no
        writable = yes

[homes]
        read only = no
        writable = yes
browseable = no

#>service smb restart

ex)smb.conf 수정 X, 
Windows에서 samba사용자로 접속하였을때
public폴더에 파일을 생성 할 수 있도록 설정해 주세요!! 
#>chmod o+w /share/samba
(757)
( #>setfacl samba 사용자한테만 쓰기권한 추가 )

[실습 - 로그인 없이 접속(share)]
*Windows CMD*
>net use
>net use /delete *
이 작업을 계속하시겠습니까? (Y/N) [N]: Y

[global]
        workgroup = WORKGROUP
        security = user
        map to guest = Bad Password

[public]
        path = /share/samba
        read only = no
        writable = yes
        guest ok = yes
        public = yes

#>service smb restart

[실습 - Host 접근 제어]
hosts allow = <host_ip>
hosts deny = <host_ip>

ex) 100.100.100.1 , 100.100.100.10 허용
hosts allow = 100.100.100.1 100.100.100.10

ex) 100.100.100.0 네트워크 대역대만 허용
hosts allow = 100.100.100.

ex) 100.100.100.1 만 거부
hosts deny = 100.100.100.1

#>service smb restart

-> SAMBA Port_num : 139,445

 

[전체설정(Global Setting)]
(1) workgroup = MYGROUP
   => 윈도우의 작업그룹과 반드시 동일해야 한다.
(2) server string = Samba Server
   => 서버에 대한 설명을 부여해 준다.
(3) hosts allow = 192.168.1. 192.168.2. 127.
   => 쌈바 서버에 접속을 허용할 호스트를 지정하는데 사용한다. 
접속할 허용할 호스트는 아이피 주소, 호스트명 등을 지정할 수 있으며, 
네트워크/넷마스크형태로도 지정할 수 있다. 
또한 EXCEPT라는 키워드와 와일드문자도 사용가능하다. 
참고로 쌈바서버에 접속이 불가능하게 하려면 hosts deny로 설정한다.
(4)printcap name=/etc/printcap
=>서버에 의해 사용되는 printcap name을 겹쳐쓰기 하고자 할떄 
그 위치를 지정한다
(5)load printers=yes
=>삼바 서버의 printcap에 정의된 모든 프린터 목록이 자동적으로 
로딩되게 할것인가를 지정하는 옵션. 
네트워크 프린터를 삼바서버에 연결하여 사용하고자 한다면 선택해야 한다
(6)printing=lprng
=>프린터 시스템 종류를 지정한느 옵션으로 비표준 프린터시스템이 
아니면 지정할 필요가 없다
(7) guest account = pcguest
   => 공유 설정 섹션에서도 사용하는 항목으로, guest ok로 명시되어 있는 
서비스에 접근할 유저를 지정해 준다. 
보통 클라이언트가 손님서비스(guest service)에 접속할 수 있게 된다. 
이러한 유저는 /etc/passwd파일안에 존재하는 계정이어야 하며, 
보통 "nobody"로 설정하면 된다.
(8) log file = /var/log/samba/%m.log
=> 쌈바 서버에 접속하는 호스트의 접속 로그에 대한 기록을 
저장하는 파일을 지정한다.
(9) max log size = 0
=> 로그 파일의 최대 크기를 KB단위로 제한두려고 할 때 사용되는 
옵션이다. 제한을 두었을 경우에 이를 초과하게 되면 
.old확장자를 가진 파일로 저장되고 새로운 파일이 생성된다. 
현재처럼 0으로 설정하면 파일의 크기에 제한을 두지 않는다.
(10) security = user
   => 보안관련 옵션으로 클라이언트가 쌈바서버에 접속할 때 
인증 레벨을 부여하는 옵션이다. 
보안모드에는 4가지모드가 있는데 user, share, server, domain이다. 


**option
- read only : 공유 디렉토리를 읽기만 가능하게 할 것인지를 결정
- writable, write ok : 공유 디렉토리를 쓰기 가능하게 할 것인지를 결정
- valid users : 공유 디렉토리에 로그인할 수 있는 사용자를 결정
- public, guest ok : 다른 사용자들이 이용하게 할 지를 결정
- browseable : 공유 디렉토리의 리스트를 보여줄 지를 결정
- printable : 공유 디렉토리에 스풀 파일을 지정할 것인지를 결정
- path : 공유할 디렉토리의 절대경로를 지정
- comment : 간단한 설명을 적음
- create mask, create mode : 파일을 생성할 때의 모드를 결정. umask값형태로 지정.
- write list : 쓰기가 가능한 특정 사용자를 지정

**magic cookies
      %u : 현재 사용중인 유저
      %g : 현재 사용중인 유저 그룹
      %m : 클라이언트의 NetBIOS이름
      %v : 버전
      %h : 호스트이름
      %p : 서버의 홈디렉토리 경로
      %d : 서버의 프로세서ID
      %S : 현재 사용되는 서비스 이름
      %P : 현재 사용되는 서비스의 루트 디렉토리
      %U : 세션의 유저
      %G : 셔션의 유저그룹
      %H : %u로 주어진 유저의 홈디렉토리
      %L : 서버의 NetBIOS이름
      %M : 클라이언트 머신 이름
      %N : NIS 홈디렉토리 서버의 이름
      %I : 클라이언트 머신 IP
      %T : 날짜와 시간

'LINUX(Server)' 카테고리의 다른 글

FTP  (2) 2024.04.26
DHCP  (0) 2024.04.25
NC , Telnet , SSH , VNC  (1) 2024.04.23
Bonding  (0) 2024.04.22
네트워크 기초  (0) 2024.04.21