Linux:Samba 文件共享服务器的搭建与访问

本文链接: https://blog.csdn.net/xietansheng/article/details/83932033

Samba 是 Linux 和 Unix 系统上实现 SMB协议 的一款免费软件,能在 Windows、Linux、Mac 系统上访问 Linux 系统上的的共享文件。

相关网站:

  • https://www.samba.org
  • http://wiki.ubuntu.org.cn/Samba
  • https://help.ubuntu.com/community

1. Samba 服务端(Ubuntu)

1.1 使用 apt-get 命令安装 Samba:

sudo apt-get update
sudo apt-get install samba

安装过程中如果某项依赖无法安装或需要指定的版本,可以先逐个安装依赖后再安装 samba。

1.2 创建 Samba 访问账户

先创建 Samba用户,后面配置共享文件夹时需要使用。

/*
 * 创建一个Linux系统用户,不需要指定密码,该用户用于添加到 Samba 中
 * 也可以不创建,直接使用已存在的Linux系统用户。
 */
sudo useradd user01

/*
 * 添加一个名称为 user01 的 Samba用户,回车后设置该Samba用户的密码,
 * 该密码是Samba用户的独立密码,与对应的Linux系统用户密码不同。
 * 
 * 注意:
 * 这里添加的 Samba用户名 “user01” 必须是已存在的当前Linux系统用户名,即 /etc/passwd 文件中存在的用户名,
 * 也可以通过 sudo useradd user01 新建一个用户,不需要指定密码,则该用户将只能从远程访问,不能从本机登录。 
 */
sudo smbpasswd -a user01

smbpasswd 用户操作常用命令:

smbpasswd -a username           // 增加用户
smbpasswd -d username           // 冻结用户,冻结后不能在登录了
smbpasswd -e username           // 恢复用户,解冻后解冻
smbpasswd -n username           // 把用户的密码设置成空
smbpasswd -x username           // 删除用户

1.3 创建 共享文件夹

共享文件夹必须保证访问的用户(Samba用户名对应的Linux系统用户)拥有读写权限。

sudo mkdir /home/用户名/ShareDemo          // 创建一个用于共享的文件夹
sudo chomd 777 /home/用户名/ShareDemo      // 设置该文件夹的权限使其让所有用户可读可写可运行

1.4 配置 共享文件夹

Samba的基础配置文件: /etc/samba/smb.conf

// 先备份默认配置,防止误删或误改
// 如果没有备份,又被误删,也可以尝试执行 “sudo cp /usr/share/samba/smb.conf /etc/samba/” 恢复
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

// 打开 Samba 的 smb 配置文件
sudo gedit /etc/samba/smb.conf

把以下内容添加到smb.conf配置文件的尾部(需要共享多个文件夹,可配置多个)

[ShareDemo]
    comment = Linux Shared Folder
    path = /home/用户名/ShareDemo
    valid users = user01
    public = no
    read only = no
    create mask = 0700
    directory mask = 0700
    available = yes
    browseable = yes
    display charset = UTF-8
    unix charset = UTF-8
    dos charset = cp936

部分字段说明:

  • [ShareDemo]: 共享名称(共享文件夹的名称)
  • comment: 描述
  • path: 共享文件夹的路径
  • valid users: 可访问的用户,多个用户用,隔开(使用上面步骤创建的 Samba用户名)
  • public: 访问是否不需要密码
  • read only: 是否只读
  • create mask: 文件权限设置
  • directory mask: 文件权限设置
  • available: 是否有效
  • browseable: 是否可浏览,no表示隐藏,需要通过 IP+共享名称 进行访问
  • display charset、unix charset、dos charset: 这三个是为了防止出现中文目录乱码的情况

其他配置参考:samba.org、ubuntu/samba

1.5 Samba 服务的启动和停止

配置完 smb.conf 后,重启 Samba 服务:

// 重启服务
sudo service smbd restart

// Samba 服务重启后,可以使用下面命令检查 smb.conf 配置文件是否有语法错误
testparm

其他服务管理命令:

sudo service smbd start             // 启动
sudo service smbd stop              // 关闭 Samba 服务器:
sudo service smbd restart           // 重新启动 Samba 服务器:
sudo service smbd status            // 查看 Samba 服务状态
ps -aux | grep smbd                 // 查看 samba 是否正在运行

2. 访问 SMB 共享文件夹

假设 Samba 服务器的 IP 地址为192.168.0.100,共享文件夹的名称为ShareDemo

2.1 Windows 连接 SMB 共享文件夹

  • Windows键 + R,在打开的运行输入框中输入: \\192.168.0.100\\192.168.0.100\ShareDemo,确定;
  • 输入 samba 配置的 用户名 和 密码,确定;
  • 在列出的共享文件夹列表中选择要访问的文件夹。

2.2 Linux 挂载 SMB 共享文件夹

(1) 使用 mount 命令把指定的 SMB共享文件夹 挂载到本地文件系统的一个文件夹

// 先创建一个用于挂载的空文件夹
sudo mkdir /mnt/ShareDemo

// 挂载操作
sudo mount -t smbfs -o username=用户名,password=密码 //192.168.0.100/ShareDemo /mnt/ShareDemo

// 有的系统已经不能识别 smbfs 文件系统,用 cifs 代替 smbfs(个人感觉此方法成功概率较高)
sudo mount -t cifs -o username=用户名,password=密码 //192.168.0.100/ShareDemo /mnt/ShareDemo

// 挂载之后,使用 umount 命令可以卸载
sudo umount /mnt/ShareDemo

(2) 使用 smbclient 命令访问指定的 SMB共享文件夹

// 如果没有安装 smbclient 客户端,需要先安装
sudo apt-get install smbclient

// 列出所有共享文件夹
smbclient -L //192.168.0.100/ShareDemo -U 用户名

// 登录 SMB服务端,回车后输入密码,登录成功,然后用相关命令操作(get下载文件,用put上传文件, help查看支持的命令)
smbclient //192.168.0.100/ShareDemo -U 用户名

// 也可以用户名和密码一起输入(用%分隔),直接登录成功,然后进行相关命令操作
smbclient //192.168.0.100/ShareDemo -U 用户名%密码

// 也可以一句话登录成功后,直接执行命令,然后自动退出
smbclient //192.168.0.100/ShareDemo -U 用户名%密码 -c "put "               // 上传文件
smbclient //192.168.0.100/ShareDemo -U 用户名%密码 -c "get  [localname]"   // 下载文件

2.3 MAC 连接 SMB 共享文件夹

  • Finder右键 -> 连接服务器…;
  • 服务器地址输入: smb://192.168.0.100smb://192.168.0.100/ShareDemo
  • 选择“注册用户”,输入 samba 配置的 用户名 和 密码,点击“连接”;
  • 在列出的共享文件夹列表中选择要访问的文件夹。

你可能感兴趣的:(Linux)