参考书籍《Linux就该这么学》

基于Ubuntu搭建samba服务器

安装samba

Ubuntu示例:

sudo apt update
 sudo apt install samba

添加samba用户

可通过 smbpasswdpdbedit 创建samba服务器的用户
注意点:

  • 用户名必须在系统中已存在
  • 若不存在,则可以通过 useradd (该命令必须要root用户才能执行)命令添加
  • 考虑到安全问题,使用 useradd 的时候尽量不要给shell权限

以下是添加一个用户名为 noSmileCat 的samba用户,且不考虑安全问题的示例

su root
useradd noSmileCat					# 在系统中添加一个名为noSmileCat的普通用户
pdbedit -a -u noSmileCat			# 创建一个名为noSmileCat的samba用户,其后会提示输入两次密码
mkdir -p /home/noSmileCat/share		# 创建一个用于共享的目录
chown noSmileCat:noSmileCat /home/noSmileCat/share		# 设置共享目录所属组跟用户

配置samba服务器

配置文件说明

配置文件:/etc/samba/smb.conf
配置文件中有许多注释,可通过下面命令去掉注释

su root
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
cat /etc/samba/smb.conf

执行完上述命令后可看到剩下的只有寥寥数十行

参数说明

参数

作用

workgroup = MYGROUP

工作组名称

server string = Samba Server Version %v

服务器介绍信息,参数%v为显示SMB版本号

log file = /var/log/samba/log.%m

定义日志文件的存放位置与名称,参数%m为来访的主机名

max log size = 50

定义日志文件的最大容量为50KB

security = user

安全验证的方式,总共有4种:share、user、server、domain1

passdb backend = tdbsam

#定义用户后台的类型,共有3种:smbpasswd、tdbsam、ldapsam2

load printers = yes

设置在Samba服务启动时是否共享打印机设备

cups options = raw

打印机的选项

comment = Home Directories

描述信息

browseable = no

指定共享信息是否在“网上邻居”中可见

writable = yes

定义是否可以执行写入操作,与“read only”相反

path = /home/database

共享目录为/home/database

public = no

关闭“所有人可见”

上表中,加粗字体尤为重要。下面是一个有效的共享目录配置,可把下方的内容添加到/etc/samba/smb.conf末尾后重启samba服务器使配置生效

[Android Source]					# 再网络中显示的名字
   workgroup = noSmileCat			# 工作组名字
   security = user 					# 需要用户名和密码才能访问,若希望能让任何人访问,则把user替换成share即可
   passdb backend = smbpasswd		# smbpasswd添加的samba用户才有效,其他用户无法访问共享目录
   writable = yes					# 给予写入权限,若希望只读,则把yes改成no即可
   path = /home/noSmileCat/share	# 要共享的linux目录位置

重启samba服务器

修改完配置文件后需要重启samba服务器才能生效,重启命令如下

sudo systemctl restart smbd.service

设置开机自启动samba服务器

sudo systemctl enable smbd.service

Windows访问共享目录

打开资源管理器,且在地址栏输入linux的ip。例假如Linux的ip是192.168.8.18,则在地址栏输入\\192.168.8.18,注意别漏了反斜杠,如下图

linux samba 用户列表 linux创建samba用户_linux samba 用户列表

常见问题

Q:确认samba服务器配置没问题,但是Windows始终无法正常连接上

  1. 确认Windows能在网络上发现Linux,可ping Linux的ip查看网络是否连通,不通则检查网络
  2. 重启Windows或断开网络后重连,修改了samba配置且重启了samba服务器,Windows端不一定能反应过来,重置下即可

  1. security 安全验证的四种方式说明。share:来访主机无需验证口令;比较方便,但安全性很差。user:需验证来访主机提供的口令后才可以访问;提升了安全性。server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)。domain:使用域控制器进行身份验证。 ↩︎
  2. smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码。tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户。ldapsam:基于LDAP服务进行账户验证。 ↩︎