受欢迎的博客标签

网络存储network storage - Linux访问Windows共享文件和文件夹方案

Published

Linux访问Windows共享文件和文件夹方案

 

samba SMB / CIFS 网络共享,三者之间的关系

Samba is made by linux/unix。是一种局域网共享协议

SMB/CIFS is made by windows/microsoft。

 

SMB(协议)

SMB 是网络文件共享协议,CIFS 是 Linux 上常用的挂载工具名称,cifs-utils 用来在 Debian 12 上挂载 SMB 共享。

 

Samba(软件套件)
Linux 上实现 SMB 协议的软件套件,可以提供共享服务,也包含客户端工具。

 

CIFS (系统驱动)

Linux 内核使用 CIFS 文件系统驱动挂载 SMB 共享

 

cifs-utils(挂载工具)

Linux 使用 CIFS 驱动挂载 SMB 网络共享时所需的工具包

 

smbclient(命令行访问工具)

 

 

 

摘要:

在linux下需要访问windows的共享文件夹,可以使用mount挂载或者使用samba连接。

 

On Linux server

Samba

Installing CIFS Utils

sudo apt update
sudo apt install -y cifs-utils smbclient

 

smbclient --version
Version 4.22.11-Debian-4.22.11+dfsg-0+deb13u1

mount.cifs -V
mount.cifs version: 7.4

Samba服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,并将Linux打印机作为CIFS/SMB打印机共享进行共享。

 

step 1、mount挂载 - 创建目录并挂载

挂载目录统一放在 /mnt/

Creating a Mount Point

首先创建被挂载的目录:

$ sudo mkdir -p /mnt/winstock

将共享文件夹挂载到windows文件夹:

$ sudo mount -t cifs -o username=share,password=share //192.168.66.198/share ./windows

其中几个参数表示含义:

cifs:Common Internet File System,可以理解为网络文件系统。
usrname:访问共享文件夹的用户名
password:访问密码
//192.168.66.198/share:表示网络文件夹的地址,注意这里最后不能加/,如果是//192.168.66.198/share/则会报如下错误:mount: //192.168.66.198/share/ is not a valid block device

Tips:使用mount挂载的方法在系统重新启动后就会失效,如果希望开机时自动挂载,将下面设置加入/etc/fstab文件最后面就可以了。

//192.168.66.198/share /home/windows cifs defaults,username=share,password=share 0 2
其中/home/windows表示挂载点,就是上面windows目录的完整路径

 

使用凭证文件(Credentials File)

Linux 开机自动挂载 Windows 10 目录,过去很多人会直接把密码写在 /etc/fstab 里,很不安全。现代的代替方案是使用凭证文件(Credentials File)

sudo nano /etc/win-credentials

username=你的Windows用户名
password=你的Windows密码
# 如果有工作组可以加上,没有就删掉这行
domain=WORKGROUP 

# 只允许 root 用户读取
sudo chmod 600 /etc/win-credentials

 

检查挂载是否成功

# 直接列出你挂载的目标目录,看看里面有没有你的 Windows 文件
ls -l /mnt/win_share

# 查看当前系统挂载的磁盘列表
df -h

output

文件系统                 容量  已用  可用 已用% 挂载点
//192.168.1.X/shared_dir  256G   50G  206G   20% /mnt/win_share

# 如果有输出内容,说明驱动正在正常工作
mount | grep cifs

# 如果 ls 里面是空的,用下面这个命令强制让它报错,看看底层卡在了哪里
# -v (verbose) 代表详细模式。挂载成功,它会打印出 “successfully mounted” 的提示;如果失败,它会出详细的错误日志。
sudo mount -v -a

 

 

二、Linux client使用samba连接Windows共享

 

玩Linux的时候,如Fedora、Ubuntu、CentOS等,该怎样才能访问Windows计算机上的文件呢?其实Windows共享的协议Linux是完全支持,

在Linux端,需要安装Samba客户端工具。

不同的Linux发行版有不同的包管理器,比如Ubuntu用apt,CentOS用yum。安装cifs-utils包也很重要,因为它提供了挂载SMB共享所需的工具。

在访问Windows共享资料之前,请确保Windows共享是可用的,这里就不再赘述该怎样设置Windows共享了,那可是另外一个课题。

Linux访问Windows共享或者Linux共享资料给Windows时,其实都是在使用一个叫做Samba的软件,这个软件已经使用多年,稳定性和可靠性得到了很好的验证,也是很多网络NAS常用的软件。

我们这里要讲的Linux需要用到的工具就是Samba软件中的一种,samba-client。

 

samba就是让windows和unix系列os之间的文件可以互相访问的软件。使用samba访问windows的共享文件夹,需要安装smbclient。

sudo apt update
sudo apt install smbclient cifs-utils

Note

 ​​smbclient(通常来自 samba-client包)​​ 来使用命令行交互式地访问 SMB 共享(像 FTP 一样)。
 ​​cifs-utils包​​ 使用 mount.cifs命令将 SMB 共享挂载到你的本地文件系统树中(例如挂载到 /mnt/smb),这样你就可以像使用本地文件夹一样使用它。

 

on Windows 10

 

Step 1: Set Up the Shared Folder on Windows 10

 

Create a shared folder on Windows 10

 

https://www.iaspnetcore.com/blogpost-693ef2c7405d3234119658ec-create-a-shared-folder-on-windows-10

 

配置 /etc/fstab 的开机自动挂载

 

Step 3 – Editing the fstab file

sudo cp /etc/fstab /etc/fstab.old

sudo nano /etc/fstab

//YourServer/Photos /media/share/Photos cifs vers=3.0,sec=ntlmssp,credentials=/etc/samba/credentials/nas,iocharset=utf8,uid=1000,gid=1000,file_mode=0664,dir_mode=0775,_netdev,nofail 0 0

 

Note

1./etc/fstab 是 Linux 系统中用来存放文件系统静态挂载信息的配置文件。全称是 File Systems Table(文件系统表)

2.平时通过 mount 命令挂载是临时的,重启后会失效

3.开机自动挂载:系统在启动时会读取该文件,并自动将指定的磁盘分区、移动硬盘、光驱或网络共享(如 NFS、Samba)挂载到对应的目录上

 

SMB 3.0 + cifs-utils 挂载 + systemd 管理 Python 下载程序。这是你当前架构最直接、维护成本较低的方案。

 

列出主机中的共享文件夹

smbclient -L //192.168.2.21   -U '服务器名\username'   -m SMB3

 

 

Linux怎样访问Windows共享文件和文件夹

https://jingyan.baidu.com/article/574c521911f0866c8d9dc1a3.html

linux 访问windows共享文件夹的方法

https://www.cnblogs.com/xcb0730/p/9752208.html

 

/etc/fstab使用说明

https://www.cnblogs.com/FengGeBlog/p/10178824.html