서버/Linux III 2016. 4. 8. 12:24

Linux III - 13. Samba 서버

 

 

 

login as: root
root@192.168.1.100's password:
Last login: Tue Apr 19 09:39:28 2016 from 192.168.1.1
[root@main /root]#

 

 

login as: root
root@192.168.1.101's password:
Last login: Tue Apr 19 09:47:50 2016 from 192.168.1.1
[root@clone1 /root]#

 

 

 

 

1. Samba

 

Samba란 리눅스 공유 서비스를 윈도우에서도 사용하기 위한 서비스를 의미한다. MS와 Intel에서 윈도우시스템이 다른 시스템의 디스크나 프린터 자원을 공유할 수 있도록 SMB(Server Message Block) 프로토콜을 개발하였는데, Samba가 SMB를 이용하여 윈도우와 다른 시스템간의 프린터 및 자료를 공유할 수 있도록 해준다.


samba 서비스는 2개의 데몬으로 구성된다.


 - smbd : 파일 및 프린터 공유, 사용자 확인 및 권한부여 (포트 번호 : 137, 138)
 - nmbd : 클라이언트를 위해 NetBios Nameserver를 지원하고 서비스를 알린다. (포트 번호 : 139)


nbmd는 Samba 서버가 윈도우의 네트워크 이웃으로 탐색되게 하고 사용자가 사용할 수 있는 자원의 목록을 확인할수 있도록 해준다. nmbd 없이 Samba 서버를 운영할 수는 있지만, 이런 경우 서버와 사용자 자원의 Netbios Name을 알아아 한다.

 

 

 

 

2. Samba 패키지 설치 및 서비스 활성화

 

 - Samba 패키지가 설치되었는지 확인한다.


[root@main /root]# rpm -qa | grep samba
samba-winbind-3.6.23-12.el6.x86_64
samba-common-3.6.23-12.el6.x86_64    <- Samba 설정 파일, 유틸리티, 메뉴얼
samba4-libs-4.0.0-64.el6.rc4.x86_64    <- Samba 라이브러리
samba-winbind-clients-3.6.23-12.el6.x86_64
samba-3.6.23-12.el6.x86_64    <- Samba 서버
samba-client-3.6.23-12.el6.x86_64    <- Samba 클라이언트

 

 

 

 - 만약, 설치가 안되어있거나, 업데이트가 필요하면 다음과 같이 설치한다.

 

[root@main /root]# yum -y install samba

 

~ 중간 생략 ~


Updated:
  samba.x86_64 0:3.6.23-25.el6_7

Dependency Updated:
  libsmbclient.x86_64 0:3.6.23-25.el6_7
  samba-client.x86_64 0:3.6.23-25.el6_7
  samba-common.x86_64 0:3.6.23-25.el6_7
  samba-winbind.x86_64 0:3.6.23-25.el6_7
  samba-winbind-clients.x86_64 0:3.6.23-25.el6_7

 

 

[root@main /root]# rpm -qa | grep samba
samba-winbind-clients-3.6.23-25.el6_7.x86_64
samba-3.6.23-25.el6_7.x86_64
samba4-libs-4.0.0-64.el6.rc4.x86_64
samba-winbind-3.6.23-25.el6_7.x86_64
samba-client-3.6.23-25.el6_7.x86_64
samba-common-3.6.23-25.el6_7.x86_64

 

 

 

 - smb, nmb 서비스를 시작한다.

 

[root@main /root]# service smb status
smbd가 정지되었습니다

 

[root@main /root]# service smb start
SMB서비스를 시작하고 있습니다:                             [  OK  ]

 

[root@main /root]# service nmb status
nmbd가 정지되었습니다


[root@main /root]# service nmb start
NMB서비스를 시작하고 있습니다:                             [  OK  ]

 

 

 

 - 재부팅시에도 smb, nmb 서비스가 활성화 되도록 구성한다.


[root@main /root]# chkconfig --list smb
smb             0:해제  1:해제  2:해제  3:해제  4:해제  5:해제  6:해제


[root@main /root]# chkconfig smb on
[root@main /root]# chkconfig --list smb
smb             0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

 

 

[root@main /root]# chkconfig --list nmb
nmb             0:해제  1:해제  2:해제  3:해제  4:해제  5:해제  6:해제

 

[root@main /root]# chkconfig nmb on

[root@main /root]# chkconfig --list nmb
nmb             0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

 

 

 

 - smb, nmb 관련 포트 번호를 확인한다.

 

[root@main /root]# egrep '(netbios|microsoft-ds)' /etc/services
netbios-ns      137/tcp                         # NETBIOS Name Service
netbios-ns      137/udp
netbios-dgm   138/tcp                         # NETBIOS Datagram Service
netbios-dgm   138/udp
netbios-ssn     139/tcp                         # NETBIOS session service
netbios-ssn     139/udp
microsoft-ds    445/tcp
microsoft-ds    445/udp

 

 

 

 

3. Samba 설정 파일

 

 - 'smb.conf' 설정 파일에는 Global Setting을 이용하여 Samba 서버 전체 설정을 실시하며, Share Definitions를 이용하여 각각의

   공유에 대한 개별적인 설정을 실시한다.

 

[root@main /root]# ls /etc/samba/
lmhosts  smb.conf  smbusers

 

 

[root@main /root]# vi /etc/samba/smb.conf

 

