[Linux]Part4) 원격 파일시스템을 마운팅하기(CIFS)
NFS(Network File System)
, sshfs
그리고 CIFS(Common Internet File System)
는 모두 다른 방식으로 원격 파일 시스템을 마운트하여 로컬 시스템에서 원격 파일에 접근하는 기술입니다. 아래에서 각각의 기술을 비교 설명하겠습니다.
- NFS(Network File System):
- 기술: NFS는 클라이언트와 서버 간의 파일 공유를 위한 프로토콜입니다. 공유 디렉터리를 마운트하여 원격 파일에 접근할 수 있습니다.
- 보안: 기본적으로 암호화되지 않은 통신을 사용하므로, 추가적인 보안 설정이 필요합니다.
- 설정: 서버와 클라이언트 간의 설정 및 마운트 포인트 설정이 필요합니다.
- 운영체제 지원: 다양한 운영체제에서 지원되며 주로 UNIX 및 Linux 시스템에서 사용됩니다.
- SSHFS(SSH File System):
- 기술: SSHFS는 SSH 프로토콜을 기반으로한 파일 시스템 마운트 기술입니다. 로컬 시스템과 원격 호스트 사이의 암호화된 연결을 통해 파일을 전송하고 접근합니다.
- 보안: 데이터 전송이 SSH 암호화를 통해 이루어지므로 보안적으로 안전합니다.
- 설정: SSH 키 기반의 접속을 위해 개인 키와 공개 키가 필요하며, 원격 호스트의 공개 키를 ~/.ssh/known_hosts에 등록해야 합니다.
- 운영체제 지원: 주로 Linux 및 Unix 기반 시스템에서 사용됩니다.
- CIFS(Common Internet File System):
- 기술: CIFS는 Windows 파일 공유 프로토콜로, 로컬 및 원격 파일 시스템 간의 연결을 위해 사용됩니다.
- 보안: Windows 기반의 프로토콜이지만, 암호화 옵션을 통해 데이터 보안을 향상시킬 수 있습니다.
- 설정: 로그인 및 권한 설정 등 Windows 파일 공유에 관련된 설정이 필요합니다.
- 운영체제 지원: Windows 및 다른 운영체제에서도 사용 가능하지만, 주로 Windows에서 사용됩니다.
이러한 원격 파일 시스템 기술들은 각각의 장단점과 용도에 따라 선택되어야 합니다. 보안, 편의성, 운영체제 지원 등을 고려하여 적합한 기술을 선택하실 수 있습니다. 순서대로 설정 방법 및 사용법에 대해 알아보겠습니다.
1. NFS(Network File System): Linux Server – Linux Client
2. NFS(Network File System): NAS Server – Linux Client
3. SSHFS(SSH File System)
4. CIFS(Common Internet File System): Linux Server – Windows Client
5. CIFS(Common Internet File System): Windows Server – Linux Client
4. CIFS(Common Internet File System): Linux Server – Windows Client
CIFS는 네트워크에서 파일 및 프린터 공유를 위한 프로토콜로, 클라이언트-서버 모델을 사용하여 파일 공유를 가능하게 하며, 네트워크 파일 시스템에 접근하는 데 사용됩니다. CIFS는 주로 Windows 환경에서 파일 공유를 위해 사용되지만, 다른 운영 체제에서도 CIFS 프로토콜을 구현하여 Windows와 상호 작용할 수 있습니다. 여기서 Samba가 등장합니다.
Samba는 CIFS 프로토콜을 구현한 오픈 소스 소프트웨어입니다. 주로 Linux 및 Unix 기반 시스템에서 Windows 파일 공유 및 인터페이스를 제공하는 데 사용됩니다. Samba는 Windows와 호환되는 파일 및 프린터 공유 기능을 제공하여 Windows 및 비-Windows 시스템 간의 통합된 파일 공유 환경을 구축할 수 있게 해줍니다. 즉, Samba는 CIFS 프로토콜을 Linux 및 Unix 시스템에 적용하여 Windows 파일 공유와의 호환성을 제공하는 역할을 하며, 다양한 플랫폼 간의 파일 공유 환경을 구축하는 데 도움을 줍니다.
Samba는 CIFS 프로토콜을 구현한 오픈 소스 소프트웨어입니다. 주로 Linux 및 Unix 기반 시스템에서 Windows 파일 공유 및 인터페이스를 제공하는 데 사용됩니다. Samba는 Windows와 호환되는 파일 및 프린터 공유 기능을 제공하여 Windows 및 비-Windows 시스템 간의 통합된 파일 공유 환경을 구축할 수 있게 해줍니다. 즉, Samba는 CIFS 프로토콜을 Linux 및 Unix 시스템에 적용하여 Windows 파일 공유와의 호환성을 제공하는 역할을 하며, 다양한 플랫폼 간의 파일 공유 환경을 구축하는 데 도움을 줍니다.

