当 CIFS 遇到登录了微软账户的 Windows

该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/post/2023/10/14/cifs-with-windows-live-account/

今天折腾了半天 CIFS,终于成功连上了 Windows 的共享文件夹。

今天在 HyperV 上安装了 Archlinux,尝试通过 CIFS 访问 Windows 11 宿主机的共享目录时,死活报验证失败,因为我 Windows 11 用的是微软账户登录……

最后创建了一个新的本地用户,授权并分享给它,终于成功!

也有人说关闭 Windows Hello PIN,就可以使用微软账户+口令验证了 (https://superuser.com/a/1358547)。不过我觉得还是创建个专门的用户简单点……

FUCK YOU MICROSOFT!

说重点,使用 CIFS 挂载的命令为:

1mount -t cifs \
2    //HOST-PC-NAME/SharedFolderName \
3    /mnt/mount-point-dir \
4    -o credentials=/root/.windows_credentials,ip=192.168.22.1,iocharset=utf8,file_mode=0600,dir_mode=0700,uid=1000,gid=1000

其中:

  • uid=1000,gid=1000 是 Linux 中的用户 ID 和组 ID,方便非 root 用户访问挂载的目录。

  • ip=192.168.22.1 是宿主机的 IP,通过 ipconfig 查询宿主系统在虚拟网络下的 IP 即可。

  • /root/.windows_credentials 是你的 Windows 用户凭据文件,里面格式如下:

    1username=the-username-on-windows-host-system
    2password=the-login-password-of-user
    

此外,如果想要配置 /etc/fstab 让它自动挂载,那么参考配置如下:

1//HOST-PC-NAME/SharedFolderName  /mnt/mount-point-dir cifs credentials=/root/.windows_credentials,ip=192.168.22.1,iocharset=utf8,file_mode=0600,dir_mode=0700,uid=1000,gid=1000,x-systemd.automount 0 0

此处须注意的是 x-systemd.automount 选项,缺少这个选项无法在系统启动时自动挂载 (https://unix.stackexchange.com/a/561661)。

comments powered by Disqus