~ 중간 생략 ~

 

 55 #======================= Global Settings ================================
 56
 57 [global]
 58
 59 # ----------------------- Network Related Options -------------------------
 60 #
 61 # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
 62 #
 63 # server string is the equivalent of the NT Description field
 64 #
 65 # netbios name can be used to specify a server name not tied to the hostname
 66 #
 67 # Interfaces lets you configure Samba to use multiple interfaces
 68 # If you have multiple network interfaces then you can list the ones
 69 # you want to listen on (never omit localhost)
 70 #
 71 # Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
 72 # specifiy it as a per share option as well
 73 #
 74     workgroup = MYGROUP

         윈도우 작업그룹처럼 공유그룹을 지정한다. 클라이언트가 서버에게 요청시 출력하는 이름이다.


 75     server string = Samba Server Version %v

         윈도우에서 확인할때 사용하는 Samba 서버 이름을 지정한다.
 76
 77 ;   netbios name = MYSERVER

         Samba 클라이언트가 윈도우쪽에서 출력될 Netbios 이름을 지정한다.
 78    
 79 ;   interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

         Samba 서버 서비스를 네트워크 인터페이스별로 제공할때 설정한다. 만약, 설정이 없다면 모든 인터페이

         스에 Samba 서비스를 제공한다.


 80 ;   hosts allow = 127. 192.168.12. 192.168.13.

         Samba 서버에 접속을 허용할 호스트를 지정한다. 만약 접속을 차단하려면 'hosts deny'로 설정한다.


 81
 82 # --------------------------- Logging Options -----------------------------
 83 #
 84 # Log File let you specify where to put logs and how to split them up.
 85 #
 86 # Max Log Size let you specify the max size log files should reach
 87
 88     # logs split per machine
 89     log file = /var/log/samba/log.%m

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


 90     # max 50KB per log file, then rotate
 91     max log size = 50

         로그파일 최대크기를 제한할때 사용한다. 기본값으로 50KB로 설정되어 있으며, 이 크기를 초과하면

         .old 확장자로 저장되고, 새로운 로그 파일이 생성된다. 만약, 0KB로 설정하면 크기 제한이 없어진다.


 92
 93 # ----------------------- Standalone Server Options ------------------------
 94 #
 95 # Scurity can be set to user, share(deprecated) or server(deprecated)
 96 #
 97 # Backend to store user information in. New installations should
 98 # use either tdbsam or ldapsam. smbpasswd is available for backwards
 99 # compatibility. tdbsam requires no further configuration.
100
101     security = user

          보안 관련 옵션이며, 클라이언트가 Samba 서버에 접속할때 인증 레벨을 할당할 수 있다.

          'Domain Members Options', 'Domain Controller Options' 부분에서 관련된 설정을 실시하면 된다. 

 

 user

 Samba 서버에 접속하는 클라이언트는 윈도우 시작시 사용자명과 패스워드로 로그

 인을 한 이후,  Samba 서버에 접속할때도 같은 사용자명과 패스워드를 이용하여 접

 속한다.

 share

 유효한 사용자명과 패스워드로  Samba 서버에 접속하지 않아도 서버에 접속이 가

 능하다.  Samba 서버 접속 인증이 필요 없을때 사용한다. 

 server

 윈도우 NT와 같은  Samba 서버가 존재해야 한다. 다른  Samba 서버에 사용자명과

 패스워드를 전달하여 올바른지 확인한다.

 domain

 윈도우 NT 서버가 있어야 가능하며,  Samba 서버가 사용자명과 패스워드를 윈도우

 서버의 도메인 컨트롤러에 전달하여 유효한지 확인한다.


102     passdb backend = tdbsam
103
104

~ 중간 생략 ~

 

174 # ----------------------- Browser Control Options ----------------------------
175 #
176 # set local master to no if you don't want Samba to become a master
177 # browser on your network. Otherwise the normal election rules apply
178 #
179 # OS Level determines the precedence of this server in master browser
180 # elections. The default value should be reasonable
181 #
182 # Preferred Master causes Samba to force a local browser election on startup
183 # and gives it a slightly higher chance of winning the election
184 ;   local master = no

         Samba 서버가 nmbd 데몬에 의해 로컬 마스터 브라우저가 될 수 있도록 허용하는 설정이다.

         'no'로 설정되어 있으면 로컬 마스터 브라우저가 될 수 없다.


185 ;   os level = 33

         Samba 서버가 로컬 마스터 브라우저로 동작하기 위한 레벨값이며, '0'이면 로컬 브라우저가 될수 없다.


186 ;   preferred master = yes

         Samba 서버가 로컬 마스터 브라우저로 동작할 수 있는 가능성을 높혀주는 설정이다.


187
188 #----------------------------- Name Resolution -------------------------------
189 # Windows Internet Name Serving Support Section:
190 # Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
191 #
192 # - WINS Support: Tells the NMBD component of Samba to enable it's WINS Server
193 #
194 # - WINS Server: Tells the NMBD components of Samba to be a WINS Client
195 #
196 # - WINS Proxy: Tells Samba to answer name resolution queries on
197 #   behalf of a non WINS capable client, for this to work there must be
198 #   at least one    WINS Server on the network. The default is NO.
199 #
200 # DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
201 # via DNS nslookups.
202
203 ;   wins support = yes

         Samba 서버에서 nmbd 데몬이 wins 서버의 역할을 할 수 있도록 하는 설정이다.


