准备2台centos7,一台作为服务端,一台作为客户端
客户端安装软件samba-client,cifs-utils
安装服务端软件samba
yum install samba -y
通过rpm -ql samba
找到下面两个核心服务,第一个为名字解析服务,第二个为主要服务
/usr/lib/systemd/system/nmb.service
/usr/lib/systemd/system/smb.service
配置文件路径
/etc/samba/smb.conf
启动服务
systemctl start smb

创建samba账户用来从windows端登陆
首先准备一个linux操作系统账户,再将该账户成为samba账户
useradd -r -s /sbin/nologin smb1(注意,不要加-r选项,加上不会生成家目录)
smbpasswd -a smb1,随后设置口令即可
smbpasswd smb1,修改smb1口令
smbpasswd -x smb1 删除smb1用户
pdbedit -L查看有哪些samba账户
账户存放类型数据库文件,路径/var/lib/samba/private/passdb.tdb

删除缓存的连接
在windows客户端命令行输入:net use 查看
net use \192.168.56.71\IPC$ /del 删除192.168.56.71\IPC$对应远程的那一列

在windows文件资源管理器中输入\192.168.56.71即可输入相应的用户名和密码查看,目前默认有一些隐藏文件

配置文件
/etc/samba/smb.conf

修改1,工作组名,在客户端通过smbclient -L 192.168.56.71 -Usmb1%123456可查看所属组为workgroup

修改2,可以通过名称进行访问
注意修改完成重启服务
systemctl restart smb(开启445和139端口)
systemctl restart nmb(开启137和138端口)
在windows命令行通过ping smbserver7可ping通,也可以通过\SMBSERVER7进入相关账户的共享目录
或者在windows资源管理器通过\SMBSERVER7进入相关账户的共享目录,通过名字的解析比较慢

另外还可以实现某些用户的可写,某些组的可写,暂不做详细介绍,write list = 用户名 @组名
也可以实现相关日志的记录,如下,记录级别为2

也可实现匿名验证登陆,暂不做详细介绍,public =yes

在文件尾部加如上图所示:其中[share1]定义了共享文件夹的名称为share,path定义了服务端实际要共享文件夹的目录,read only = no 表示允许客户端对共享目录进行写操作(注意从文件系统本身权限和服务本身的权限两方面考虑)!!!!

以上对所有用户读写权限相同
可以指定特定有效用户进行访问,赋予不同的读写权限
valia users=用户账号

read only =yes
write list = 用户账号 @组名
对指定用户赋予写权限,其他只读

也可以向ftp实现匿名登陆
public=yes
加入此行表示对共享文件实现匿名用户登陆
在Linux客户端通过smbclient //192.168.56.72/share1实现免账号密码登陆,实验过程中windows中还是出现需要用户名密码验证登陆
browsable=no对该共享文件隐藏显示
smbstatus查看连接状态
linux客户端登陆 smbclient //192.168.56.72/share1 -U smb1%123456
smbclient -L 192.168.56.72
挂载至本地客户端方便访问
mount -o username=smb1,password-123456 //192.168.56.72/share1 /挂载至客户端目录,实验过程中centos7为服务端,centtos6客户端中挂载有问题,需加set=ntlmssp这一项和安全相关和centos7统一
挂载后在客户端直接cd /客户端挂载目录,即可访问服务端共享文件内容
可以对不同的用户建立独立配置文件访问设置权限,暂不做详细介绍
在主配置文件global中加入config file=/etc/samba/conf.d/%U 用户独立的配置文件,在/etc/samba/conf.d该路径下分别建立各个用户名称命名的配置文件并分别设置共享属性