한님폐하 2022. 9. 12. 11:01
  • 유닉스/리눅스 플랫폼 환경에서 파일과 하드웨어(CD-ROM, Printer)를 서로 공유할 수 있게 해주는 서비스이다.
  • smbd : 파일 및 프린트 공유, 사용자 확인 및 권한 부여를 담당한다. (포트 번호 : TCP 139, TCP 445)
  • nmbd : 클라이언트를 위해 Netbios Nameserver를 지원하고 서비스를 알린다. (포트 번호 : UDP 137, UDP 138)

 

1. SAMBA 서비스 설치 및 활성화

yum -y install samba samba-client cifs-utils
rpm -qa | egrep '^samba|^cifs-utils'
rpm -ql samba | egrep -v '/usr/lib/|/usr/lib64|/man/|/doc/'
rpm -ql samba-common | egrep -v '/man/'
rpm -ql samba-client | egrep -v '/usr/lib|/man/|/doc/'
systemctl enable --now smb nmb
systemctl status smb nmb

 

2. SAMBA 관련 정보 확인

netstat -antp | egrep '137|138|139|445'
netstat -anup | egrep '137|138|139|445'
ps -ef | egrep 'smbd|nmbd' | egrep -v grep 
pgrep -lf smbd
pgrep -lf nmbd
smbstatus
net use	# at Windows10

 

3. SAMBA 구성

3-1. 리눅스: 서버, 윈도우: 클라이언트

  • 'testparm' 명령어를 이용하여 'smb.conf' 환경 설정 파일 내용을 확인한다.
vi /etc/samba/smb.conf
 workgroup = MYGROUP
 hosts allow = 127. 192.168.2.	# Samba 공유가 허용되는 서브넷 설정
 [public]
    comment = SAMBA TEST
	path = /samba
	read only = no
	writable = yes
	public = yes
	printable = no
:wq

 

  • 'pdbedit'를 이용하여 SAMBA 계정을 생성한다. 이때 계정은 '/etc/passwd'에 등록된 계정으로 생성해야 한다.
pdbedit -a user1	# 계정 생성
pdbedit -L		# 계정 확인
pdbedit -x user1	# 계정 삭제

 

  • 'smbclient' 명령어를 이용하여 공유 유무를 확인한다.
  • 윈도우10에서 윈도우 실행(원도우키 + R)을 실시하여 '\\192.168.2.200'을 확인하면 파일이 공유되는 것을 볼 수 있다.
smbclient -L localhost -U user1
smbclient //localhost/public -U user1

 

3-2. 리눅스: 클라이언트(192.168.2.200), 윈도우: 서버(192.168.2.1)

[윈도우10]

  • 제어판 -> 프로그램 -> Windows 기능 켜기/끄기 -> SMB 1.0/CIFS 파일 공유 지원 체크 -> 재부팅 실시
  • 내 PC 마우스 우클릭 -> 관리 -> 로컬 사용자 및 그룹 -> 사용자 우클릭 -> 새 사용자 -> user1/centos 계정 추가
  • C 드라이브 -> samba 폴더 생성 -> 'smbfile11.txt', 'smbfile22.txt' 생성 -> samba 폴더 'user1' 공유 실시(읽기/쓰기)

 

[리눅스]

  • 공유 마운트 디렉토리 생성하고 /etc/fstab에 마운트한다.
mount.cifs //192.168.2.1/samba /mnt/samba -o user=user1
vi /etc/fstab 
/192.168.2.1/samba   /mnt/samba              cifs    credentials=/etc/samba/cred 0 0

 

  • '/etc/samba/cred' 파일을 생성하여 Samba 계정을 추가하고, root 계정만 확인할 수 있도록 퍼미션을 변경한다.
vi cred
username=user1
password=centos
:wq
chmod 600 cred

 

3-3. 리눅스 : 클라이언트(192.168.2.201), 리눅스 : 서버(192.168.2.200)

  • 클라이언트에서 마운트 디렉토리를 생성하고 /etc/fstab에 마운트를 실시한다. Samba계정을 추가하고 퍼미션을 변경한다.
vi /etc/fstab
//192.168.2.200/public   /mnt/samba              cifs    credentials=/etc/samba/cred 0 0
mount -a

vi /etc/samba/cred
username=user1
password=centos
chmod 600 /etc/samba/cred