204 ;   wins server = w.x.y.z

         wins 서버 IP 주소를 지정하는 설정이다.


205 ;   wins proxy = yes

         nmbd 데몬에 의해서 wins 기능이 없는 호스트를 대신하여 브로드케스트 질의에 대한 응답을 대신 처리

         하는 설정이다. 이때, 네트워크 환경에는 최소 wins 서버가 있어야 한다.


206
207 ;   dns proxy = yes

         nmbd 데몬이 wins 서버 역할을 하며, 등록되지 않는 Netbios 이름을 찾아줄때 DNS 서버를 이용할 수

         있도록 하는 설정이다. 


208
209 # --------------------------- Printing Options -----------------------------
210 #
211 # Load Printers let you load automatically the list of printers rather
212 # than setting them up individually
213 #
214 # Cups Options let you pass the cups libs custom options, setting it to raw
215 # for example will let you use drivers on your Windows clients
216 #
217 # Printcap Name let you specify an alternative printcap file
218 #
219 # You can choose a non default printing system using the Printing option
220
221     load printers = yes

          Samba 서버에 printcap에 정의된 모든 프린터 목록이을 자동으로 로딩하는 설정이다.

          네트워크 프린터를  Samba 서버에 연결하여 사용하려면 'yes'로 해야 한다.


222     cups options = raw
223
224 ;   printcap name = /etc/printcap

          Samba 서버에 의해서 사용되는 printcap 이름을 겹처쓰기 할 디렉토리를 지정한다.


225     #obtain list of printers automatically on SystemV
226 ;   printcap name = lpstat
227 ;   printing = cups

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


228
~ 중간 생략 ~

 

246 #======================= Share Definitions ============================
247
248 [homes]
249     comment = Home Directories   <- 주석 및 설명 설정
250     browseable = no   <- 공유이름을 브라우저에 표기 할 수 있게 하는 설정
251     writable = yes    <- 쓰기 허용 설정
252 ;   valid users = %S   <- 공유자원을 사용할 수 있는 사용자 지정 설정
253 ;   valid users = MYDOMAIN\%S    <- 사용자 홈 디렉토리 서비스 사용을 위한 기본적인 설정
254
255 [printers]
256     comment = All Printers   <- 주석 및 설명 설정
257     path = /var/spool/samba   <- 스풀 디렉토리 위치 설정
258     browseable = no    <- 공유 이름을 사용할때까지 브라우징이 안되게하는 설정
259     guest ok = no    <- 모든 사용자가 접근할 수 도록 하는 설정, 접근하려면 'public'으로 변경
260     writable = no    <- 쓰기 허용이 안되도록 하는 설정
261     printable = yes    <- 프린터 스풀 사용 가능 설정
262
263 # Un-comment the following and create the netlogon directory for Domain Logons
264 ;   [netlogon]
265 ;   comment = Network Logon Service
266 ;   path = /var/lib/samba/netlogon
267 ;   guest ok = yes
268 ;   writable = no
269 ;   share modes = no

         도메인 로그온을 사용할 때 사용하는 설정이며, 일반적으로 사용하지 않는다.


270    
271
272 # Un-comment the following to provide a specific roving profile share
273 # the default is to use the user's home directory
274 ;   [Profiles]
275 ;   path = /var/lib/samba/profiles
276 ;   browseable = no
277 ;   guest ok = yes

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


278
279
280 # A publicly accessible directory, but read only, except for people in
281 # the "staff" group
282 ;   [public]
283 ;   comment = Public Stuff   <- 주석 및 설명 설정
284 ;   path = /home/samba    <- 공유 디렉토리 지정 설정
285 ;   public = yes    <- 공유 디렉토리를 다른 사용자들도 사용할 수 있게 하는 설정
286 ;   writable = yes    <- 공유 디렉토리 쓰기 가능하도록 하는 설정
287 ;   printable = no    <- 공유 디렉토리에 스풀 파일을 지정하는 설정
288 ;   write list = +staff    <- 공개적으로 접근이 가능한 디렉토리이지만, staff 그룹에 속한 사용자들을

                                       제외한 사용자들은 오직 읽기만 가능하도록 하는 설정

 

 

289
290     [samba test]   <- 설정 예제
291     comment = samba test configuration   <- 주석 및 설명 설정
292     path = /test/samba    <- 공유 디렉토리 지정 설정
293     read only = no    <- 공유 디렉토리 읽기/쓰기 가능
294     writeable = yes    <- 공유 디렉토리 쓰기 가능
295     valid users = user1 user2 user3    <- 공유 디렉토리 로그인 사용자
296     public = no    <- 다른 사용자들은 공유 디렉토리 사용 불가능
297     browseable = no    <- 이용 가능한 공유 디렉토리 안보여줌
298     printable = no    <- 서비스로 지정된 디렉토리에 스풀 파일을 지정않함
299     create mask = 0765    <- 파일을 생성할때 사용하는 모드 표기, umask 형식으로 지정함

 

: q!





4. Samba 서비스 구성


Ex1) Win2003에서 main 공유 자원 접근


 - 파일 서버 : Main Eth 0 (172.20.1.1)

 - 클라이언트 : Win2003 NIC (172.20.1.250)

 

 

 - 'smb.conf' 설정 파일에서 다음과 같은 설정을 추가 및 변경한다.

 

