ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Virtualbox 우분투 게스트에서 윈도우 호스트로 삼바(Samba) 공유
    Knowledge 2020. 4. 28. 20:56

    리눅스 기반의 프로젝트를 할 때, 소스코드 편집을 윈도우즈에서 하는 편이다. 간단한 프로젝트의 경우 우분투를 Virtualbox의 가상 머신에서 돌리고, 편집은 호스트의 윈도우즈에서 하는 형태를 선호하곤 한다. 이 상황에서 호스트 윈도우즈의 공유폴더를 Virtualbox 게스트 우분투 내부로 공유하는 방법은 Virtualbox에서 기본으로 제공된다. GUI에서 쉽게 공유폴더를 설정할 수 있는 이 방식에 대한 설명은 많이 나와 있어 쉽게 사용할 수 있다.

     

    하지만 이 공유 폴더는 기본적으로 윈도우즈에 존재하고, 우분투에서 접근하는 형태이다. 대부분의 경우 이 방식으로 작업해도 문제가 없었지만, Git에 있는 소스코드를 내려받아 작업을 하던 중, 윈도우즈에서 작업할 경우 리눅스의 심볼릭 링크가 깨지는 경우나 개행문자 변경으로 바이너리가 깨지는 경우 등의 예외상황을 경험하였다.

     

    그래서 이런 경우를 방지하려면, Virtulbox에서 돌아가는 우분투 가상 머신 내부에 samba를 구동시키고 호스트 윈도우즈에서 접속하여 사용하는게 나을 것 같았다. 그래서 이 방법을 시도했는데 여기에 대해서 나와있는 설명이 별로 없어 약간 시간을 소모했다.

     

    지금부터 우분투 가상머신의 폴더를 호스트 윈도우즈에서 접근하는 방법에 대해 남겨보려 한다.

     

     

    Virtualbox 네트워크 생성

    아무 것도 건드리지 않고 Virtualbox에서 우분투 가상 머신을 만들 경우, NAT 형태의 네트워크가 우분투에 기본으로 잡히게 된다. 그런데, 이 NAT형태의 네트워크를 통해 호스트 머신으로 삼바 공유를 하는 것은 좀 어렵다. 그래서 Host Only Network를 만들어 사용해야 한다.

     

    보통 Virtualbox를 인스톨하면 이미 Host Only Network가 하나 만들어져 있는데 이를 사용하면 된다. 혹시 없거나 다른 용도로 사용중이라면 Virtualbox 앱의 Host Network Manager를 통해 하나 만들어 사용할 수 있다.

     

    먼저 가상머신은 종료된 상태여야 한다. Host Only Network를 설정하기 위해서는 가상 머신 창의 Machine->Settings->Network로 간다.

     

     

    그림에서 보이는 것처럼 Adapter1은 보통 NAT로 들어가 있으므로, Adapter2에 네트워크를 하나 추가한다. "Enable Network Adapter"를 체크하고, "Attached to" 항목에 Host-only Adapter를 선택한다.

     

     

    우분투의 Host-only adapter 주소 확인

    가상머신을 다시 구동한다. 18.04 LTS 버전처럼 최근 우분투 버전을 사용하고 있다면 아마 자동으로 새로 추가한 네트워크 장비가 인식될 것이다. 이제 터미널을 실행한고 다음 커맨드를 입력한다.

     

    $ ifconfig

     

    그럼 우분투에서 사용중인 네트워크 카드의 정보가 나타나는데, 확인해야 할 부분은 다음과 같다.

     

     

    이전 단계에서 새로 추가한 Host-only Adapter의 ip 주소를 확인할 수 있다. (보통 192.168.54.xxx 형태로 되어있다.) 이 주소로 최종적으로 연결을 할 것이므로 잘 기억해 둔다.

     

     

    Samba 설치

    다음 커맨드로 삼바를 인스톨한다.

     

    $ sudo apt-get install samba

     

    보통 설치하면 서비스 등록까지 잘 되었는데, 우분투 18.04의 경우 그게 잘 안되는 경우가 있다. 다음 커맨드로 서비스를 켜준다.

     

    $ sudo systemctl enable smbd

     

     

    Samba 계정 설정 (전체 공유의 경우 필요 없음)

    특정 계정만이 삼바에 접근할 수 있도록 하려면 해당하는 우분투 계정을 만들고 삼바 계정으로 등록해 주어야 한다.

     

    $ sudo smbpasswd -a testuser

     

    이 명령은 우분투 계정인  testuser를 삼바 계정으로 사용하는 동시에 패스워드를 설정한다. (testuser 계정은 우분투에 원래 있는 계정으로 가정) 이제 삼바에 접속할 때 testuser 계정과 여기에서 설정한 패스워드를 통해 접속이 가능하다. 이 패스워드는 우분투 사용자 계정 패스워드가 아님을 잘 기억하자. 우분투 testuser 계정 패스워드와 다른 패스워드를 삼바 공유에서 사용할 수 있다.


    설정이 완료되었으므로 삼바 서버 구동을 시작한다.

     

    $ sudo systemctl start smbd

     

     

    공유 폴더 설정

    계정명과 패스워드를 통해 들어오는 특정 사용자에게 특정 폴더를 공유하거나, 계정 인증 없이 전체 공유 폴더를 만드는 것이 모두 가능하다. 공유 폴더의 설정은 다음 설정 파일에 추가한다.

     

    $ sudo vi /etc/samba/smb.conf

     

    설정 파일을 열고 가장 끝부분에 원하는 공유폴더의 설정을 추가한다. 먼저 다음은 testuser 계정으로 /home/testuser/share 폴더를 \\ip address\testshare 폴더로 공유하는 예제이다. 물론 /home/test/share는 존재해야 하고 삼바 대몬이 읽고 쓸 수 있는 권한이 있어야 한다.

     

    [testshare]
       comment = Share for test        # 공유 폴더 설명
       path = /home/testuser/share    # 공유할 폴더
       browsable = yes                    # 폴더 내용을 탐색 가능함
       read only = no                      # 읽기전용 아님
       writable = yes                       # 쓰기 가능
       valid users = testuser              # 접근 가능한 사용자 계정
       create mask = 0777                # 파일 권한
       directory mask = 0777            # 디렉토리 권한

     

    다음은 계정 정보 입력 없이 /home/testuser/allshare 폴더를 \\ip address\allshare로 공유하는 예제이다.

     

    [allshare]
       comment = Share for all
       path = /home/testuser/allshare
       guest ok = yes                          # 게스트 계정 허용
       browsable = yes
       read only = no
       writable = yes
       create mask = 0777
       directory mask = 0777

     

    설정 파일 추가를 마치면 다음 명령으로 삼바를 재시작한다.

     

    $ sudo /etc/init.d/smbd restart

     

     

    윈도우즈에서 접속

    우분투 가상머신이 실행되고 있는 상황에서, 윈도우즈키 + R키를 눌러 실행창을 열고 다음을 입력한다.

    그림에서처럼 입력하면 Host-only Adapter의 주소인 192.168.56.101의 allshare 폴더에 접근한다. 위에서 allshare를 전체 공유로 설정하였으므로 바로 폴더의 내용이 보인다.

     

    만약 위에서 설정한 testshare에 접근하면 id와 password를 묻는 창이 나온다. id는 testuser가 될 것이고, password는 smbpasswd로 설정한 암호가 된다.


    Fin.

    반응형

    댓글

Calvin's Memo