在ubuntu上创建自己的samba服务器

samba

类Unix(Gnu/Linux)操作系统上用来和标准Windows文件系统互相通信的一种程序套件;Samba允许类Unix系统和Windows系统共享文件和打印机,忽略两个系统间的差异性,从而实现共存。

在ubuntu上安装Samba

1
sudo apt update && sudo apt install -y samba

修改配置文件,设置共享目录

1
2
# 创建共享目录
$ mkdir /tmp/share
1
2
# 将共享目录添加到配置文件中
$ sudo vim /etc/samba/smb.conf

将下面的内容追加到文件末尾:

1
2
3
4
5
[share]
comment = Samba share directory # 共享目录说明
path = /tmp/share # 共享目录的系统路径
read only = yes # 是否只读
browsable = yes # 是否可浏览

修改默认端口(适用于公网访问的场景,内网访问可以不用修改)

1
$ sudo vim /etc/samba/smb.conf

将下面的内容追加到[global]部分的末尾(如果端口配置已存在,则直接修改端口号)

1
2
3
[global]
...
smb ports = 4450 1390 #想要指定的端口号,原本为445 139

重启smbd守护进程

1
$ sudo systemctl restart smbd

查看修改后的端口号是否生效

1
2
$ ss -nltp | grep 4450
$ ss -nltp | grep 1390

配置防火墙ufw

1
2
3
4
# 如果开启了ufw,则需要将samba服务添加到允许访问服务列表中
sudo ufw allow samba
# 如果重新配置了端口,则需要指定允许访问的端口号
sudo ufw allow [port] # 可以在端口号后面加上tcp或者udp,如1390/tcp、1390/udp

创建samba用户账户

samba默认不使用系统账户,因此,我们需要为共享目录设置一个用户名和密码:

1
2
sudo smbpasswd -a $USER
# 该命令会将当前用户加入到samba的用户中,并提示设置该用户对应的密码

验证samba服务的可用性

1
2
3
4
5
sudo apt install smbclient
# 验证可用的samba共享目录
smbclient -L samba_server_ip
# 如果修改了默认端口号,还需要手动指定端口号
smbclient -p 1390 -L samba_server_ip

如果服务正常的话,会出现如下内容:

1
2
3
4
5
6
7
8
9
Enter WORKGROUP\pengkai's password: 

Sharename Type Comment
--------- ---- -------
sambashare Disk Samba And linux
www-data Disk apache web root
print$ Disk Printer Drivers
IPC$ IPC IPC Service (kyleVps server (Samba, Ubuntu))
SMB1 disabled -- no workgroup available

在终端中连接samba共享目录

1
2
3
4
5
6
7
8
9
10
11
smbclient -U [user] [-p port] //[samba_ip]/[share_directory] 
# 上述命令需要指定登陆用户和samba服务器ip以及共享目录,随后系统会提示输入密码
# 密码验证通过之后会进入smb的命令行交互界面:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Sun Feb 21 18:42:49 2021
.. D 0 Sun Feb 21 18:42:18 2021
Test File N 20 Sun Feb 21 18:42:49 2021

971515904 blocks of size 1024. 843676384 blocks available
smb: \>

将samba挂载至指定目录下

1
未完待续

至此,samba的安装、配置和使用就说完了。