[root@main /root]# vi /etc/samba/smb.conf


 

 ~ 중간 생략 ~

 55 #======================= Global Settings =============================
 56
 57 [global]
 58
 59 # ----------------------- Network Related Options ------------------------
 60 #
 61 # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
 62 #
 63 # server string is the equivalent of the NT Description field
 64 #
 65 # netbios name can be used to specify a server name not tied to the hostname
 66 #
 67 # Interfaces lets you configure Samba to use multiple interfaces
 68 # If you have multiple network interfaces then you can list the ones
 69 # you want to listen on (never omit localhost)
 70 #
 71 # Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
 72 # specifiy it as a per share option as well
 73 #
 74     workgroup = WORKGROUP
 75     server string = Main Samba Server %v
 76
 77 ;   netbios name = MYSERVER
 78
 79 ;   interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
 80 ;   hosts allow = 127. 192.168.12. 192.168.13.
 81     hosts allow = 127. 172.20.
 82


 ~ 중간 생략 ~

 94 # ----------------------- Standalone Server Options ------------------------
 95 #
 96 # Scurity can be set to user, share(deprecated) or server(deprecated)
 97 #
 98 # Backend to store user information in. New installations should
 99 # use either tdbsam or ldapsam. smbpasswd is available for backwards
100 # compatibility. tdbsam requires no further configuration.
101
102     security = user
103     passdb backend = tdbsam
104

 ~ 중간 생략 ~
247 #============================ Share Definitions =========================
248

 

 ~ 중간 생략 ~

292 # Main Samba Server Configuration
293 [public]
294     comment = Samba Test
295     Path = /samba
296     public = yes
297     writable = yes
298     printable = no

 

: wq!

 

 

 

  - 공유 디렉토리 '/samba'를 생성하고, 퍼미션을 조정한다. 또한, 파일 한개를 생성거나 복사한다.


[root@main /root]# mkdir /samba

[root@main /root]# ls -dl /samba
drwxr-xr-x 2 root root 4096 2016-04-18 15:48 /samba

 

 

[root@main /root]# chmod 777 /samba
[root@main /root]# ls -dl /samba
drwxrwxrwx 2 root root 4096 2016-04-18 15:48 /samba

 


[root@main /root]# cp /etc/passwd /samba
[root@main /root]# ls /samba
passwd

 


 

 - smb, nmb 서비스를 재시작한다.

 

[root@main /root]# service smb restart
SMB 서비스를 종료함:                                       [  OK  ]
SMB서비스를 시작하고 있습니다:                             [  OK  ]

 

 

[root@main /root]# service nmb restart
NMB 서비스를 종료함:                                       [  OK  ]
NMB서비스를 시작하고 있습니다:                             [  OK  ]

 

 

 

 - 'testparm' 명령어를 이용하여 'smb.conf' 설정 파일 내용을 점검한다.

 

[root@main /root]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
WARNING: The security=share option is deprecated
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

(엔터)

 

[global]
        server string = Main Samba Server %v
        log file = /var/log/samba/log.%m
        max log size = 50
        idmap config * : backend = tdb
        hosts allow = 127., 172.20.
        cups options = raw

 

[homes]
        comment = Home Directories
        read only = No
        browseable = No

 

[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        print ok = Yes
        browseable = No

 

[public]
        comment = Samba Test
        path = /samba
        read only = No
        guest ok = Yes

 

 

 

 - Samba 계정을 생성한다. 이때, 계정은 '/etc/passwd'에 등록된 계정으로 생성해야 한다.


[root@main /root]# pdbedit -a user1
new password: centos
retype new password: centos
Unix username:        user1
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-2890182867-1041611665-2054084988-1000
Primary Group SID:    S-1-5-21-2890182867-1041611665-2054084988-513
Full Name:
Home Directory:       \\main\user1
HomeDir Drive:
Logon Script:
Profile Path:         \\main\user1\profile
Domain:               MAIN
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          목, 07  2월 2036 00:06:39 KST
Kickoff time:         목, 07  2월 2036 00:06:39 KST
Password last set:    월, 18  4월 2016 15:15:54 KST
Password can change:  월, 18  4월 2016 15:15:54 KST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


[root@main /root]# pdbedit -L
user1:500:

 

 

 

 - Samba 계정 삭제는 다음과 같다.

 

[root@main /root]# pdbedit -x user1
[root@main /root]# pdbedit -L

 

 

 

 - 'smbpasswd' 명령어를 이용한 Samba 계정 생성, 활성화/비활성화, 삭제는 다음과 같다.


[root@main /root]# smbpasswd -a user1      <- 'user1' 계정 생성
New SMB password: centos
Retype new SMB password: centos
Added user user1.

 

 

[root@main /root]# pdbedit -L
user1:500:

 

 

[root@main /root]# smbpasswd -d user1     <- 'user1' 계정 비활성화
Disabled user user1.

 

 

[root@main /root]# smbpasswd -e user1     <- 'user1' 계정 활성화
Enabled user user1.

 

 

[root@main /root]# smbpasswd -x user1     <- 'user1' 계정 삭제

Deleted user user1.

 

 

[root@main /root]# smbpasswd -a user1    <- 'user1' 계정 생성
New SMB password: centos
Retype new SMB password: centos
Added user user1.

 

 

 

[root@main /root]# pdbedit -L
user1:500:

 

 

 

 - 'smbclient' 명령어를 이용하여 공유 유무를 확인하도록 한다.

 

[root@main /root]# smbclient -L localhost -U user1
Enter user1's password: centos
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]

 

        Sharename       Type      Comment
        ---------           ----        -------
        public             Disk        Samba Test
        IPC$               IPC         IPC Service (Main Samba Server 3.6.23-25.el6_7)
        user1              Disk       Home Directories
        KONICA_MINOLTA_423SeriesPCL:2 Printer   Fax
        Fax:5           Printer   Fax
        HP_Officejet_Pro_8100:3 Printer   HP Officejet Pro 8100
        Hancom_PDF:4    Printer   Hancom PDF
        Microsoft_XPS_Document_Writer:1 Printer   Microsoft XPS Document Writer
        SINDOH_N501_PCL:6 Printer   SINDOH N501 PCL
        Fax:2           Printer   Fax
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]

 

        Server                     Comment
        ---------                   -------
        MAIN                     Main Samba Server 3.6.23-25.el6_7

 

        Workgroup              Master
        ---------                   -------
        WORKGROUP            MAIN

 

 

 

