본문으로 바로가기

SAMBA

category Linux/Linux Network 2017. 9. 15. 17:57
  • 삼바(SAMBA) 서버란
마이크로소프트와 인텔은 윈도우시스템이 다른 시스템의 디스크 또는 프린터등 자원을 공유할 수 있도록 SMB(Server Message Block)이라는 프로토콜을 개발하였는데, 삼바(SAMBA)란 이 SMB를 이용하여 유닉스/리눅스와 윈도우와의 자료 공유 및 하드웨어를 공유할 수 있도록 해준다. 현재 마이크로소프트에서는 SMB라는 이름보다는 좀 더 범위가 큰 CIFS(Common Internet File System)라는 프로토콜로 부른다. 이 프로토콜은 SMB 프로토콜에 Lan Manager, NetBIOS 프로토콜까지 포함한다.

Linux Server <-----     NFS     ----->    Linux / UNIX Client / Server
Linux Server <-----  CIFS/SMB ----->    Windows Client / Server

[참고] SAMBA 공식 사이트 : http://www.samba.org


- 기능

유닉스/리눅스 파티션과 윈도우와의 공유

윈도우 파티션과 유닉스/리눅스와의 공유

유닉스/리눅스의 프린터와 윈도우와의 공유

윈도우의 프린터와 유닉스와의 공유


- 활용

유닉스/리눅스 서버의 디렉토리를 MS 윈도우에서의 하나의 드라이브로 사용

프린터 공유

유닉스/리눅스 서버의 FTP 대치(EX: File Server)     

CD-ROM 데이터 공유

백업(Backup) 시스템으로 사용


  • 삼바 ( SAMBA ) 서버

nmbd(NetBIOS Name Server)- 자원 검색(Resource Browing)- WINS 서버 관리(WINS Server)

smbd(SMB/CIFS Server)- 인증/인가 관리(Authentication and Authorization)- 파일/프린터 공유 관리(File and Printer Sharing)


프로그램: samba, samba-clinet, samba-common, system-config-samba

데몬 & 포트: /usr/sbin/nmbd(137,138), /usr/sbin/smbd(139)

프로토콜 :  UDP( 137, 138 ) TCP ( 137, 139 )

주 설정 파일: /etc/samba/smb.conf

스크립트: /etc/init.d/smb


/* 패키지 확인 */

# rpm -qa | grep samba

# rpm -ql samba-common

# rpm -ql samba

# rpm -ql samba-client


/* 포트 확인 */

# egrep '(netbios|microsoft-ds)' /etc/services 


/* 설정 파일 확인 */

# cd /etc/samba

# ls


/* 데몬 확인 */

# service smb restart

# chkconfig smb on

# pgrep -lf nmbd

# pgrep -lf smbd

# netstat -antp | egrep '(137|138|129|445)'

# netstat -anup | egrep '(137|138|129|445)'



  •  /etc/samba/smb.conf 파일 분석
- # 과 ; 모두 주석을 의미함

[참고] /etc/samba/smb.conf 파일에서 다음과 같은 매직 쿠기를 사용하여 설정을 좀 더 간단하게 할 수 있다.

종 류

설 명

%u

현재 사용중인 사용자

%g

현재 사용중인 그룹

%m

클라이언트의 NetBIOS 이름

%v

삼바 프로그램 버전

%h

호스트 이름

%p

서버의 홈디렉토리 경로

%d

서버의 프로세스 아이디(PID)

%S

현재 사용되는 서비스 이름

%P

현재 사용되는 서비스의 루트 디렉토리

%U

세션의 유저

%G

세션의 유저 그룹

%H

%u로 주어진 유저의 홈디렉토리

%L

서버의 NetBIOS 이름

%M

클라이언트 머신 이름

%N

NIS 홈디렉토리 서버의 이름

%I

클라이언트 머신 아이피(IP)

%T

날짜와 시간


# vi /etc/samba/smb.conf

# This is the main Samba configuration file. You should read the

