Samba 解决了 Linux 和 Windows 之间文件共享的问题,是基于 SMB 协议开发的 SMBserver 服务程序,是一款开源的文件共享软件。
1. 安装
实验环境采用 Ubuntu-16.04 trustry 版本,安装指令如下:
$ apt install -y samba
2. 配置
查看非注释配置文件的方法:
$ grep -v "^#" /etc/samba/smb.conf | grep -v "^$" | grep -v "^;"
$ testparm -s /etc/samba/smb.conf
2.1 创建账户信息
创建一个能够访问 Samba 服务的用户,名称为 docker(或者是已经存在的用户) ,注意第一次创建用户需要使用 -a 参数写进数据库。
$ pdbedit -a -u docker
注意:这里的账户必须在系统中存在才行,若系统中不存在这个用户的话,会报如下错误:
Failed to add entry for user docker.
补充指令如下(可以使用 pdbedit --help 查看):
$ pdbedit -x docker (delete the user)
$ pdbedit -Lv (list the detailed information of users)
2.2 创建共享文件夹
创建共享文件时,需要考虑的问题有:
- 考虑读写权限的问题。
- 考虑由于SELinux 的问题。
$ mkdir /home/database # 创建共享文件夹
$ chown -Rf docker:docker /home/database # 设置共享文件夹的权限
2.3 配置文件修改
配置文件在 /etc/samba/smb.conf 文件下,我们需要对配置文件中的一些信息进行修改,其中,[homes] 参数是配置家目录的共享信息,[prints] 是用来访问打印机的共享信息。添加共享配置信息如下:
[share]
comment = Share Folder require password
browseable = yes
path = /home/database
create mask = 0777
directory mask = 0777
valid users = docker # 这里的用户设置为允许登录的用户
public = yes
writable = yes
available = yes
重新启动 samba 服务。
$ /etc/init.d/smbd restart (reload)
2.4 Windows 客户端进行访问
访问步骤如下:
- 右键计算机,选择映射网络驱动器。
- 在对话框中输入 Samba 服务器的共享目录:\192.168.2.13\share ,文件夹是在配置文件中[share]中的内容,不是对应服务器上实际存在的目录。
- 输入用户名及密码,访问成功。
3. 错误汇总
以下为在服务器配置的过程中,遇到的问题积累如下:
drwxrwxrwx 3 docker docker 4096 4月 15 22:00 database/
权限问题,如上述代码。文件夹属主: docker 属组: docker ,且属主权限为读写执行,属组权限为读写执行,这里为了方便配置和访问设置为完全权限。
3.1 Windows 访问时提示: 找不到网络路径
- 文件夹的权限问题。(多级目录时,只要修改最后一级目录的权限即可)
- 查看访问路径的是不是共享文件夹,还是访问了虚机中实际存在的文件夹。
3.2 Windows 访问时提示: 拒绝访问
- 一般为文件夹的权限问题,查看权限。
4. 参考资料
[2] https://www.samba.org/samba/docs/Samba24Hc13.pdf