CIFS(Common Internet File System): Linux Server – Windows Client
▣ Linux를 CIFS 서버로 설정
- CIFS 서버로 설정하기 위해 필요한 패키지들을 설치
– samba-common, samba-client : 공통 패키지
– samba : CIFS Server로 사용하기 위한 패키지
– cifs-utils : CIFS Client로 사용하기 위한 패키지(테스트를 위해 함께 설치)[root@centos8 ~]# yum -y install samba samba-common samba-client cifs-utils
- CIFS 서버로 사용하기 위한 데몬 실행
– SAMBA는 nmb데몬과 smb데몬으로 구성smbd (Samba Daemon): Windows 클라이언트와의 상호 작용을 처리합니다. 파일 및 프린터 공유, 클라이언트 인증, 파일 및 디렉토리 접근 관리 등의 역할을 담당합니다. 실제 파일 및 디렉토리 작업을 처리하며, 클라이언트의 파일 및 프린터 요청에 응답합니다. 445/tcp 포트를 이용하여 IP주소만 알고 있어도 SAMBA 서비스를 사용할 수 있습니다.nmbd (NetBIOS Name Server Daemon): NetBios name service를 처리하는 데몬입니다. NetBios는 네트워크에서 컴퓨터의 이름을 IP 주소와 매핑하는 역할을 합니다. nmbd는 NetBios 이름 조회, 등록 및 관리를 처리하여 Windows 클라이언트의 네트워크 이름 식별을 지원합니다. 137-138/udp번 포트를 이용하여 컴퓨터를 검색한 후, 139/tcp번 포트를 이용하여 컴퓨터 이름으로 접속합니다.[root@centos8 ~]# rpm -ql samba | grep service /usr/lib/systemd/system/nmb.service /usr/lib/systemd/system/smb.service [root@centos8 ~]# systemctl enable --now smb nmb
- 공유 디렉토리 생성, 환경파일 설정 및 점검
– /etc/samba/smb.conf 파일의 [global] 세션에 있는 workgroup은 Windows Client의 “시스템 속성 > 컴퓨터 이름 > 작업 그룹”과 동일하게 설정해야 합니다.[root@centos8 ~]# mkdir -m 1777 /shared [root@centos8 ~]# vi /etc/samba/smb.conf [global] workgroup = WORKGROUP security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw ----- More ----- [shared] #공유디렉토리_이름 comment = cifs shared directory path = /shared valid users = root write list = root # read only = yes writable = yes follow symlinks = no [root@centos8 ~]# testparm rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Registered MSG_REQ_POOL_USAGE Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED 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 "[print$]" Processing section "[shared]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions ----- More -----
- 삼바 사용자 등록 및 비밀번호 설정
[root@centos8 ~]# smbpasswd -a root New SMB password: "root" Retype new SMB password: "root" Added user root.
- OS 방화벽 및 SELinux 적용 여부 확인
OS 방화벽 및 SELinux 적용 여부 확인[root@centos8 ~]# firewall-cmd --state running [root@centos8 ~]# getenforce Enforcing
– 적용해야 한다면
[root@centos8 ~]# firewall-cmd --permanent --add-port={137-138/udp,139/tcp,445/tcp} success [root@centos8 ~]# firewall-cmd --reload success [root@centos8 ~]# chcon -t samba_share_t /shared [root@centos8 ~]# setsebool -P samba_export_all_rw on [root@centos8 ~]# ls -ldZ /shared drwxrwxrwt. root root unconfined_u:object_r:samba_share_t:s0 /shared
– 사용을 중지해야 한다면
[root@centos8 ~]# systemctl disable --now firewalld [root@centos8 ~]# setenforce 0 [root@centos8 ~]# vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
▣ Windows를 CIFS Client로 설정
- “탐색기 > 네트워크 > 네트워크 드라이브 연결” 메뉴 클릭
- CIFS 서버로 설정된 Linux Server의 IP 주소 및 공유 디렉토리 입력
– “\\IP_address\공유디렉토리_이름” 형식으로 입력 - SAMBA 사용자 및 비밀번호 입력
- 연결 확인 및 테스트
– 탐색기에 Linux 서버의 공유 디렉토리가 네트워크 드라이브로 연결되며 파일 및 폴더 생성이 가능합니다.