# smb.conf(5) manual page in order to understand the options listed

# here. Samba has a huge number of configurable options (perhaps too

# many!) most of which are not shown in this example

#

# For a step to step guide on installing, configuring and using samba,

# read the Samba-HOWTO-Collection. This may be obtained from:

# http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf

#

# Many working examples of smb.conf files can be found in the

# Samba-Guide which is generated daily and can be downloaded from:

# http://www.samba.org/samba/docs/Samba-Guide.pdf

#

# Any line which starts with a ; (semi-colon) or a # (hash)

# is a comment and is ignored. In this example we will use a #

# for commentry and a ; for parts of the config file that you

# may wish to enable

#

# NOTE: Whenever you modify this file you should run the command "testparm"

# to check that you have not made any basic syntactic errors.

#

#---------------

# SELINUX NOTES:

#

# If you want to use the useradd/groupadd family of binaries please run:

# setsebool -P samba_domain_controller on

#

# If you want to share home directories via samba please run:

# setsebool -P samba_enable_home_dirs on

 

# If you create a new directory you want to share you should mark it as

# "samba-share_t" so that selinux will let you write into it.

# Make sure not to do that on system directories as they may already have

# been marked with othe SELinux labels.

#

# Use ls -ldZ /path to see which context a directory has

#

# Set labels only on directories you created!

# To set a label use the following: chcon -t samba_share_t /path

#

# If you need to share a system created directory you can use one of the

# following (read-only/read-write):

# setsebool -P samba_export_all_ro on

# or

# setsebool -P samba_export_all_rw on

#

# If you want to run scripts (preexec/root prexec/print command/...) please

# put them into the /var/lib/samba/scripts directory so that smbd will be

# allowed to run them.

# Make sure you COPY them and not MOVE them so that the right SELinux context

# is applied, to check all is ok use restorecon -R -v /var/lib/samba/scripts

#

#--------------

#

#======================= Global Settings =====================================

 

[global]

 

# ----------------------- Network Related Options -------------------------

#

# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH

#

# server string is the equivalent of the NT Description field

#

# netbios name can be used to specify a server name not tied to the hostname

#

# Interfaces lets you configure Samba to use multiple interfaces

# If you have multiple network interfaces then you can list the ones

# you want to listen on (never omit localhost)

#

# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can

# specifiy it as a per share option as well

#

workgroup = MYGROUP

윈도우의 작업그룹처럼 공유그룹을 지정한다. 클라이언트가 서버 요청을 했을 때 나타나는 이름이다. 삼바 서버가 소속할 NetBIOS 워크 그룹을 설정한다. 이 값은 대문자로 구성하는 것이 좋다. 윈도우에서는 대소문자를 가리지 않지만 유닉스에서는 대문자를 구분한다. 그러므로 이런 호환 문제 때문에 대문자를 선택하여 쓰는 것이 좋다.

server string = Samba Server Version %v

윈도우에서 확인할 때 사용하는 삼바서버의 이름을 지정한다.

; netbios name = MYSERVER

윈도우쪽(삼바클라이언트)에서 보일 NETBIOS 이름을 지정한다.

; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

삼바서버 서비스를 네트워크 인터페이스별 제공할 때 사용하다. 지정하지 않는다면 모든 인터페이스에 대해 삼바서비스를 제공한다.

; hosts allow = 127. 192.168.12. 192.168.13. /* 적힌 ip만 사용할 수 있다. */

삼바 서버에 접속을 허용할 호스트를 지정하는데 사용한다. 접속할 허용할 호스트는 IP 주소, 호스트명등을 지정할 수 있으며, 네트워크/넷마스크 형태로도 지정할 수 있다. 또한 EXCEPT 키워드와 와일드 문자(Wild Character)도 사용 가능하다. 참고로 삼바서버에 접속이 불가능하게 하려면 hosts deny로 설정하면된다.

(EX1) hosts allow = 192.168.1. 192.168.2. 127.

