Samba
1、介绍
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件
目的:解决不同操作系统之间进行资源传递的问题
我们可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印
原理:
Samba 服务功能强大,这与其通信基于SMB 协议有关。SMB 不仅提供目录和打印机共享,还支持 认证、权限设置。在早期哈,SMB 运行于NBT 协议(NetBIOS over TCP/IP)上,使用UDP 协议 的137、138 及TCP 协议的139 端口,后期SMB 经过开发,可以直接运行于TCP/IP 协议上,没有 额外的NBT 层,使用TCP 协议的445 端口。
1、协议协商
2、建立连接
3、访问
4、关闭
端口:139、445
模式:C/S模式
扩展
NETBIOS协议 NetBIOS是Network Basic Input/Output System的简称,网络基本输入/输出系统协议。主要作用:通过NETBIOS协议获得计算机名称,然后把计算机名解析为对应IP地址。
使用场景
文件和打印机共享:文件和打印机共享是Samba 的主要功能,SMB 进程实现资源共享,将文件和 打印机发布到网络之中,以供用户可以访问。
身份验证和权限设置:smbd 服务支持user mode 和domain mode 等身份验证和权限设置模式,
通过加密方式可以保护共享的文件和打印机。
名称解析:Samba 通过nmbd 服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS 名解析为IP 地址。浏览服务:局域网中,Samba 服务器可以成为本地主浏览服务器(LMB),保存可用资源列表, 当使用客户端访问Windows 网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。
2、安装
安装包
安装包 | 说明 |
---|---|
samba.* | 安装包 |
samba-client.* | 客户端安装包 |
挂载之后安装
[root@qianshuiliyu ~]# yum -y install samba samba-client
启动
[root@qianshuiliyu ~]# systemctl restart smb
[root@qianshuiliyu ~]# systemctl enable smb
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
如果重启且不需要断掉服务,可接reload加载配置文件
[root@qianshuiliyu ~]# systemctl reload smb
查看端口
3、配置文件
查看配置文件
[root@qianshuiliyu ~]# ls /etc/samba/smb.conf
/etc/samba/smb.conf
4、客户端的使用
使用Linux客户端或windows都可以
关闭服务端的防火墙
1、linux客户端测试
smbclient -L 服务器ip
[root@qianshuiliyu_client ~]# smbclient -L 192.172.168.100
Enter root's password:
# 没有密码就直接回车
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
2、windows进行访问
3、Linux访问
smbclient -L 目标IP 地址或主机名 -U 登录用户名%密码
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
user1 Disk Home Directories
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
4、Linux命令行访问
smbclient //目标IP 地址或主机名/共享目录 -U 用户名%密码
[root@qianshuiliyu_client ~]# smbclient //192.172.168.100/public
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-114.el6]
smb: \> help
# 通过help查询命令
5、挂载
mount -t cifs //目标IP 地址或主机名/共享目录名称 挂载点 -o username=用户名%密码
cifs 就是samba所使用的文件系统
二、配置文件
1、参数说明
修改前进行备份,防止意外
[root@qianshuiliyu ~]# vim /etc/samba/smb.conf
[global]
# 全局设置
workgroup = MYGROUP
# 服务器所在的工作组或域名
server string = Samba Server Version %v
# 描述信息
# username map = /etc/samba/smbusers
# 账号映射设置,虚拟账号
log file = /var/log/samba/log.%m
# 日志文件
security = user
# 安全级别
# passdb backend = tdbsam
smb passwd file = /etc/samba/smbpasswd
# 指定密码文件
[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
# 为特殊共享目录,表示用户主目录,默认共享
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
# 打印机机共享设置
# 自定义共享
[my gongxiang]
comment = 我的共享
# 描述信息
browseable = yes
# 是否允许查看此共享内容
path = /samba_server
# 共享路径,写绝对路径
public = yes
# 是否允许匿名查看
valid users = user1
# 设置访问用户
valid users = group1
# 设置访问组
readonly =yes
#只读
readonly = no
# 读写
writable = yes
# 读写
writable = no
# 只读
write list = 用户名
# list既可以组名可也以用户,用逗号分隔,这是写的权限
write list = @组名
browseable = no
# 隐藏共享文件
writable yes 所有帐号都允许写入
writable no 所有帐号都禁止写入
write list 写入权限帐号列表 列表中的帐号允许写入
hosts allow = 192.172.168.0/24
# 字段定义允许访问的客户端
hosts deny =192.172.168.0/24,192.172.168.1.
# 字段定义禁止访问的客户端,主机后面有个点
# 当hosts deny 和hosts allow 同时出现而且冲突滴时候,hosts allow 生效
允许192.168.0.0 网段的IP 地址可以访问,但是192.168.0.100 及192.168.0.78 的主机禁止访问?就无法生效了我们可以使用EXCEPT 进行设置。
hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78 表示允许192.168.0.0 网段IP 地址访问,但是192.168.0.100 和192.168.0.78 除外
2、安全模式
常见模式有两种:share 安全级别模式和user 安全级别模式
samba 服务器有share、user、server、domain 和AD活动目录 五种安全模式。
share、user、server这三项属于:Standalone Server Options 单台服务器选项
(1)share 安全级别模式 客户端登录samba 服务器,不需要输入用户名和密码就可以浏览samba 服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba 服务器的安全性。
(2)user 安全级别模式 客户端登录samba服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服 务器默认为此级别模式。
(3)server 安全级别模式 客户端需要将用户名和密码,提交到指定的一台samba 服务器上进行验证,如果验证出现错误, 客户端会用user 级别访问。
(4)domain 安全级别模式 如果samba 服务器加入windows 域环境中,验证工作服务,将由windows 域控制器负责,domain 级别的samba 服务器只是成为域的成员客户端,并不具备服务器的特性,samba早期的版本就是使用此级别登录windows 域。
(5)ads 安全级别模式 当samba 服务器使用ads 安全级别加入到windows
域环境中,其就具备了domain 安全级别模式 中所有的功能并可以具备域控制器的功能。
3、用户设置
1、密码文件
samba 服务器发布共享资源后,客户端访问samba 服务器,需要提交用户名和密码进行身份验证,验证合格后才可以登录。samba 服务为了实现客户身份验证功能,将用户名和密码信息存放在/etc/samba/smbpasswd 中,在客户端访问时,将用户提交资料与smbpasswd 存放的信息进行比对,如果相同,并且samba 服务器其他安全设置允许,客户端与samba 服务器连接才能建立成功
3、samba 帐号并不能直接建立滴,需要先建立Linux 同名的系统帐号,先设置配置文件,在添加用户,此时会自动创建密码文件
把系统账号添加到samba服务器中
smbpasswd -a 用户名
[root@qianshuiliyu samba]# useradd user1;echo user1:123456|chpasswd
[root@qianshuiliyu samba]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.
2、密码文件设置
[root@qianshuiliyu ~]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File successfully created.
Added user user1.
4、此时,会自动创建密码文件
4、实战
1、/samba_serve为共享路径,拷贝文件测试
[root@qianshuiliyu ~]# mkdir /samba_server
[root@qianshuiliyu ~]# cp /etc/passwd /samba_server/
2、修改配置文件
也可以设置哪个组进行访问
3、访问
4、此时不能新建,没有权限,但是可以下载
5、修改权限,两个权限,一个配置文件,一个目录本身的权限
修改之后
5、虚拟账号
创建系统用户,添加到samba服务账号中
1、配置文件设置
2、对应账号设置,此时用qianshuiuser进行登录
重启服务进行测试
3、登录
6、隐藏文件
查看
在访问后面加上名字就出来了
7、映射网络文件
8、关闭连接
windows关闭连接
使用命令行net use * /delete /y
三、独立配置文件
1、创建配置文件。必须包含用户名
[root@qianshuiliyu samba]# cp smb.conf smb.conf.user1
[root@qianshuiliyu samba]# ls
lmhosts smb.conf smb.conf.user1 smbpasswd smbuser
2、在smb.conf配置文件中设置
表示samba 服务器读取/etc/samba/smb.conf.%U 文件,其中%U 代表
当前登录用户
3、 smb.conf.user1文件设置
设置共享内容,这个账号与其他账号都能访问,主配置文件设置隐藏,对这个账号是开放的(取消隐藏),两个账号都能访问;就是你干了什么我都能看见