Iawen's Blog

我喜欢这样自由的随手涂鸦, 因为我喜欢风......

Samba是在Linux系统上实现SMB(Session MessageBlock)协议的一个免费软件, 以实现文件共享和打印机服务共享, 是模仿Windows网上邻居的SMB的通讯协议, 将Linux操作系统"假装成"Windows操作系统, 通过网上邻居的方式来进行文件传输的。

1. 概述

1.1 服务器组件

samba有两个主要的进程smbd和nmbd。smbd进程提供了文件和打印服务, 而nmbd则提供了NetBIOS名称服务和浏览支持, 帮助SMB客户定位服务器, 处理所有基于UDP的协议。

1.2 配置文件

  • /etc/samba/smb.conf 这是samba的主要配置文件, 基本上仅有这个文件, 而且这个配置文件本身的说明非常详细。主要的设置包括服务器全局设置, 如工作组、NetBIOS名称和密码等级, 以及共享目录的相关设置, 如实际目录、共享资源名称和权限等两大部分。

  • /etc/samba/lmhosts 早期的 NetBIOS name 需额外设定, 因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 檔。 事实上它有点像是 /etc/hosts 的功能! 只不过这个 lmhosts 对应的主机名是 NetBIOS name 喔! 不要跟 /etc/hosts 搞混了! 目前 Samba 预设会去使用你的本机名称 (hostname) 作为你的 NetBIOS name, 因此这个档案不设定也无所谓。

  • /etc/sysconfig/samba 提供启动 smbd, nmbd 时, 你还想要加入的相关服务参数。

  • /etc/samba/smbusers 由于 Windows 与 Linux 在管理员与访客的账号名称不一致, 例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系, 可使用这个档案来设定

  • /var/lib/samba/private/{passdb.tdb,secrets.tdb} 管理 Samba 的用户账号/密码时, 会用到的数据库档案;

  • /usr/share/doc/samba-<版本> 这个目录包含了 SAMBA 的所有相关的技术手册喔! 也就是说, 当你安装好了 SAMBA 之后, 你的系统里面就已经含有相当丰富而完整的 SAMBA 使用手册了! 值得高兴吧! ^_^, 所以, 赶紧自行参考喔!

1.2 安装samba

yum -y install samba samba-client samba-common
rpm -qa | grep samba

2. 配置Samba

2.1 创建共享文件夹

mkdir -p /data/mark
# 修改文件夹权限

chown mark:mark /data/mark
chmod 770 /data/mark

2.2 创建用户

# 添加用户
useradd -s /sbin/nologin mark 

#添加samba密码
smbpasswd -a mark

2.3 配置

[mark]
comment = Shared Directories
path = /data_backup/shared/backup/mark
admin users = mark
valid users = @mark
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
 
# user模式不需要输入用户名和密码登录
[global]
security = user
map to guest = bad user

[myshared]
guest ok = yes

2.4 启动服务

systemctl start smb
systemctl start nmb

3. 问题

3.1 Win10无法访问Samba共享文件夹

  • 打开文件共享 0

  • 勾选SMB 1.0/CIFS 文件共享支持 1