192.168.1.0 네트워크 대역에 속한 모든 호스트들과 로컬시스템(127.0.0.1)에서 접속이 가
능하다.

(EX2) hosts allow = 192.168.1. EXCEPT 192.168.1.220 192.168.1.244

192.168.1.220, 192.168.1.244를 제외한 192.168.1.0 네트워크에 속한 모든 호스트들이 삼

바 서버에 접속할 수 있다.

(EX3) hosts allow = 192.168.1.0/255.255.255.0

192.168.1.0 네트워크에 속한 모든 호스트들의 접속을 허용한다.

(EX4) hosts allow = sambaclient windows7

sambaclient,windows7 호스트만 삼바 서버에 접속을 허용한다.

 

# --------------------------- Logging Options -----------------------------

#

# Log File let you specify where to put logs and how to split them up.

#

# Max Log Size let you specify the max size log files should reach

 

# logs split per machine

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

삼바서버에 접속하는 호스트의 접속로그에 대한 기록을 저장하는 로그 파일을 지정한다.

# max 50KB per log file, then rotate

; max log size = 50

로그파일의 최대크기를 KB 단위로 제한두려고 할 때 사용하는 옵션이다. 기본적으로 50KB 설정되어 있다. 이 크기를 초과하면 .old 확장자를 가진 파일로 저장이 되고, 새로운 로그 파일이 생성된다. 이 값을 0으로 두면 제한을 두지 않는다.

 

# ----------------------- Standalone Server Options ------------------------

#

# Security can be set to user, share(deprecated) or server(deprecated)

#

# Backend to store user information in. New installations should

# use either tdbsam or ldapsam. smbpasswd is available for backwards

# compatibility. tdbsam requires no further configuration.

 

security = user

보안관련 옵션으로 클라이언트가 삼바서버에 접속할 때 인증 레벨을 부여하는 옵션이다. 보안모드에는 5가지 모드가 있다. (user, share, server, domain, ADS)

user: 삼바서버에 접속하는 클라이언트는 먼저 반드시 윈도우 시작시 사용자면과 패스워드로

로그인을 한 후에 삼바 서버에 접속할 때 같은 사용자명으로 패스워드를 확인한 후에 접

속이 이루어진다.

share: 유효한 사용자명과 패스워드로 삼바서버에 로그인을 하지 않아도 서버에 접속할 수 있게

하므로 삼바서버 인증과정을 필요로 하지 않을 때 이 레벨로 지정하면 된다. 공유디렉토 리에 대한 호스트 접근 제한 정도로만 제어하는 경우에 사용할 수 있다.

server: 윈도우NT와 같은 삼바서버가 존재해야 한다. 다른 삼바서버에 사용자명과 패스워드를 전

달하여 올바른지를 확인한다.

domain: 윈도우 서버(EX: NT)가 있어야 가능하며, 삼바서버가 사용자명과 패스워드를 윈도우서버

의 도메인 컨트롤러(Domain Control)에 전달하여 유효한지 확인하는 방법이다.

보안관련 옵션을 설정하기 위해서(user,share,server,domain,ADS)"Standalone Server Options", "Domain Members Options" "Domain Controller Options" 부분에 관련된 값들(연동하는 값들)과 같이 있으므로 적당한 부분에 주석을 제거해서 사용한다.

passdb backend = tdbsam

 

 

# ----------------------- Domain Members Options ------------------------

#

# Security must be set to domain or ads

#

# Use the realm option only with security = ads

# Specifies the Active Directory realm the host is part of

#

# Backend to store user information in. New installations should

# use either tdbsam or ldapsam. smbpasswd is available for backwards

# compatibility. tdbsam requires no further configuration.

#

# Use password server option only with security = server or if you can't

# use the DNS to locate Domain Controllers

# The argument list may include:

# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]

# or to auto-locate the domain controller/s

# password server = *

 

 

; security = domain

; passdb backend = tdbsam

; realm = MY_REALM

 

