参考书籍《Linux就该这么学》
基于Ubuntu搭建samba服务器
安装samba
Ubuntu示例:
sudo apt update
sudo apt install samba
添加samba用户
可通过 smbpasswd 或 pdbedit 创建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,注意别漏了反斜杠,如下图
常见问题
Q:确认samba服务器配置没问题,但是Windows始终无法正常连接上
- 确认Windows能在网络上发现Linux,可ping Linux的ip查看网络是否连通,不通则检查网络
- 重启Windows或断开网络后重连,修改了samba配置且重启了samba服务器,Windows端不一定能反应过来,重置下即可