本文链接: https://blog.csdn.net/xietansheng/article/details/83932033
Samba 是 Linux 和 Unix 系统上实现 SMB协议 的一款免费软件,能在 Windows、Linux、Mac 系统上访问 Linux 系统上的的共享文件。
相关网站:
sudo apt-get update
sudo apt-get install samba
安装过程中如果某项依赖无法安装或需要指定的版本,可以先逐个安装依赖后再安装 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 // 删除用户
共享文件夹必须保证访问的用户(Samba用户名对应的Linux系统用户)拥有读写权限。
sudo mkdir /home/用户名/ShareDemo // 创建一个用于共享的文件夹
sudo chomd 777 /home/用户名/ShareDemo // 设置该文件夹的权限使其让所有用户可读可写可运行
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
部分字段说明:
其他配置参考:samba.org、ubuntu/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 是否正在运行
假设 Samba 服务器的 IP 地址为192.168.0.100
,共享文件夹的名称为ShareDemo
\\192.168.0.100
或 \\192.168.0.100\ShareDemo
,确定;(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]" // 下载文件
smb://192.168.0.100
或 smb://192.168.0.100/ShareDemo
;