; password server = <NT-Server-Name>

 

# ----------------------- Domain Controller Options ------------------------

#

# Security must be set to user for domain controllers

#

# Backend to store user information in. New installations should

# use either tdbsam or ldapsam. smbpasswd is available for backwards

# compatibility. tdbsam requires no further configuration.

#

# Domain Master specifies Samba to be the Domain Master Browser. This

# allows Samba to collate browse lists between subnets. Don't use this

# if you already have a Windows NT domain controller doing this job

#

# Domain Logons let Samba be a domain logon server for Windows workstations.

#

# Logon Scrpit let yuou specify a script to be run at login time on the client

# You need to provide it in a share called NETLOGON

#

# Logon Path let you specify where user profiles are stored (UNC path)

#

# Various scripts can be used on a domain controller or stand-alone

# machine to add or delete corresponding unix accounts

#

; security = user

; passdb backend = tdbsam

 

; domain master = yes

; domain logons = yes

 

# the login script name depends on the machine name

; logon script = %m.bat

# the login script name depends on the unix user used

; logon script = %u.bat

; logon path = \\%L\Profiles\%u

# disables profiles support by specifing an empty path

; logon path =

 

; add user script = /usr/sbin/useradd "%u" -n -g users

; add group script = /usr/sbin/groupadd "%g"

; add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"

; delete user script = /usr/sbin/userdel "%u"

; delete user from group script = /usr/sbin/userdel "%u" "%g"

; delete group script = /usr/sbin/groupdel "%g"

 

 

# ----------------------- Browser Control Options ----------------------------

#

# set local master to no if you don't want Samba to become a master

# browser on your network. Otherwise the normal election rules apply

#

# OS Level determines the precedence of this server in master browser

# elections. The default value should be reasonable

#

# Preferred Master causes Samba to force a local browser election on startup

# and gives it a slightly higher chance of winning the election

; local master = no

이 옶션은 삼바서버가 nmbd에 의해 서브넷상에서 로컬마스터 브라우저가 될 수 있도록 허용하는 것으로 no 설정하면 nmbd 데몬은 서브넷상에서 로컬마스터 브라우저가 되지 않는다.

; os level = 33''

삼바서버가 브라우저 선거에 있어서 자신을 알릴 수 있는 레벨을 설정하는 것으로 이 값에 의해서 nmbd 데몬이 로컬브로드케스트 지역에서 WORKGROUP에 대해 로컬마스터 브라우저가 될 수 있는지가 결정된다. 이 값을 0으로 설정하면, nmbd 데몬은 윈도우 머신에 대해서 선거권을 상실하므로 로컬마스터 브라우저가 되질 못한다. (관련문서는 BROWSING.txt)

; preferred master = yes

삼바구동시 로컬마스터 선거를 강요하여 선거에서 이길수 있게 보다 많은 가능성을 부여 해주는 옵션이다. 이 옵션은 domain master = yes 옵션과 같이 사용하여 nmbd 데몬에 의해 도메인 마스터가 될수 있도록 해준다.

 

#----------------------------- Name Resolution -------------------------------

# Windows Internet Name Serving Support Section:

# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

#

# - WINS Support: Tells the NMBD component of Samba to enable it's WINS Server

#

# - WINS Server: Tells the NMBD components of Samba to be a WINS Client

#

# - WINS Proxy: Tells Samba to answer name resolution queries on

# behalf of a non WINS capable client, for this to work there must be

# at least one WINS Server on the network. The default is NO.

#

# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names

# via DNS nslookups.

 

; wins support = yes

삼바서버에서 nmbd 데몬이 wins 서버의 역할을 할 수 있는지 여부를 지정한다. 만일 이 옵션을 선택하기 위해서는 반드시 다중 서브넷 네트워크를 가지고 있어야 하며, wins 서버로 될 특정 nmbd 데몬이 있어야 한다.

(참고) WINS(Windows Internet Naming Service)