Win2003Network Adapter Host -Only로 변경하여 실행한다. 부팅이 완료되었다면, IP 주소를 '172.20.1.250/24', 게이트웨이는 '172.20.0.1'로 설정한다.

 

Win2003에서 ping 172.20.1.1Ping 테스트를 실시하고, 다음과 같은 방법을 이용하여 Samba 서버 접속을 실시한다.

 


[참고] Windows10인 경우, [global]에 protocol = SMB2 추가 실시 



 

window 키 + R -> 실행 - \\192.168.1.100 엔터 -> 'user1' 로그인 실시

 

 

 

 

'public' 디렉토리 접근 실시

 

 

 

 

 

'public' 디렉토리 확인 -> 'passwd' 파일 Win2003 바탕화면으로 복사 테스트 실시

 

 

 

 

 

 

Win2003에서 'test' 폴더 생성 -> 'test.txt' 파일 바탕화면에 생성 -> 'test' 폴더로 복사 실시

 

 

 

[root@main /root]# ls /samba
passwd  test


[root@main /root]# ls /samba/test
test.txt

 

 

 

 - main에서 Samba 연결 상태를 확인한다.

 

[root@main /root]# smbstatus

Samba version 3.6.23-25.el6_7
PID     Username      Group         Machine
-------------------------------------------------------------------
8948      user1       user1      k09xpm4pdtawhx3 (172.20.1.250)

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         8948   _________-pc  Mon Apr 18 16:29:56 2016
public       8948   _________-pc  Mon Apr 18 16:29:57 2016
user1        8948   _________-pc  Mon Apr 18 16:29:56 2016

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
8948         500        DENY_NONE  0x100081    RDONLY     NONE             /samba   .   Mon Apr 18 16:29:57 2016

 

 

 

 - Win2003에서 공유 연결 상태를 확인한다.

 

C:\Users\김정우>net use               (삭제 : net use * /del)
새 연결 정보가 저장됩니다.


상태         로컬      원격                      네트워크

------------------------------------------------------------------------------
OK                     \\172.20.1.1\IPC$      Microsoft Windows Network
명령을 잘 실행했습니다.

 

 

 

 - 확인이 완료되었다면, Win2003에서 'public' 디렉토리 공유창을 닫는다.

 

 

 


 

Ex2) main에서 Win2003 공유 자원 접근


 - 파일 서버 : Win2003 NIC (172.20.1.250)

 - 클라이언트 : Main Eth 0 (172.20.1.1)

 

 

 

- Win2003에서 'user1' 계정(패스워드 : centos)를 생성한다.

  (내 컴퓨터 우클릭 -> 관리 -> 로컬 사용자 및 그룹 -> 사용자 우클릭 -> 새 사용자)

 

 

 - 그리고 C 드라이브에서 'samba' 폴더 생성 및 'test.txt' 파일을 생성하고, 'user1' 계정에 대해서 공유를 실시한다.

 

 

 - main에서 마운트를 실시할 '/mnt/samba' 디렉토리를 생성한다.

 


[root@main /root]# mkdir /mnt/samba

 

 

 

 - main에서 'user1' 계정을 이용하여 Win2003 'samba' 폴더를 마운트한다.


[root@main /root]# mount.cifs //192.168.1.1/samba /mnt/samba -o user=user1
Password: centos
[root@main /root]#

 

 

 

 - 마운트 결과를 확인한다.

 
[root@main /root]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda1            4.7G  710M  3.8G  16% /
tmpfs                495M   72K  495M   1% /dev/shm
/dev/sdc1            991M  1.3M  939M   1% /data
/dev/sdb1            991M  1.4M  939M   1% /home
/dev/sda3             13G  4.0G  8.2G  33% /usr
//192.168.1.1/samba  233G   79G  154G  34% /mnt/samba

 

 

 

 - main '/mnt/samba' 디렉토리에 Win7 'samba' 폴더 'test.txt' 파일이 있는지 확인한다.


[root@main /root]# ls /mnt/samba
test.txt

 

 

 

 - main에서 'test1.txt', 'test2.txt' 파일을 생성한다. 

 

