本文链接: https://blog.csdn.net/xietansheng/article/details/83932033
Samba 是 Linux 和 Unix 系统上实现 SMB协议 的一款免费软件,能在 Windows、Linux、Mac 系统上访问 Linux 系统上的的共享文件。
相关网站:
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 <filename>" // 上传文件
smbclient //192.168.0.100/ShareDemo -U 用户名%密码 -c "get <filename> [localname]" // 下载文件
2.3 MAC 连接 SMB 共享文件夹
- Finder右键 -> 连接服务器…;
- 服务器地址输入:
smb://192.168.0.100
或smb://192.168.0.100/ShareDemo
; - 选择“注册用户”,输入 samba 配置的 用户名 和 密码,点击“连接”;
- 在列出的共享文件夹列表中选择要访问的文件夹。