마이크로소프트 윈도우서버의 일부인 WINS는 각 구성 변경에 수반된느 사용자 또는 관리자가 없는 IP 주소들과 컴퓨터 이름 및 위치들과의 결합을 관리한다. WINS는 컴퓨터 이름과 IP주소를 서로 매칭시켜 데이터를 테이블내에 자동으로 만드는데, 이 이름들은 다른 사람의 컴퓨터 이름과 중복되지 않도록 고유한 이름으로 견지한다. 컴퓨터가 다른 장소로 옮겨지면 IP 주소의 서브넷 부분이 변경될 수 있다. WINS 서버를 사용하면 새로운 서브넷 정보가 WINS 데이블내에서 자동으로 갱신된다. WINS 서버는 어떤 컴퓨터가 네트워크에 처음 정의될 때 IP 주소를 협상하는 윈도우 서버의 DHCP를 보충하여 완전하게 한다. 예를 들면, 같은 네트워크에서 사람이 많아지면 네트워크 부하도 많이 발생한다. 이 경우 WINS 서버를 사용하면 컴퓨터이름과 IP 목록을 관리해 주기 때문에 동보통신에 의한 부담을 줄일수 있다.

; wins server = w.x.y.z

wins 서버가 있을 경우 wins server IP값을 지정하는 옵션이다.

; wins proxy = yes

nmbd에 의해서 winds 기능을 갖추지 못한 호스트들을 대신하여 브로드캐스트 이름 질의를 대신 응답해 줄 수 있도록 지정하는 옵션이다. 이것을 사용하려면 네트워크상에 최소 하나 이상의 wins 서버가 있어야 한다.

 

; dns proxy = yes

nmbd 데몬이 wins 서버 역할을 하고 등록되지 않는 NetBIOS 이름을 찾아줄때 DNS 서버를 사용하여 NetBIOS 이름을 찾아줄 것인지의 여부를 지정하는 옵션이다.

 

# --------------------------- Printing Options -----------------------------

#

# Load Printers let you load automatically the list of printers rather

# than setting them up individually

#

# Cups Options let you pass the cups libs custom options, setting it to raw

# for example will let you use drivers on your Windows clients

#

# Printcap Name let you specify an alternative printcap file

#

# You can choose a non default printing system using the Printing option

 

load printers = yes

삼바서버의 printcap에 정의된 모든 프린터 목록이 자동적으로 로딩되게 할 것인지를 지정하는 옵션이다. 네트워크 프린터를 삼바서버에 연결하여 사용하고자 한다면 선택해야 한다.

cups options = raw

 

; printcap name = /etc/printcap

서버에 의해 사용되는 printcap 이름을 겹쳐쓰기 하고자 할 때(다른 printcap 파일을 사용하고자 할 때) 그 위치를 지정한다.

#obtain list of printers automatically on SystemV

; printcap name = lpstat

; printing = cups

프린터 시스템 종류를 지정하는 옵션으로 비표준 프린터 시스템이 아니면 지정할 필요가 없다.

 

# --------------------------- Filesystem Options ---------------------------

#

# The following options can be uncommented if the filesystem supports

# Extended Attributes and they are enabled (usually by the mount option

# user_xattr). Thess options will let the admin store the DOS attributes

# in an EA and make samba not mess with the permission bits.

#

# Note: these options can also be set just per share, setting them in global

# makes them the default for all shares

 

; map archive = no

; map hidden = no

; map read only = no

; map system = no

; store dos attributes = yes

 

#============================ Share Definitions ==============================

 

[homes]

comment = Home Directories /* 간단한 설명을 기술하는 기능 */

browseable = no /* 공유이름을 브라우져에 표시 할수 있게 하는 기능 */

writable = yes /* 쓰기 허용을 설정하는 기능 */

; valid users = %S /* 공유자원을 사용할수 있는 사용자를 지정하는 기능 */

; valid users = MYDOMAIN\%S