[root@main /root]# cp /etc/passwd /mnt/samba/test1.txt
[root@main /root]# cp /etc/hosts /mnt/samba/test2.txt

 

[root@main /root]# ls /mnt/samba
test.txt  test1.txt  test2.txt

 

 

 

 - Win2003 'samba' 폴더에 'test1.txt', 'test2.txt' 파일이 있는지 확인한다.

 

 

 

 

 

- 마운트를 해지한다.


[root@main /root]# umount /mnt/samba

 

[root@main /root]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       4.7G  740M  3.8G  17% /
tmpfs           495M  224K  495M   1% /dev/shm
/dev/sda3        13G  4.0G  8.2G  33% /usr
/dev/sdc1       991M  1.3M  939M   1% /data
/dev/sdb1       991M  1.4M  939M   1% /home

 

 

 

 - 재부팅시에도 마운트가 되려면, '/etc/fstab' 설정 파일에 다음과 같은 설정을 추가한다.

 

[root@main /root]# vi /etc/fstab

 

  1
  2 #
  3 # /etc/fstab
  4 # Created by anaconda on Fri Mar 11 02:21:44 2016
  5 #
  6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
  7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  8 #
  9 UUID=e146832a-c8b2-45bf-a756-a6ecd816d862 /                       ext4    defaults        1 1
 10 UUID=446c4b92-ad04-44c1-8350-8f8d691957fe /data                   ext4    defaults        1 2
 11 UUID=4ae04932-c880-4252-bd45-fd9f8522d8ae /home                   ext4    defaults      1 2
 12 UUID=fe33331d-31cb-48ac-b483-6c31e90cb0d5 /usr                    ext4    defaults        1 2
 13 UUID=06172d8e-75ff-4855-924a-3f6fde386d2f swap                    swap    defaults       0 0
 14 tmpfs                   /dev/shm                tmpfs   defaults        0 0
 15 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
 16 sysfs                   /sys                      sysfs   defaults        0 0
 17 proc                    /proc                   proc    defaults        0 0
 18 //172.20.1.250/samba     /mnt/samba        cifs    credentials=/etc/samba/cred  0 0

 

: wq! 

 

 

 

 - 'user1' 계정 정보 파일을 생성한다.


[root@main /root]# vi /etc/samba/cred

 

  1 username=user1
  2 password=centos
 

: wq!

 

 

 

 - 'user1' 계정 정보는 root만 확인할 수 있도록 퍼미션을 변경한다.

 

[root@main /root]# chmod 600 /etc/samba/cred

 

 

 

 - 'mount -a'를 실시하여, Win2003 'samba' 폴더가 main 'mnt/samba'에 마운트 되는지 확인한다.

 

[root@main /root]# mount -a

 

[root@main /root]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda1            4.7G  740M  3.8G  17% /
tmpfs                495M  224K  495M   1% /dev/shm
/dev/sdc1            991M  1.3M  939M   1% /data
/dev/sdb1            991M  1.4M  939M   1% /home
/dev/sda3             13G  4.0G  8.2G  33% /usr
//172.20.1.250/samba  233G   79G  154G  34% /mnt/samba

 

 

 

 - main '/mnt/samba' 디렉토리를 확인한다.


[root@main /root]# ls /mnt/samba
test.txt  test1.txt  test2.txt

 

 

 

 '/etc/fstab' 설정 파일에 추가한 내용을 삭제하도록 한다.

 

[root@main /root]# vi /etc/fstab

 

  1
  2 #
  3 # /etc/fstab
  4 # Created by anaconda on Fri Mar 11 02:21:44 2016
  5 #
  6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
  7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  8 #
  9 UUID=e146832a-c8b2-45bf-a756-a6ecd816d862 /                       ext4    defaults        1 1
 10 UUID=446c4b92-ad04-44c1-8350-8f8d691957fe /data                   ext4    defaults        1 2
 11 UUID=4ae04932-c880-4252-bd45-fd9f8522d8ae /home                   ext4    defaults      1 2
 12 UUID=fe33331d-31cb-48ac-b483-6c31e90cb0d5 /usr                    ext4    defaults        1 2
 13 UUID=06172d8e-75ff-4855-924a-3f6fde386d2f swap                    swap    defaults       0 0
 14 tmpfs                   /dev/shm                tmpfs   defaults        0 0
 15 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
 16 sysfs                   /sys                    sysfs   defaults        0 0
 17 proc                    /proc                   proc    defaults        0 0
 18 //192.168.1.1/samba     /mnt/samba              cifs    credentials=/etc/samba/cred  0 0 <- 삭제

 

: wq! 

 

 

 

 - '/mnt/samba' 디렉토리 마운트를 해지하도록 한다.

[root@main /root]# umount /mnt/samba


[root@main /root]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       4.7G  740M  3.8G  17% /
tmpfs           495M  224K  495M   1% /dev/shm
/dev/sda3        13G  4.0G  8.2G  33% /usr
/dev/sdc1       991M  1.3M  939M   1% /data
/dev/sdb1       991M  1.4M  939M   1% /home

 

 

 

 - Win2003에서 user1 계정을 삭제하도록 한다.

 

 

 

 

 

Ex3) clone1에서 main 공유 자원 접근 I


 - 파일 서버 : Main Eth 0 (172.20.1.1)

 - 클라이언트 : Clone1 Eth 0 (172.20.1.101)

 

 

 

 - main에서 'smb.conf' 설정 파일에 다음과 같은 설정을 추가한다.

 

