Net Eng

SAMBA 본문

Linux

SAMBA

欲心 2024. 6. 18. 21:15

■ SAMBA 요약

- 자원공유 프로토콜 / 오픈소스 분산파일 시스템 (CIFS = SMB + NMB)

- 프로그램 : samba, samba-client, cifs-utils

- 데몬 & 포트/프로토콜 : smbd(139/tcp, 445/tcp), nmbd(137/udp, 138/udp)

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

- 하위 설정 파일 : /etc/samba/*

- 서비스 : smb.service, nmb.service

 

■ 삼바(SAMBA)의 기능

SAMBA 기능은 유닉스/리눅스 플랫폼 환경에서 파일과 하드웨어(CD-ROM, Printer)를 

네트워크를 통해 서로 공유할 수 있게 해주는 프로토콜이다. 이것을 정리해 보면 다음과 같다.

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

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

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

 

■ 삼바(SAMBA)의 활용

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

- 프린터 공유

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

- CD-ROM 데이터 공유 ( 윈도우 파티션과 유닉스/리눅스와의 공유)

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

 

■ 삼바(SAMBA) 실무 사용 예제

/usr/share/doc 디렉토리 공유

- 윈도우에서 리눅스 문서를 보기 위해서

# ls /usr/share
# ls /usr/share/doc
# ls /usr/share/doc/vsftpd

 

- 개발자가 소스 폴더(EX: /source)를 공유하는 경우

- > 개발 환경은 LINUX 이지만 LINUX VI 편집기 사용이 불편한 경우
- > LINUX 서버에 소스 공유를 걸고
- > 윈도우에서 툴(Edit Plus, Ultra Editor, notepad++)을 통해 개발한다.

"L4/DNS --- WEB1/WEB2/WEB3 --- **NFS**/**SAMBA**" 구조

File Server(Windows File Server or Linux File Server)

- > 윈도우 서버의 폴더를 공유하여 파일들을 공유하는 경우

바이러스(프로그램) 배포의 원인이 될 수 있다.

- > 리눅스 서버의 폴더를 공유하여 파일들을 공유하는 경우

바이러스(프로그램)가 정상 동작하지 않는다.

Windows(Printer) -------> Linux Server

**# lp /etc/passwd**

[참고] http://www.netsarang.co.kr -> xlpd(윈도우에 설치)

Disk(Resource) 공간 제공 -> 가정용 NAS

Windows Server(100G) + 5TB(공간 필요) <------ Linux(SAMBA)

 

■ 삼바(SAMBA) 설치 및 기본 설정

[설치]
# yum install samba samba-client cifs-utils
# cd /etc/samba 
# ls
-rw-r--r--. 1 root root  20 Aug 18  2020 lmhosts
-rw-r--r--. 1 root root 706 Aug 18  2020 smb.conf
-rw-r--r--. 1 root root 12K Aug 18  2020 smb.conf.example

[서비스 데몬 확인]
# systemctl enable --now smb nmb
# systemctl status smb nmb

[방화벽 설정]
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
# firewall-cmd --list-all

[포트 확인]
# firewall-config
# egrep '(netbios|microsoft-ds)' /etc/services

 

- samba(139/tcp, 455/tcp)

- samba-client (137/udp, 138/udp)

 

■ 명령어

 

□ smbclient