사용자의 홈 디렉토리 서비스 사용을 위한 기본적인 설증을 해 주는 항목이다.

 

[printers]

comment = All Printers /* 설명 */

path = /var/spool/samba /* 스풀디렉토리 위치는 /var/spool/samba */

browseable = no /* 공유이름이 사용할 때 까지 브라우징 되지 않음 */

guest ok = no /* 모든 사용자가 접근할 수 없음(guest ok = public) */

writable = no /* 쓰기 기능 안됨 */

printable = yes /* 프린터 스풀 사용 가능 */

삼바프린터를 네트워크 공유프린터로 사용하고자 할 때 설정하는 부분이다.

 

# Un-comment the following and create the netlogon directory for Domain Logons

; [netlogon]

; comment = Network Logon Service

; path = /var/lib/samba/netlogon

; guest ok = yes

; writable = no

; share modes = no

도메인 로그온을 사용하고자 할 때 사용한다. 일반적으로 사용하지 않는다.

 

# Un-comment the following to provide a specific roving profile share

# the default is to use the user's home directory

; [Profiles]

; path = /var/lib/samba/profiles

; browseable = no

; guest ok = yes

특정한 프로파일을 지정할 때 사용한다. 일반적으로 사용하지 않는다.

 

# A publicly accessible directory, but read only, except for people in

# the "staff" group

; [public] /* 공유 이름 - 클라이언트가 바라보는 이름 */

; comment = Public Stuff

; path = /home/samba /* 내부 공유 디렉토리 경로 */

; public = yes /* 아무나 접근 가능 =no -> ID PASS 인증한 사용자만 가능 */

; writable = yes /* ro / rw */

; printable = no

; write list = +staff /* staff이라는 그룹에 속한 사용자들은 쓰기 가능 */

공개적으로 접근이 가능한 디렉토리이지만 staff 그룹에 속한 사용자들을 제외한 사용자 들은 오직 읽기만 가능하다.

(EX) [mydata] 예제
[mydata]

comment = shared-files in mydata directory /* 설명 */

path = /home/user01/private /* 공유 디렉토리 */

read only = no /* 공유 디렉토리를 읽기만 가능하지 지정 */

writable = yes /* write ok = yes 옵션처럼 쓰기 가능 여부 지정 */

valide user = user01 user02 user03 /* 공유 디렉토리 접근 사용자 목록 지정, 만약 이 옵션

이 생략되면 모든 사용자가 접근할 수 있다. */

public = no /* guest ok 옵션으로 no로 설정하면 다른 사용자들은 이용할 수 없고 개인 사

용자만 이용이 가능 */

browseable = no /* 이용 가능한 공유 목록을 보여줄 것인가를 지어하는 옵션, no 지정하면 목

록을 보여주지 않는다. */

printable = no /* 서비스로 지정된 디렉토리에 스풀 파일을 지정할 것인가를 지정하는 옵션,

프린터 공유 디렉토리가 아니므로 대부분 no로 설정 */

create mask = 0765 /* create mode 같은 옵션으로 파일을 생성할 때 사용되는 모드를 표시 */


[참고] samba 공유 디렉토리 지정 옵션 설명

옵 션

설 명

read only

공유 디렉토리를 읽기만 가능하게 할 것인지를 지정

writable, write ok

공유 디렉토리를 쓰기 가능하게 할 것인지를 지정

valid users

공유 디렉토리를 로그인할 수 있는 사용자로 지정

public, guest ok

공유 디렉토리를 다른 사용자들이 이용하게 할 지를 지정

browseable

공유 디렉토리의 목록(List)를 보여줄 지를 지정

printable

공유 디렉토리에 스풀 파일을 지정할 것인지를 결정

path

공유 디렉토리를 절대경로로 지정

comment

간단한 설명을 지정

create mask, create mode

파일을 생성할 때의 모드를 결정, umask 값 형태로 지정

write list

쓰기가 가능한 특정사용자를 지정



  •  삼바 ( SAMBA ) 관련 명령어
