はじめに
Debian系のLinuxからWindowsの共有フォルダを使えるようにする方法です。
逆の場合は、apt install samba
とかで検索すると良さげです。
前提条件
プレースホルダとか書くのが面倒なので、仮の設定を用意します。
Windows側
- 共有フォルダ:
C:\share\
- 共有フォルダ用のユーザー名:
shareuser
-
shareuser
のパスワード:sharepasss
- ファイアウォールでport445を許可するか「ファイルとプリンターの共有」ルールを有効にする
- ipアドレス:
192.168.0.123
-
shareuser
はMicrosoftアカウントと連携していないローカルアカウントである必要あり - 本記事のための検証では
net user /add shareuser sharepasss
でユーザー作成を行った -
C:\share\
ではshareuser
には、お好みに応じて「フルコントロール・変更・読み取り」を許可します
Linux側
- マウント用フォルダ:
/mnt/win/share/
- 共有フォルダ用のユーザー名:
kali
-
kali
が所属するグループ名:root
インストールするもの
Linuxにcifs-utils
とsmbclient
をインストールします。
apt install cifs-utils smbclient
マウント
Linuxでmount
を実行します。
mount -t cifs -o "username=shareuser,password=sharepass,uid=kali,gid=root" //192.168.0.123/share /mnt/win/share
アンマウント
マウントした後に設定ミスが発覚した場合、上書きしようとしてもbusy
と表示されます。
そこで、一度umount
を使って設定を消します。unmountではなくumountという綴りなのは要注意です。
umount /mnt/win/share
うまくいかないときに頼るもの
Linux側ではdmesg
エラーログが見れるので、tail
を利用して、リアルタイムで確認しながら、別ウィンドウでbashを開きmount
コマンドを実行してみます。
dmesg -H | tail
また、Linux側からnmap
を実行してみて、445ポートがオープンかどうか確認します。
nmap 192.168.0.123
などとやってみて、
PORT STATE SERVICE
445/tcp open microsoft-ds
445/tcpがopenなことが見れます。
ちなみに、Windows側のFireWall設定はこんな感じです。
うまく接続できているときに、Linux側でmount
コマンドを下記のように実行すると、
mount
最後のほうに上記でマウントしたものが追記されていることが分かります。
//192.168.0.123/share on /mnt/win/share type cifs (rw,relatime,vers=3.1.1,cache=strict,username=share,uid=1000,forceuid,gid=0,forcegid,addr=192.168.0.123,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=4194304,wsize=4194304,bsize=1048576,echo_interval=60,actimeo=1)
まとめ
mountコマンド実行がうまくいけば、Linux側から/mnt/win/share
にアクセスすると、C:\share
の内容を書き換えることが出来ます。
Excelsior!