공유된 자원 확인(EX: # smbclient -L 192.168.0.250 -N)

공유된 디렉토리에 접근할 때 사용 (FTP와 비슷한 방식(ftp-like)으로 접근하고 자원을 다룰수 있다.

(EX : # smbclient -L 192.168.0.250 -U administrator)

# smbclient -L localhost
# smbclient -L localhost -N
# smbclient -L system2 -U administrator **/* system2 : 윈도우서버 */**
# smbclient -L 192.168.10.202 **-U soldesk%password**
# smbclient //192.168.0.250/share -U soldesk

 

■ 실습

# smbclient -L 192.168.10.202
# smbclient -L 192.168.10.202 -N

# smbclient -L 192.168.10.202 -U soldesk

# smbclient //192.168.10.202/share -U soldesk
passwd : soldesk1.
smb: \> help
smb: \> dir
smb: \> lcd /tmp
smb: \> get sample.txt
smb: \> ! ls -l sample*
smb: \> quit

 

■ testparm CMD

삼바의 환경설정 파일인 /etc/samba/smb.conf 파일의 설정이 제대로 되었는지 확인(Syntax Check)하는 명령어이다. 또한 설정된 내용도 확인할 수 있다.

(명령어 형식)

# testparm

# testparm -v   **/* -v : verbose */**

# testparm -s -v   **/* -s : supress prompt */**

# testparm /etc/samba/smb.conf

# testparm -sv |  sed ‘/homes/,$d’

→ 기본옵션
- browseable = Yes 공유디렉토리가 기본적으로 보인다.(if No, 숨김 공유)
- read only = Yes 기본공유 옵션은 ro 이다.(if No, rw)
- valid users = 공유디렉토리에 접근할 수 있는 사용자 목록
- write list = 공유디렉토리에 rw 권한이 가능한 사용자 목록
- printable = No 기본적으로 프린터 공유가 아니다.(if Yes, 프린터 공유)

 

■ mount.cifs/umount.cifs CMD

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

(명령어 형식)

# mount.cifs //192.168.10.202/samba_share /mnt/server -o user=soldesk
# mount -t cifs //192.168.10.202/samba_share /mnt/server -o username=soldesk

 

□ 실습

# smbclient -L 192.168.10.202 -U soldesk        ***<share 폴더 확인>***
# mkdir -p /mnt/cifs
# mount.cifs //192.168.10.202/share /mnt/cifs -o username=soldesk
# df -hT

 

■ Linux → Windows 자원 공유

Samba 서버 설정

# yum -y install samba samba-client cifs-utils
# vi /etc/samba/smb.conf
--------------------------------------------
	...(중략)
	#
	# Specific Configuration
	#
	[public]
	    comment = Samba Test
	    path = /samba
	    public = yes
	    writable = yes
	    printable = no
	    valid users = smbuser1, smbuser2
---------------------------------------------
# testparm -s
# mkdir -p -m 777 /samba

</etc/samba/smb.conf>

 

운영체제 사용자 생성 및 SMB 사용자 생성

# useradd -M -s /sbin/nologin smbuser1 
# useradd -M -s /sbin/nolgoin smbuser2 

# grep smbuser /etc/passwd

 

smbpasswd CMD

(SMB 사용자 추가/삭제)  # smbpasswd -a|-x smbuser1
(SMB 사용자 활성/비활성)# smbpasswd -e|-d smbuser1
# smbpasswd -a smbuser1
# smbpasswd -a smbuser2
# pdbedit -L

(서비스 적용)
# systemctl enable smb nmb
# systemctl restart smb nmb
# systemctl status smb nmb

(방화벽 등록)
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
# firewall-cmd --list-all

# smbclient -L localhost -U smbuser1 (등록한 smbuser로 공유 정보 확인)

 

- Windows에서 공유 확인

→ 192.168.19.20에서 Smbuser1 / smbuser1으로 접속

Public 폴더 확인

# touch /samba/test1.txt

Windows에서 생성된 파일 확인

 

■ 임시/영구 마운트

리눅스 공유(/samba) -- mount → 윈도우 마운트

- 임시 마운트 :

<WIN + E> → \\192.168.10.20\share

- 영구 마운트:

네트워크 드라이브 연결

 

■ Windows → Linux 자원 공유

▷ 윈도우 설정

Windows → C드라이브에 c: \Newjeans 디렉토리 생성 (최소 한개의 파일 생성) → Minji.txt 파일 생성

 

(windows 공유 설정) 속성→고급공유→사용 권한 (soldesk 사용자 추가) → 모든 권한 체크 → 적용

 

▷ Linux 설정

# smbclient -L 192.168.10.202 -U soldesk%soldesk1.
-> Newjeans 폴더 확인
# mkdir -p /mnt/server

# mount -t cifs //192.168.10.202/Newjeans /mnt/server -o user=soldesk
	Password for soldesk@//192.168.10.202/Newjeans:  *********

# df -hT
	//192.168.10.202/Newjeans cifs       60G   11G   50G  18% /mnt/server

# cd /mnt/server
# ls
	Minji.txt

# cp /etc/passwd file1.txt 
# cp /etc/hosts file2.txt 
# cp /etc/group file3.txt

# ls
	Minji.txt  file1.txt  file2.txt  file3.txt

 

Windows 환경에서 생성된 파일 확인

GUI 접근 방법

 

서버 주소 입력 부분에 **smb://192.168.10.202/ 입력**

암호 soldesk / soldesk1. 입력 후 접속

 

폴더 선택 후 마운트 클릭

 

■ 임시/영구 마운트

→ 윈도우 공유(c:\samba_share) --- mount --> 리눅스 마운트

 

□ 임시 마운트

# smbclient //192.168.10.202/share -U soldesk
or
# mkdir -p /mnt/server ; mount.cifs //192.168.10.202/share /mnt/server -o user=soldesk

 

□ 영구 마운트

# mkdir -p /mnt/server

# vi /etc/fstab
-------------------------------------------------------------------
...중략...
//192.168.10.202/share /mnt/server cifs credendials=/root/cred 0 0
-------------------------------------------------------------------

# mount -a

 

■ Linux → Linux 자원 공유

전제조건 : 한대의 리눅스 서버에서는 미리 공유가 되어 있어야 한다.

 

▷ Samba 서버 설정

# vi /etc/samba/smb.conf
---------------------------------
	[test1]
	    comment = WriteList Test
	    path = /smbshare
	    write list = @marketing
---------------------------------
# testparm -s

 

그룹 추가 및 공유 디렉토리 설정

# groupadd -r marketing 
	* -r, --system                  create a system account(GID: 100 ~ 999)

# mkdir -p /smbshare
# chgrp marketing /smbshare
# chmod 2775 /smbshare
	* 775(rwxrwxr-x) -> 2775(rwxrwsr-x  root  marketing)

# ls -ld /smbshare
	* drwxrwsr-x. 2 root marketing 6 Apr 23 16:15 /smbshare/

 

운영체제 추가 및 SMB 사용자 추가

# useradd -M -s /sbin/nologin -G marketing smbuser3
# useradd -M -s /sbin/nologin -G marketing smbuser4
# grep smbuser /etc/passwd

# smbpasswd -a smbuser3
# smbpasswd -a smbuser4
# pdbedit -L 
# pdbedit -Lv

 

서비스 재기동 및 Test11 확인

# systemctl restart smb nmb
# systemctl status smb nmb

# smbclient -L localhost -N

 

▷ 클라이언트 서버 설정

# yum install samba-client cifs-utils
# smbclient -L 192.168.10.20 -U smbuser3

 

마운트 지점 생성 및 마운트

# mkdir -p /mnt/smbuser
# mount -o username=smbuser3 //server1/test1 /mnt/smbuser
	Password for smbuser3@//server1/test1:  ********

# df -h -T
	//server1/test1     cifs       38G  7.8G   30G  21% /mnt/smbuser

# echo 'hello smbuser3' >> /mnt/smbuser/smbuser3.txt
# ls /mnt/smbuser
-> 정상적으로 write 가능한지 확인

'Linux' 카테고리의 다른 글

Booting mode  (0) 2024.06.18
Mail  (0) 2024.06.18
SSH  (0) 2024.06.18
VIM Editor  (0) 2024.06.18
Process  (0) 2024.06.18