文件共享-samba
smb:服务器消息块(server message block),此协议可实现文件共享和打印机共享。windows系统中默认采用smb协议来实现共享。工作端口是445(data share)和139(netbios主机名解析)。
netbios:网络基本输入输出系统,主要实现的功能是通过主机名来实现计算机之间的互访问。目前被直接捆绑在IP协议簇中。
samba服务的作用:
1.主要实现不同平台间的文件共享(linux/unix和windows)
2.实现名称解析
3.隔离windows病毒
4.丰富的权限管理机制
samba服务软件的安装说明:
samba是服务器端软件
samba-client是端客户软件
samba-common是samba的公用程序文件
samba服务的部署流程:实验环境是centos7.6 IP为192.168.11.12,物理机为192.168.11.1
1.关闭selinux和防火墙功能。
setenforce 0
getenforce
systemctl stop firewalld
systemctl status firewallld
2.查软件是否已安装,未安装就进行安装。
rpm -qa | grep samba
yum search samba
yum install -y samba samba-client samba-common
3.启动服务,允许开机自动启动服务,查服务状态。
systemctl restart smb
systemctl status smb 或 lsof -i:445 或 netstat -atunlp | grep :445
systemctl enable smb
netstat选项:是查看网络进程状态(net stat)的命令。
-a 即all,显示所有网络进程
-t 即tcp,显示TCP协议的网络进程
-u 即udp,显示UDP协议的网络进程
-n 即number,以数字方式显示协议的端口号,例 ftp 21、http 80、ssh 22、vnc 5900等
-l 即listen,只显示状态为listen监听的网络进程
-p 即PID进程号,显示网络进程的PID号
网络进程状态(用man netstat可查):listen监听 ESTABLISHED已连接 CLOSE_WAIT等待关闭
4.查服务的配置文件,根据需求对服务的配置文件进行设置。
rpm -ql samba 查所有文件列表
rpm -qc samba-common 查配置文件列表
/etc/openldap/schema/samba.schema samba的openldap认证配置文件
/etc/pam.d/samba samba的pam认证文件
/etc/logrotate.d/samba 日志轮滚策略文件
/etc/samba/lmhosts 本地主机配置文件
/etc/samba/smb.conf samba的主配置文件,用于实现samba的环境设置和自定义共享目录
/etc/sysconfig/samba samba的系统配置文件
samba的默认共享目录(默认功能):
普通用户可访问共享,账号名称是用useradd创建的且用pdbedit -a命令设置密码的用户,访问共享的目录是用户自己的家目录(/home/用户名),默认可读可写和上传。
自定义共享目录:需要在/etc/samba/smb.conf主配置文件中设置共享参数
5.检测配置文件语法,重启服务(最好用reload平滑重启)。
testparm 检测配置文件语法
systemctl reload smb 平滑重启samba服务
5.1.创建访问共享的用户账号,设置登录密码:
useradd lucy
useradd lily
pdbedit lucy -a 或 smbpasswd lucy -a
pdbedit lily -a 或 smbpasswd lily -a
pdbedit -L 显示samba用户名列表
5.2 将/etc目录用samba服务进行只读共享。
vim /etc/samba/smb.conf 添加如下内容
[etck] 共享名称(商标)
comment=share etc directory 描述信息,可随意定义
path=/etc 共享目录路径
public=yes 允许匿名访问共享
browseable=yes 允许在网上邻居中显示(浏览)
writeable=yes 开启可写权限
重启服务:systemctl reload smb
6.做内测(在服务器端用客户端软件进行本地测试127.1),做公测(即用另一台客户机来访问服务器)
做内测(查共享资源): smbclient -L 127.1
做公测(smb登录测试): smbclient //192.168.11.12/etck -U lucy%01 (01是给lucy设置的密码)
smbclient软件的内部命令:
help或? 显示命令帮助
ls 显示共享目录的文件名列表
!命令 执行客户端本地的shell命令。如 !date 、 !ls 、!pwd
lcd 切换本地(local)的工作目录路径。如 lcd /etc
pwd 显示共享目录的工作路径
prompt 关闭或开启交互式操作模式,即是否提示Yes/No
mkdir 在共享目录中新建目录,如 mkdir ak
mput 上传多个本地当前目录下的文件到远程服务器的的当前工作目录下。如mput host*
mget 从共享目录中下载多个文件到本地当前目录下。如 mget hosts
rm 删除文件
rmdir 删除目录
exit 退出smbclient软件
用资源管理器非匿名访问共享: Win+E ----> \\192.168.11.12\lucy ----> 下载或上传文件
windows中清除samba共享访问缓存:Win+R ---> cmd 后执行如下命令---> net use * /del /y 和 gpupdate /force
-----------------------------------------------------------------------------------------------
smb.conf主配置文件的其他功能选项:man smb.conf
smb.conf配置文件内容由global全局环境设置、共享目录设置两部分组成。
smb.conf的默认设置选项:
[global] 全局环境设置
printcap name = cups 跟打印机有关的选项
security = USER 安全等级设置为USER用户级,即需要用户名和密码验证。还可以是什么呢,请查man手册。
username map = /etc/samba/vuser (自己添加的)虚拟用户账号文件
workgroup = SAMBA 计算机所在的局域网的工作组名
idmap config * : backend = tdb samba的用户账号数据库文件
cups options = raw 跟打印机有关的选项
[homes] 用户家目录的共享设置
browseable = No 不显示在网上邻居中
comment = Home Directories 注释说明信息
inherit acls = Yes 允许继承ACL权限
read only = No 禁止只读操作,即可读可写,等同于writable=Yes
valid users = %S %D%w%S 有效用户账号。%S是samba服务中的用户账号,%D当前域或当前工作组中的用户账号,
smb.conf中基于用户访问控制的选项:
browseable=yes 允许在网上邻居中显示共享名称
public=yes 或 guest ok=yes 允许匿名用户访问
writable=yes 或 readonly=no 允许写操作,即可写权限
#valid users=用户1,用户n,@组名 指定允许访问共享的用户账号(即白名单)
#invalid users=s3,@组名 只禁止s3用户访问共享(即黑名单)
技巧:只允许少数人能访问共享时用白名单。只禁止少数人能访问共享时用黑名单。
write list=用户1,用户n,@组名 指定有可写权限的用户账号(即白名单)
smb.conf中基于IP访问控制的选项:man smb.conf 进入后执行/150就可以查到例子
hosts allow = 192.168. EXCEPT 192.168.11.1 允许192.168.*.*的所有主机访问共享,除了192.168.11.1之外
hosts deny = 192.168. EXCEPT 192.168.11.1 不允许192.168.*.*的所有主机访问共享,除了192.168.11.1之外
说明:hosts allow设置可以放在[global]全局环境设置中(限制访问所有共享目录),也可以放在自定义共享目录的设置中(仅限制访问此目录)。