はじめに
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!

