본문 바로가기
Linux

Windows Linux Unix(AIX) 파일 공유

by 도경다경 2024. 4. 25.
반응형

고객사로부터 Windows, Linux 간 파일 공유해달라는 요청이 있었다.

NFS 서버 구성해서 사용하는 건 장애 위험도 있고, 서비스 선후관계도 걸리고 해서 NAS를 사용했다.

NAS 볼륨 생성후 NFS export, CIFS Share 동시 설정으로 공유하려 시도했다.

 

1. CIFS Share 생성 후 NFS export 추가
- CIFS를 먼저 생성하면 NFS export 시 권한이 무조건 777로 잡힌다.
- 물론 NAS 구성 초기에 추가 세팅을 통해 권한을 변경할 수 있도록 할 수 있지만, 작업 시점에서는 이미 늦어버렸다.(누군가 그렇게 구성을 해서 변경을 할 수가 없더라)
- 그래서 CIFS는 보안상 포기

2. NFS export 후 CIFS Share
- NAS에서 지원을 안한다. 이유는 위와 마찬가지.(NAS 초기 설정을 잘못함)

3. NFS export 후 Windows에 NFS Client 설치 및 mount
- 이 방법이 제일 나은 방법으로 보인다.
- CIFS 처럼 접근제어가 복잡하지 않고 credential bug가 발생할 위험이 없다.
- registry 수정을 통해 특정 계정 uid, gid 로 접근이 가능하다.

- 설정 방법
 . Windows 에 NFS Client 기능 추가(online, but 어차피 권한 때문에 reboot 해야함)
 . mount 명령어는 NFS Client를 설치해야 추가된다.
 . GUI로는 네트워크 드라이브가 잡히지 않는다. 명령어 사용해야 함.
   mount \\nas ip\volume_name e:
. mount 로 확인해보면 uid, gid 가 기본 2로 설정되어 파일 생성, 변경이 안된다.
. registry 설정
  New-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousUID -Value 0 -PropertyType "DWord"

New-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousGID -Value 0  -PropertyType "DWord"
- 0:0 은 root:root 다 Linux, AIX와 공유하려면 공유하려는 계정과 동일한 uid, gid를 사용해야 한다.
- reboot 해야 적용된다.

이 방법은 사실 권장되지 않는다.

NFS client는 Windows IO에 NFS IO가 추가되기 때문에 문제가 생길 여지가 크다

만약 Linux에서 쓰고 Windows에서 읽기만 한다면 나쁘지 않은 방법일 수 있다.

다만 Windows에서 쓰고 Linux에서 읽는다면

1) NAS 에서 CIFS, NFS 동시 공유 설정해주는 게 Best
2) Linux에서 cifs-utils 로 CIFS 마운트 해주는게 차선이다

이유는 Linux에서 read만 하는 거니까 IO에서 문제 생길일이 거의 없고,
Samba RPM 설치하는 것이 아니기 때문에 보안도 취약하지 않기 때문이다.(SMB 프로토콜은 쓰지만 Samba RPM은 설치 불필요)
실제로 보안 감사 항목에도 cifs-utils 건은 없다.

mount 시 예제는 다음과 같은데 계정명, 패스워드 노출이 싫으면 별도 credential 파일 만들어서 지정하면 된다.

1) 패스워드 보이게 mount
mount -cifs -o domain=[domain_name],username=[username],password=[password],vers=2.0,file_mode=644,uid=1000,gid=2000 //192.168.10.10/TESTNAS /test_mount

2) credential file 사용
mount -cifs -o cred=[file_name],vers=2.0,file_mode=644,uid=1000,gid=2000 //192.168.10.10/TESTNAS /test_mount

credential 파일 내에는 아래 내용만 넣으면 된다.

domain=[domain_name]
username=[username]
password=[password]

 

반응형

댓글