- (Client) smbclient 명령어
- (Server) smbstatus 명령어
- (Server) testparm 명령어
- (Client) mount.cifs/umount.cifs 명령어


1. smbclient  명령어


공유된 자원을 확인 할때 사용한다. 


( 명령어 형식 )

# smbclient -L localhost

# smbclient -L localhost -N 

# smbclient -L system2 -U administrator        /* system2 : 윈도우서버 */

# smbclient -L 192.168.0.250 -U centos


2. smbstatus 명령어


현재 삼바 서버의 연결상태를 보여준다.


( 명령어 형식 )

# smbstatus


3. testparm 명령어


서버 설정 파일의 문법을 점검한다.


( 명령어 형식 )

# testparm

# testparm -v

# testparm -s -v

# testparm /etc/samba/smb.conf


4. mount.cifs / umount.cifs


CIFS 파일 시스템을 마운트할 때 사용하는 명령어이다.


( 명령어 형식 )

# mount -t ext3 /dev/sda3 /home

# mount.ext3 /dev/sda3 /home


# mount -t cifs 172.16.6.X:samba_share /mnt/share -o user=user01

# mount.cifs 172.16.6.X:samba_share /mnt/share -o user=user01



  • 삼바 ( SAMBA ) 실습

1. 윈도우에서 리눅스 공유 자원 접근


[주의] 윈도우에서 방화벽 설정이 내려가 있어야 한다.


# vi /etc/samba/smb.conf

 

 ..... (중략) .....

#======================= Global Settings =====================================


[global]


# ----------------------- Network Related Options -------------------------

#

# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH

#

# server string is the equivalent of the NT Description field

#

# netbios name can be used to specify a server name not tied to the hostname

#

# Interfaces lets you configure Samba to use multiple interfaces

# If you have multiple network interfaces then you can list the ones

# you want to listen on (never omit localhost)

#

# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can

# specifiy it as a per share option as well

#

;--->   workgroup = MYGROUP

        workgroup = WORKGROUP

;--->   server string = Samba Server Version %v

        server string = Samba Server linux


;       netbios name = MYSERVER


;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

;--->   hosts allow = 127. 192.168.12. 192.168.13.

        hosts allow = 127. 192.168.17.

..... (중략) .....

# ----------------------- Standalone Server Options ------------------------

#

# Security can be set to user, share(deprecated) or server(deprecated)

#

# Backend to store user information in. New installations should

# use either tdbsam or ldapsam. smbpasswd is available for backwards

# compatibility. tdbsam requires no further configuration.


;--->   security = user

        security = share

        passdb backend = tdbsam


..... (중략) .....

#============================ Share Definitions ==============================

..... (중략) .....

# A publicly accessible directory, but read only, except for people in

# the "staff" group

;       [public]

;       comment = Public Stuff

;       path = /home/samba

;       public = yes

;       writable = yes

;       printable = no

;       write list = +staff


#

# Specific Configuration

#

[public]                        /* 자원 공유 이름 */

        comment = Samba Test    /* 설명 */

        path = /samba           /* 공유 위치 */

        public = yes            /* guest ok, 모든 사용자가 접근할 수 있음 */

        writable = yes          /* 읽고/쓰기 가능 */

        printable = no          /* 프린터 스풀 디렉토리 지정할것인지를 지정 */

:set nu 

:286,292 co 296 

 


/* 공유 폴더 생성*/

# mkdir /samba


/* 퍼미션 변경 */

# chmod 777 /samba


/* 폴더에 확인용 파일 생성 */

# cp /etc/passwd /samba


/* 실행 */

# service smb restart

# chkconfig smb on


/* 문법 점검 */

# testparm

 

......중략..... 

[public]

        comment = Samba Test

        path = /samba

        read only = No

        guest ok = Yes


 


/* 공유 사항 확인 */

# smbclient -L localhost -U root

 

 Password: 