[root@main /root]# vi /etc/samba/smb.conf

 

~ 중간 생략 ~

 

 55 #======================= Global Settings =============================
 56
 57 [global]
 58
 59 # ----------------------- Network Related Options ------------------------
 60 #
 61 # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
 62 #
 63 # server string is the equivalent of the NT Description field
 64 #
 65 # netbios name can be used to specify a server name not tied to the hostname
 66 #
 67 # Interfaces lets you configure Samba to use multiple interfaces
 68 # If you have multiple network interfaces then you can list the ones
 69 # you want to listen on (never omit localhost)
 70 #
 71 # Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
 72 # specifiy it as a per share option as well
 73 #
 74     workgroup = WORKGROUP
 75     server string = Main Samba Server %v
 76
 77 ;   netbios name = MYSERVER
 78
 79 ;   interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
 80 ;   hosts allow = 127. 192.168.12. 192.168.13.
 81     hosts allow = 127. 172.20.
 82
 ~ 중간 생략 ~

 

: wq!

 

 

 

 - 'smbclient' 명령어를 이용하여 공유 유무를 확인하도록 한다.

 

[root@main /root]# smbclient -L localhost -U user1
Enter user1's password: centos
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]

 

        Sharename       Type      Comment
        ---------           ----        -------
        public             Disk        Samba Test
        IPC$               IPC         IPC Service (Main Samba Server 3.6.23-25.el6_7)
        user1              Disk       Home Directories
        KONICA_MINOLTA_423SeriesPCL:2 Printer   Fax
        Fax:5           Printer   Fax
        HP_Officejet_Pro_8100:3 Printer   HP Officejet Pro 8100
        Hancom_PDF:4    Printer   Hancom PDF
        Microsoft_XPS_Document_Writer:1 Printer   Microsoft XPS Document Writer
        SINDOH_N501_PCL:6 Printer   SINDOH N501 PCL
        Fax:2           Printer   Fax
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]

 

        Server                     Comment
        ---------                   -------
        MAIN                     Main Samba Server 3.6.23-25.el6_7

 

        Workgroup              Master
        ---------                   -------
        WORKGROUP            MAIN

 

 

 

 - smb, nmb 서비스를 재시작한다.


[root@main /root]# service smb restart
SMB 서비스를 종료함:                                       [  OK  ]
SMB서비스를 시작하고 있습니다:                             [  OK  ]

 

 

[root@main /root]# service nmb restart
NMB 서비스를 종료함:                                       [  OK  ]
NMB서비스를 시작하고 있습니다:                             [  OK  ]

 

 

 

 - clone1에서 main으로 마운트를 실시할 '/mnt/samba' 디렉토리를 생성하고, 마운트를 실시한다.

 

[root@clone1 /root]# mkdir /mnt/samba


[root@clone1 /root]# mount.cifs //172.20.1.1/public /mnt/samba -o user=user1
Password: centos

 

 

 

- 마운트 결과를 확인한다.

 

[root@clone1 /root]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda1            4.7G  635M  3.9G  14% /
tmpfs                242M   72K  242M   1% /dev/shm
/dev/sdc1            991M  1.3M  939M   1% /data
/dev/sdb1            991M  1.4M  939M   1% /home
/dev/sda3             13G  3.9G  8.3G  32% /usr
//172.20.1.1/public  4.7G  740M  3.8G  17% /mnt/samba

 

[root@clone1 /root]# ls /mnt/samba
passwd  test

 

 

 

 - main에서 Samba 상태를 확인한다.

 

[root@main /root]# smbstatus

Samba version 3.6.23-25.el6_7
PID     Username      Group         Machine
-------------------------------------------------------------------
10781     user1         user1         172.20.1.101 (172.20.1.101)

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         10781   172.20.1.101  Tue Apr 19 10:28:42 2016
public       10781   172.20.1.101  Tue Apr 19 10:28:42 2016

No locked files

 

 

 

- 마운트를 해지한다.

 

[root@clone1 /root]# umount /mnt/samba

 

[root@clone1 /root]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       4.7G  635M  3.9G  14% /
tmpfs           242M   72K  242M   1% /dev/shm
/dev/sdc1       991M  1.3M  939M   1% /data
/dev/sdb1       991M  1.4M  939M   1% /home
/dev/sda3        13G  3.9G  8.3G  32% /usr

 

 

 

 

Ex4) clone1에서 main 공유 자원 접근 II


 - 파일 서버 : Main Eth 0 (172.20.1.1)

 - 클라이언트 : Clone1 Eth 0 (172.20.1.101)

 

 

 

 - main에서 'smb.conf' 설정 파일에 다음과 같은 설정을 추가한다.

 

[root@main /root]# vi /etc/samba/smb.conf

 

~ 중간 생략 ~

 

292 # Main Samba Server Configuration
293 [public]
294     comment = Samba Test
295     Path = /samba
296     public = yes
297     writable = yes
298     printable = no
299

300 [test1]
301     comment = Samba Test1
302     path = /test1
303     writable = yes
304     printable = no
305     valid users = user1 user3
306
307 [test2]
308     comment = Samba Test2
309     path = /test2
310     writable = yes
311     printable = no
312     valid users = user2 user3

