#samba 简介#
- Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
- SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
samba监听端口
- TCP——139、445,tcp端口相对应的服务是smbd服务,其作用是提供服务器中文件、打印资源的共享访问;
- UDP——137、138,udp端口相对应的服务是nmbd服务,起作用是提供基于NetBOIS主机名称的解析。
搭建要求
- 搭建匿名用户共享服务器
- 搭建用户认证共享服务器
- 如下要求:
- 不论是匿名用户还是用户认证共享,均要在客户机验证结果;
- 用户认证共享需要映射系统用户为一个虚拟用户。
搭建环境
- 本实验服务器系统版本为redhat 6.5版本
- 实验前关闭防火墙以及selinux
- 实验所用地址如下:
- 服务器地址为172.16.12.128/24
- 客户端地址为172.16.12.129/24
- 注意系统版本;
- 主配置文件/etc/samba/smb.conf
- 用户映射文件/etc/ samba/smbusers
- 请先检查地址能否相互ping通
搭建步骤
搭建匿名用户共享服务器
- 首先在服务器端安装samba服务,
yum -y install samba-*
- 在服务器端创建共享目录
mkdir -p /samba/test
- 在服务器端修改/etc/samba/smb.conf配置文件,
[globol]
map to guest = Bad User #设置匿名用户
[test]
comment = test #共享目录的注释
path = /samba/test #共享目录的路径
browseable = yes #共享目录可见
public = yes #允许匿名用户访问
writable = yes #允许用户在目录下写
guset ok = yes #允许所有人访问共享目录
- 在服务器端修改权限,将/samba/test目录的其他人权限设置成rw,才能在客户端进行写操作,
chmod o+w /samba/test
- 测试配置文件是否有语法错误,(需要按回车键)
testparm
- 重新启动samba服务,
service smb restart
service nmb restart
- 查看端口是否开启,
ss -ntlp | grep smb
- 在客户端上安装samba-client,然后在客户端上进行验证,
- 交互式验证查看:
smbclient -L 172.16.12.129 -U 'Bad User'
- 交互式访问共享:(远程主机地址后接共享目录的名字,一般不用)
smbclient //172.16.12.129/test -U 'Bad User'
在服务器上查看创建的文件和目录,
- 挂载式访问共享:(远程主机地址后接共享目录的名字)
mount -t cifs //172.16.12.128/test /opt -o username='Bad User'
搭建用户共享服务器
- 创建用户,将用户设置为samba专用用户,并设置专用密码
useradd hello
smbpasswd -a hello
- 创建/samba/user_test共享目录,并将权限改为757。
mkdir /samba/user_test
chmod 757 /samba/user_test
- 假设将hello用户映射为tom用户,修改/etc/samba/smbusers文件添加如下内容:
echo 'hello = tom' > /etc/samba/smbusers
- 在服务器端修改配置文件/etc/samba/smb.conf内容,
[global]
username map = /etc/samba/smbusers #指定本地用户映射成虚拟用户的文件存放位置
[user_test]
comment = user_test
path = /samba/user_test
browseable = yes
writable = yes
write list = hello #指定hello用户进行读写访问,不管这个共享是否是只读文件
guest ok = yes
public = yes
- 检查配置文件,
testpram
- 重新启动服务,
service smb restart
service nmb restart
- 在客户端进行验证:
- 交互式验证查看,
smbclient -L 172.16.12.129 -U tom
- 交互式访问共享目录,(一般不用)
smbclient //172.16.12.128/user_test -U tom
注:用户名用映射用户登录
**交互式登录访问有问题,尚未解决,问题如下图:
- 挂载式访问共享目录,
mount -t cifs //172.16.12.128/user_test /opt -o username=tom,password=123456
创建目录进行查看效果:
- 挂载式共享创建 successful 目录,
- 服务端进行查看
设置指定用户访问共享文件夹
- 创建一个samba用户
[root@localhost ~]# useradd test
[root@localhost ~]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.
- 在etc/samba/smb.conf配置文件中加入“vaild users = hello”
[user_test]
comment = user_test
path = /samba/user_test
browseable = yes
public = yes
# writable = yes
guest ok = yes
write list = hello
valid users = hello #允许hello用户进行访问,其他用户不允许访问(添加到配置文件)
- 重新启动服务
[root@localhost ~]# service smb restart
Redirecting to /bin/systemctl restart smb.service
- 访问
搭建遇到的问题
- 版本问题,服务器端用的是redhat7.0版本,客户端用的是redhat6.5版本,在进行验证查看时出现如下图所示:(图片是做完实验之后截的,172.16.12.130就是服务器172.16.12.128)
- 之后创建一个版本相同的共享文件,交互式查看匿名用户能查看到结果,如图一,而samba用户查看不了结果,连交互式访问都不行,如图二,但挂载式访问都能够挂载,如图三,其原因尚未可知。
图一:
图二:
图三: