잉여토끼 2024. 8. 8. 18:28

SMB(Server Message Block) --> samba service
windows의 자원을 다른 윈도우와 공유하기 위한 프로토콜

자원 : 폴더 / 파일 / 실제 디스크(CD-ROM) / 프린터기

디렉터리 : 하드디스크상 나눠져 인덱스로 구분되는것.
폴더 : 실제로 존재하지는 않는 개념적(논리적)으로 구분되는것 ex)바로가기 폴더

CIFS(Commen Internet File System)
 같은 윈도우더라도 파일 시스템이 다를 수 있음. 이 문제를 해결하기 위해서 만든 통합 파일 시스템.
NFS(Network File system)
 네트워크를 통해서 디렉터리를 전송하는 시스템. 리눅스 시스템


CIFS : Window to Window
NFS : Linux to Linux

리눅스에서 SMB를 사용하기 위해 SMB를 리눅스에서 흉내낸것이 samba service

SMB에서는
이터널 블루 취약점이 존재.
1,2,3버전이 존재하나 SSH처럼 동기화 하여 버전을 맞춤

 

윈도우 SMB 설정

 

폴더 생성. SMB용 계정 생성(SMB/1234). 
(권한부여)폴더 속성. 보안. 편집. 추가.고급. 지금찾기. smb. 모든권한 부여.
(공유) 공유. 고급공유.선택한 폴더 공유. 권한. smb추가. 적용



리눅스 Samba 설정

#smb프로토콜 활성화를 위한 패키지 설치. 
samba samba-client
#samba 전용 계정 생성
useradd [계정 이름]
#/etc/passwd에 계정 정보가 생성. smb계정으로 ssh접속이 가능. 
#계정 생성시 쉘 실행이 되기 때문. "/bin/bash"
useradd -s /sbin/nologin [계정이름]
# /sbin 에는 접근권한이 없으며 /sbin/nologin 쉘 파일이없음. 즉, 계정 생성시 쉘을 지정하지 않음. 따라서 외부 접속이 불가. 
# 계정의 비밀번호 설정. 일반적인 계정: passwd 계정 명
# samba계정의경우
smbpasswd -a [계정명]
# ex)smbpasswd -a smb
#현제 시스템이 가진 smb리스트
pdbedit --list
# samba서버설정. 
# 설정파일 위치 /etc/samba
cd /etc/samba
# 설정파일 이름. samba.conf
#[[공유폴더이름]]
#    comment = [설명]
#    hosts allow = [허용ip대역/프리픽스]
#    path = [공유 폴더 위치]
#    read only = no #(yes = 읽기 no = 읽기 + 쓰기)
#    vaild users = [일반계정] @[samba계정]
#    write list = [쓰기권한 계정] @[samba쓰기권한계정]

# ex)

# [smb]
#         comment = smb
#         hosts allow = 172.16.0.0/16
#         path = /home/smb
#         read only = no
#         valid users = smb @smb
#         write list = smb @smb

# smb, nmb(nfs) 둘이 같이 연동해서 움직임. 
systemctl restart smb nmb

# 윈도우는 cifs를 사용 . 이를 리눅스에서 동기화하기위해 설치
dnf -y install cifs-utils

# samba용 유틸리티 : smbclient
#상대방 호스트 확인
smbclient -L [확인할 ip] -U [사용할 계정]%[비밀번호]







#cmd에서 자신의 공유자원 확인
net share

# 이 외에도 GUI로 컴퓨터 관리 - 공유폴더에서도 확인 가능.


#로그확인 

smb status

 

 

 

mount
외부의 다른 저장소를 자신의 루트 아래 연동하는것.
ex)
외부에 smb/a를 만들고, 대상 저장소아래에 a라는 디렉토리랑 연동

mount -t cifs //[대상 IP]/[SMB 파일이름]/ /[대상위치] -o username='[smb사용자 이름]',password='[smb비밀번호]'