: wq!

 

 

 

 - smb, nmb 서비스를 재시작한다.


[root@main /root]# service smb restart
SMB 서비스를 종료함:                                       [  OK  ]
SMB서비스를 시작하고 있습니다:                             [  OK  ]

 

 

[root@main /root]# service nmb restart
NMB 서비스를 종료함:                                       [  OK  ]
NMB서비스를 시작하고 있습니다:                             [  OK  ]

 

 

 

 - 'testparm' 명령어를 이용하여 'smb.conf' 설정 파일 내용을 점검한다.

 

[root@main /root]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Processing section "[test1]"
Processing section "[test2]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

(엔터)

 

[global]
        server string = Main Samba Server %v
        log file = /var/log/samba/log.%m
        max log size = 50
        idmap config * : backend = tdb
        hosts allow = 127., 172.20.
        cups options = raw

 

[homes]
        comment = Home Directories
        read only = No
        browseable = No

 

[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        print ok = Yes
        browseable = No

 

[public]
        comment = Samba Test
        path = /samba
        read only = No
        guest ok = Yes

 

[test1]
        comment = Samba Test1
        path = /test1
        valid users = user1, user3
        read only = No

 

[test2]
        comment = Samba Test2
        path = /test2
        valid users = user2, user3
        read only = No

 

 

 

 - Samba 계정을 생성한다. 이때, 계정은 '/etc/passwd'에 등록된 계정으로 생성해야 한다.


[root@main /root]# smbpasswd -a user1
New SMB password: centos
Retype new SMB password: centos

 

 

[root@main /root]# smbpasswd -a user2
New SMB password: centos
Retype new SMB password: centos
Added user user2.

 

 

[root@main /root]# smbpasswd -a user3
New SMB password: centos
Retype new SMB password: centos
Added user user3.

 

 

[root@main /root]# pdbedit -L
user1:500:
user3:502:
user2:501:

 

 

 

 -공유 디렉토리를 생성하고, 퍼미션을 변경한다.

 

[root@main /root]# mkdir /test1 /test2
[root@main /root]# chmod 777 /test1
[root@main /root]# chmod 777 /test2

 

[root@main /root]# cp /etc/passwd /test1
[root@main /root]# cp /etc/hosts /test2

 

 

[root@main /root]# ls /test1
passwd

 

 

[root@main /root]# ls /test2
hosts

 

 

 

 - clone1에서 smb, nmb 서비스를 활성화한다.

 

[root@clone1 /root]# service smb start
SMB서비스를 시작하고 있습니다:                             [  OK  ]

 

[root@clone1 /root]# service nmb start
NMB서비스를 시작하고 있습니다:                             [  OK  ]

 

 

 

 - clone1에서 'user1' 계정을 이용하여 main으로 Samba 접속 테스트를 실시한다.

 

[root@clone1 /root]# smbclient //172.20.1.1/test1 -U user1
Enter user1's password: centos
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]
smb: \>
smb: \> help
?              allinfo        altname        archive        blocksize
cancel         case_sensitive cd             chmod          chown
close          del            dir            du             echo
exit           get            getfacl        geteas         hardlink
help           history        iosize         lcd            link
lock           lowercase      ls             l              mask
md             mget           mkdir          more           mput
newer          open           posix          posix_encrypt  posix_open
posix_mkdir    posix_rmdir    posix_unlink   print          prompt
put            pwd            q              queue          quit
readlink       rd             recurse        reget          rename
reput          rm             rmdir          showacls       setea
setmode        stat           symlink        tar            tarmode
timeout        translate      unlock         volume         vuid
wdel           logon          listconnect    showconnect    ..
!
smb: \>
smb: \> dir
  .                                   D        0  Tue Apr 19 10:17:11 2016
  ..                                  D        0  Tue Apr 19 10:16:58 2016
  passwd                                    2095  Tue Apr 19 10:17:11 2016

                38348 blocks of size 131072. 30431 blocks available
smb: \>
smb: \> lcd /tmp
smb: \> mget *
Get file passwd? y
getting file \passwd of size 2095 as passwd (511.5 KiloBytes/sec) (average 511.5 KiloBytes/sec)
smb: \>
smb: \> quit

 

[root@clone1 /root]# ls -l /tmp/passwd
-rw-r--r--. 1 root root 2095 2016-04-19 10:37 /tmp/passwd

 

 

- clone1에서 'user2' 계정을 이용하여 main으로 Samba 접속 테스트를 실시한다.

 

 

 

[root@clone1 /root]# smbclient //172.20.1.1/test2 -U user2
Enter user2's password: centos
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-25.el6_7]
smb: \>
smb: \> dir
  .                                   D        0  Tue Apr 19 10:17:20 2016
  ..                                  D        0  Tue Apr 19 10:16:58 2016
  hosts                                      257  Tue Apr 19 10:17:20 2016

                38348 blocks of size 131072. 30431 blocks available
smb: \>
smb: \> lcd /tmp
smb: \> mget *
Get file hosts? y
getting file \hosts of size 257 as hosts (83.7 KiloBytes/sec) (average 83.7 KiloBytes/sec)
smb: \> quit

 

[root@clone1 /root]# ls -l /tmp/hosts
-rw-r--r--. 1 root root 257 2016-04-19 10:39 /tmp/hosts

 

 

 

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q