Windows 서버의 드라이브 및 디렉터리를 리눅스 서버에 마운트하기
Windows Server에서 디렉터리 또는 드라이브를 공유 디렉터리로 지정하고 리눅스에서 이를 마운트하여 네트워크 드라이브로 공유해 사용하는 방법을 알아보도록 하겠습니다. 참고로 저는 개발자이며, 인프라 엔지니어가 아니기 때문에 Windows 서버에 대한 깊은 지식이 없는 상태에서 작성한 글입니다. 틀린점이나 지적해주실 사항은 댓글로 남겨주시면 감사하겠습니다.



먼저 네트워크 파일 공유 기능인 SMB/CIFS 기능이 설치 및 사용중으로 되어있는지 체크해야 합니다. 시작 -> 서버 관리자



서버 관리자가 실행되면 관리 -> 역할 및 기능 추가



혹은 제어판 -> Windows 기능 켜기/끄기 로 접근할 수도 있습니다.



처음 서버 역할, 기능 탭이 비활성화 되어 있는데, 서버 선택 클릭 이후 기능을 클릭합니다.




스크롤을 내려 SMB 1.0/CIFS File Sharing Support에 체크하고 다음



설치 과정 중 서버 재시작이 필요한데 자동으로 재시작 하고 싶은 경우 체크합니다. 이후 설치 클릭
!!실제 운영중인 서버라면 서버 재시작에 주의합니다.




설치가 진행됩니다.





설치가 완료되면 닫기를 누르고 Windows Server를 재시작합니다.




재시작 하면 기능이 설치된 것을 볼 수 있습니다.





이제 원하는 드라이브 또는 디렉터리를 공유해 주어야 합니다. 원하는 경로에 있는 디렉터리를 마우스 우클릭 후 속성을 클릭합니다.




공유 탭에서 공유... 클릭




공유할 계정을 설정합니다. 이후에 리눅스가 클라이언트가 되어 Administrator 계정 권한을 통해 mount 할 것입니다. 실제 운영환경의 서버라면 보안 정책상 안전한 계정을 따로 만들어 공유하도록 합니다.




완료 클릭. 보면 알겠지만 딱히 별다른 설정이 필요없습니다. SMB 기능 설치 후 디렉터리를 공유한 것 뿐입니다.




네트워크 경로가 있는데, 앞의 호스트명을 제외한 이후의 경로를 mount시에 사용할 것입니다.
예) //192.168.111.131/Users/Administrator/shared




테스트를 위해 test.txt 파일을 만들었습니다. 내용은 원하는 텍스트를 입력합니다.





리눅스에서 네트워크 파일시스템 연결하기
CentOS7을 기준으로 설명합니다. 다른 버전의 CentOS나 데비안, RHEL 계열 리눅스들도 명령어는 같습니다.

centos7에서는 기본적으로 cifs 마운트를 지원합니다. 마운트할 디렉터리를 하나 생성합니다. 저는 teluser라는 계정의 홈 디렉터리 하위에 shared로 생성했습니다. 이곳에 Windows 2012의 shared 디렉터리를 마운트 할 것입니다.
mkdir /home/teluser/shared                                                                    
cs



다음과 같이 mount 명령어를 통해 cifs 마운트를 실행합니다. 사용자 정보는 Windows에서 공유시 추가한 권한을 가진 계정 정보입니다.

mount -t cifs -o user='사용자',password='비밀번호' //windows IP/공유디렉터리 경로 /마운트할 linux 경로
mount -t cifs -o user='Administrator',password='password' //192.168.111.131/Users/Administrator/shared /home/teluser/shared
cs


원하는 드라이브를 기준으로 하는경우 C$, D$ 와 같이 드라이브를 지정해줄 수 있습니다. 아무런 오류가 안뜨고 마운트 된다면 성공입니다.
mount -t cifs -o user='Administrator',password='p@ssw0rd' //192.168.111.131/D$/shared /home/teluser/shared
cs

 
 


마운트 되었는지 확인
파일 시스템 마운트 정보를 확인하니 맨 아래 다음과 같이 네트워크 파일시스템이 마운트 된것을 볼 수 있습니다.

df -h                                                                                    
cs

 



또한 이전에 Windows 서버에서 공유시에 작성했던 test.txt 파일이 있는지 살펴봅니다. 파일 내용 끝이 개행이 일어나지 않는데, 이는 unix 계열과 Windows 계열의 개행 문자 표현이 다르기 때문에 나타나는 현상입니다. 아무튼 성공적으로 공유된 것을 알 수 있습니다.
cat /home/teluser/shared/test.txt                                                            
cs





오류 트러블 슈팅
만약 mount시에 다음과 같은 오류가 발생한다면 원인은 크게 두 가지입니다. 리눅스나 Windows 서버의 방화벽 설정. 또는 Windows 서버에서 디렉터리 공유는 했으나 SMB/CIFS 기능이 설치 및 작동되지 않는 경우입니다. 호스트가 죽었습니다. 또는 timeout 인 경우에도 방화벽을 의심해 보아야 합니다.
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)


만약 다음과 같은 오류가 나타난다면 접근 권한 설정이나 계정 및 비밀번호가 틀리지는 않았는지 의심해 보아야 합니다.
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)




방화벽 포트 해제
제어판 > 시스템 및 보안 > Windows 방화벽 > 고급 설정



 SMB-in 445 (TCP) 포트 및 NB-Session-In 139 (TCP) 포트를 인바운드, 아웃바운드 모두 외부에 연결 허용중인지 확인합니다.



445 TCP 



139 TCP 확인.



 
 


블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!