Anonymous login successful

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]


        Sharename       Type      Comment

        ---------       ----      -------

        public          Disk      Samba Test

        IPC$            IPC       IPC Service (Samba Server linux)

Anonymous login successful

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]


        Server               Comment

        ---------            -------

        LINUX                Samba Server linux


        Workgroup            Master

        ---------            -------

        WORKGROUP            


 


[참고] workgroup 

내 컴퓨터 오른쪽 클릭 -> 속성 ->  workgroup 

확인해주세요


[참고] 윈도우 방화벽 해제 

오른쪽 하단의 네트워크 아이콘 오른쪽 클릭 -> 네트워크 및 공유 센터 열기 

-> 왼쪽 하단에  windows 방화벽 클릭 -> 왼쪽에 windows 방화벽 설정 또는 해제 

-> 개인 네트워크 공용네트워크 모두 방화벽 사용안함으로 설정


[주의] 윈도우 계정에 비밀번호가 지정되어있어야합니다. 


-확인 

Window 환경에서 

<win> + r  누르시면 실행창이 뜹니다.

\\192.168.17.220\public

윈도우 계정 ID PASS 입력하시면 

리눅스에서 공유한 폴더로 이동합니다. 


2. 리눅스에서 윈도우 공유 자원 접근


- Win

 공유 폴더를 만듭니다. 

-> 폴더 이름 C:\samba_share

-> 폴더 오른쪽 클릭 -> 공유 -> 공유 -> Everyone 추가 ( 읽기 쓰기 )


-Linux


/* 공유된 자원 확인 */

# smbclient -L WINIP:samba_share -U WINID%WINPASS

->윈도우 IP = 192.168.10.10  윈도우 계정 admin / passwd1

# smbclient -L 192.168.10.10:samba_share -U admin%passwd1


# mkdir -p /mnt/server    /* 마운트 포인터 생성 */

# mount -t cifs 192.168.10.10:samba_share /mnt/server -o user=admin

-> 패스워드를 입력해야하는대 그 패스워드는 윈도우 계정의 admin 의 패스워드를 입력한다.


# df -h    /* 마운트 확인 */


# cd /mnt/server     /* 윈도우에서 공유된 파일 확인 */


[참고] 추가적인 형식 

# mount -t cifs 192.168.10.10:samba_share /mnt/server -o user=administrator

# mount -t cifs 192.168.10.10:samba_share /mnt/server -o username=administrator

# mount.cifs 192.168.10.10:samba_share /mnt/server -o user=administrator

# mount.cifs //192.168.10.10/samba_share /mnt/server -o user=administrator



  • NFS - CIFS/SMB
- 디렉토리 공유 절차

 

NFS Server

CIFS/SMB(SAMBA) Server

공유 자원 생성

# mkdir -p /share

# mkdir -p /share

공유 설정

# vi /etc/exports

/share *(rw)

 

 

 

# service nfs restart

# chkconfig nfs on

# vi /etc/samba/smb.conf

security = share

[public]

path = /share

writable = yes

# service smb restart

# chkconfig smb on

공유 확인

# showmount -e 172.16.6.2XX

# smbclient -L 172.16.6.2XX -N


- 공유 디렉토리 마운트 절차

 

NFS Client

CIFS/SMB(SAMBA) Client

공유 자원 확인

# showmount -e 172.16.6.2XX

# smbclient -L 172.16.6.2XX -N

마운트 작업

# mkdir /p

# mount -t nfs -o timeo=10,intr \

172.16.6.2XX:/share /p

# vi /etc/fstab

# mkdir /p

# mount -t cifs -o user=soldesk \

\\172.16.6.2XX\public /p

# vi /etc/fstab

마운트 확인

# df -h

# df -h






'Linux > Linux Network' 카테고리의 다른 글

HAproxy & Keepalived  (0) 2018.05.25
NFS  (0) 2017.09.14
Web Mail Server  (0) 2017.09.13
MAIL Server  (0) 2017.09.13
FTP  (0) 2017.09.13