Help us understand the problem. What is going on with this article?

Windows Server 2019でHyper-V上のUbuntu18.04とファイルを共有

More than 1 year has passed since last update.

はじめに

やりたい事は,タイトルの通りHyper-Vで動いているUbuntu18.04とその母艦であるWindows Server 2019とで共通のディレクトリ・ファイルをユーザを切り分けつつ参照出来るようにする事です.

詳細としては,前提として

  • Windows Server 2019側のD:\Work\[user_name]\にユーザ毎の作業用ディレクトリがある

状況において,

  • Ubuntu18.04側で動いているJupyterHub環境に接続した際のルート下にこの作業用ディレクトリをマウント

がやりたい事です.
Windows Server 2019でHyper-V上のUbuntu18.04にJupyterHub環境を構築
の通り,「JupyterHub環境に接続した際のルート」は~/notebooksになっています.

微妙にネットワークを介してしまいますが,手っ取り早く,共有ディレクトリにしてcifsでマウントしていきます.
適当にやってしまったので,メモに漏れやミスがあるかも知れませんm(_ _)m

Windows側の設定

単純なファイル共有設定作業です.
権限周りだけ気を付けます.

共有設定

上述の通り,今回はD:\Work\以下を共有したいので,こちらに共有設定をかけます.
ググるとGuestアクセス可能にしてしまうとかパスなしにするとか出てきますが,今回はサーバ用途なので流石にそれは回避…

本共有作業専用のユーザ(以降[share_name]とします)を追加し,そちらにD:\Work\およびD:\Work\[user_name]\群への共有アクセス許可を与えます.
(当然[user_name]で共有をかけても良いのですが,fstabの仕様上パスワードを平文で保持しないといけないようなので専用に用意します.)
0_moz.png
1.png
2_2_moz.png
これで[share_name]さんを使って\\[IPアドレスorホスト名]\Workにアクセス出来るようになります.

もちろん[share_name]さんはD:\Work\[user_name]\群全てにアクセス出来る状態なので,Ubuntu側でユーザ毎の切り分けをします.

パーミッション設定

この環境ではD:\Work\[user_name]\群はD:\Work\の設定を継承しておらず,

  • 各ユーザだけがアクセス出来る
  • ディレクトリの削除は出来ない

としてある(そう挙動する…はず)ので,[share_name]さんにも同様の権限を与えます.
3_moz.png
4_moz.png

Ubuntu側の設定(mount)

今回は/mnt/Workへマウントします.

sudo mountでとりあえず全体のマウント確認

passwordを直書きしてしまいますが,

$ sudo mkdir /mnt/Work
$ sudo mount -t cifs -o vers=3.0,username=[share_name],password=[share_name pass] //[IPアドレス]/Work /mnt/Work

でマウント出来るか確認.
確認したらumount

ユーザ毎に権限を付与した形でのマウント確認

大量に居るならスクリプトにしてしまうべき作業.

ユーザ毎マウントポイント作成

$ sudo mkdir /mnt/Work/[user_name1]
$ sudo chown -R [user_name1]:[user_name1] /mnt/Work/[user_name1]
$ sudo mkdir /mnt/Work/[user_name2]
$ sudo chown -R [user_name2]:[user_name2] /mnt/Work/[user_name2]

chownが必要かは未確認です.mount時のuid等で上書きされるかも知れない.

ユーザ毎でのsudo mountの確認

書いておいてアレですが,全体確認以降は直接fstabでの作業をしているのでこの確認はしてないです.

$ sudo mount -t cifs -o vers=3.0,username=[share_name],password=[share_name pass],uid=[user_name1],gid=[user_name1],file_mode=0600,dir_mode=0700 //[IPアドレス]/Work/[user_name1] /mnt/Work/[user_name1]
$ sudo mount -t cifs -o vers=3.0,username=[share_name],password=[share_name pass],uid=[user_name2],gid=[user_name2],file_mode=0600,dir_mode=0700 //[IPアドレス]/Work/[user_name2] /mnt/Work/[user_name2]

fstabで自動化

$ sudo vi /etc/fstab 

で最後に記述していきます.

ログイン情報の別ファイル化

(テスト時には叩いていますが,)
直接passwordをfstabに書くのは(コマンドとして叩かれるのは)アレなので,

$ sudo vi /etc/.workpassword
/etc/.workpassword
username=[share_name]
password=[share_name pass]

などと適当なファイルに用意.

fstabへの記述

/etc/fstab
//[IPアドレス]/Work/[user_name1] /mnt/Work/[user_name1] cifs vers=3.0,credentials=/etc/.workpassword,uid=[user_name1],gid=[user_name1],file_mode=0600,dir_mode=0700 0 0
//[IPアドレス]/Work/[user_name2] /mnt/Work/[user_name2] cifs vers=3.0,credentials=/etc/.workpassword,uid=[user_name2],gid=[user_name2],file_mode=0600,dir_mode=0700 0 0

こんな感じで各ユーザだけがアクセス出来るように設定.

Ubuntu側の設定(bind)

冒頭に書いた通り,JupyterHubで設定したルートディレクトリからアクセス出来るよう,マウントし直します.
~/notebooksの直下にてwin_workという名前でアクセスできるようにしました.

マウントポイント作成

$ sudo mkdir /home/[user_name1]/notebooks/win_work
$ sudo chown -R [user_name1]:[user_name1] /home/[user_name1]/notebooks/win_work
$ sudo mkdir /home/[user_name2]/notebooks/win_work
$ sudo chown -R [user_name2]:[user_name2] /home/[user_name2]/notebooks/win_work

chownが必要かは未確認です.mount時のuid等で上書きされるかも知れない.

fstabでのbind

bindをfstabに追記します.

/etc/fstab
/mnt/Work/[user_name1] /home/[user_name1]/notebooks/win_work auto bind 0 0
/mnt/Work/[user_name2] /home/[user_name2]/notebooks/win_work auto bind 0 0

Jupyterからの確認

うまく出来ていれば,
jupyter_moz.png
このように直下に見えているはず.
また,Terminal接続したとしても,Windows側の設定同様に他のユーザのディレクトリは見られないはず.

~$ cd /mnt/Work/
/mnt/Work/$ ls
[user_name1]  [user_name2]
/mnt/Work/$ cd [user_name2]/
bash: cd: [user_name2]/: 許可がありません
/mnt/Work/$ cd [user_name1]/
/mnt/Work/[user_name1]/$

おまけ:拡張セッションモードでのファイル共有

今回のサーバ用途な目的にはそぐわないですが,
単に手元でHyper-V上OSとファイル共有したいだけであれば,
Windows Server 2019でHyper-V上にUbuntu18.04をインストール
でlinux-vm-toolsを用いて使えるようにしたEnhanced Session Modeの機能を使うのが手っ取り早いです.

「セッション設定の編集」から,
Local.png
ローカルリソースに共有したいものを選んであげれば,
Local2.png
このように
Local3_moz.png
/home/[ログインユーザ名]/shared-drives
へマウントされています.

fararrow
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away