CentOS7下的samba应用篇:配置及访问

前言

从基础篇中,我们了解了samba是什么,有什么用,以及简单的搭建,详情请查看===>CentOS7下的samba基础篇:了解与搭建,接下来要做的就是实际的部署和应用了。

首先是安装,yum或者rpm任意选择一种。

[root@linus ~]# yum install -y samba*	#其实直接输入samba即可安装,后面加上*会安装多余的软件包,但也不影响

开启服务,然后查看其运行状态。

[root@linus ~]# systemctl start smb.service 
[root@linus ~]# netstat -anput | grep smb
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      2446/smbd           
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      2446/smbd           
tcp6       0      0 :::139                  :::*                    LISTEN      2446/smbd           
tcp6       0      0 :::445                  :::*                    LISTEN      2446/smbd           

配置文件说明

服务已经正常启动了,接下来就开始进行配置了,samba服务的配置文件位于 /etc/samba/目录下,名称为smb.conf

[root@linus ~]# ls /etc/samba/
lmhosts  smb.conf  smb.conf.example

将注释行和空行过滤掉,查看其文件内容,并对其说明

[global]	#全局生效
	workgroup = SAMBA	#工作组
	security = user		#用户访问samba server的验证方式,总共有4种
						#share:来访主机无需验证口令;比较方便,但安全性很差
						#user:需验证来访主机提供的口令后才可以访问;提升了安全性
						#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
						#domain:使用域控制器进行身份验证
	passdb backend = tdbsam		#定义用户的后台类型,共三种
								#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
								#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
								#ldapsam:基于LDAP服务进行账户验证
	printing = cups	#此项用来指定打印系统的类型
	printcap name = cups	#此项是用来设置开机时自动加载的打印机配置文件名称和路径
	load printers = yes		#设置在samba服务启动时是否共享打印机设备
	cups options = raw		#打印机选项
[homes]	#用于设置用户宿主目录的共享属性
	comment = Home Directories	#描述
	valid users = %S, %D%w%S	#允许访问共享的用户
	browseable = No		#共享是否可被查看
	read only = No		#只读权限	
	inherit acls = Yes
[printers]		#打印机共享参数,打印机名
	comment = All Printers	#共享描述
	path = /var/tmp	 #共享路径
	printable = Yes	 #是否可以打印	
	create mask = 0600	#默认权限
	browseable = No	#共享是否可被查看
[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	write list = root
	create mask = 0664
	directory mask = 0775

写入参数及作用

对于修改samba的主配置文件来说,其实就是新增目录共享,将以下项写入到配置文件中即可,除了共享目录位置和允许访问的配置项外,其他的都能省略。

[name]:共享名称为database
comment = test:描述
**path = /home/test:共享目录为/home/test
public = no:关闭所有人可见
writable = yes:允许写入操作
valid users = user:可以访问的用户列表
write list = user:有写入权限的用户列表

pdbedit

首先我们要知道,samba默认的认证方式是通过用户口令进行认证的,当然,若不考虑安全性,直接把验证方式改为share往下即可。

pdbedit命令是专门用来创建访问共享用户的,你以为系统中的用户就可以吗,辣怎么可能,那样岂不是所有的已有用户都可以访问共享了吗,那和无验证模式有什么区别呢?这种认证模式可以确保仅让特定用户访问资源,假如有三个部门,人事,财务,市场,这样可以创建三个目录,然后创建对应的访问用户,将各自的目录共享给各自部门的人。

使用pdbedit命令创建用户时要注意,首先,只有先建立账户信息数据库之后,才能使用用户口令认证模式。其次,samba服务的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱

pdbedit使用

pdbedit -a username:新建Samba账户。
pdbedit -r username:修改Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表详细信息。

服务搭建与使用

该说的都说了,接下来就是对于samba服务的详细搭建过程了。
环境:
samba服务器IP:192.168.1.124
windows10和CentOS7的IP随意,能互通即可。

注:samba服务器需要关闭selinux和firewalld防火墙,否则会拦截访问请求

主要是在samba服务器上进行搭建,其余仅用于测试。

小需求:caiwu是财务部部长的账户,只允许他能写入文件,其余账户只能读取

1.创建测试用户caiwu

[root@linus ~]# useradd caiwu
[root@linus ~]# pdbedit -a caiwu1 
new password:
retype new password:
Failed to add entry for user caiwu1. #创建系统中不存在的用户,显示条目未能添加
[root@linus ~]# pdbedit -a  caiwu #创建已存在的用户
new password:
retype new password:
Unix username:        caiwu
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-1877094264-3563949321-3775828196-1000
Primary Group SID:    S-1-5-21-1877094264-3563949321-3775828196-513
Full Name:            
Home Directory:       \\linus\caiwu
HomeDir Drive:        
Logon Script:         
Profile Path:         \\linus\caiwu\profile
Domain:               LINUS
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:, 06 22036 23:06:39 CST
Kickoff time:, 06 22036 23:06:39 CST
Password last set:, 26 32020 02:29:08 CST
Password can change:, 26 32020 02:29:08 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

2.创建测试目录/caiwu_test,属主为caiwu

[root@linus ~]# mkdir /caiwu_test
[root@linus ~]# chown caiwu:caiwu /caiwu_test
[root@linus ~]# chmod +777 /caiwu_test/

3.修改samba的主配置文件,写入共享信息

[root@linus ~]# vim /etc/samba/smb.conf
....	#将下列配置写入到文件最后,但要注意排列,否则会报错
[caiwu]
        comment = test	#描述
        path = /caiwu_test	#共享目录位置
        public = No		#不支持来宾访问
        read only = Yes	#只读权限
        valid users = caiwu	#可以访问用户,可以把财务部所有的组成员写入此项中
        write list = caiwu	#有可写入权限的用户

4.重载配置,并创建测试文件。

[root@linus ~]# systemctl reload smb
[root@linus ~]# touch /caiwu_test/test.txt
[root@linus ~]# chmod +777 /caiwu_test/test.txt 	#为什么还要给文件设置权限?此文件为root用户创建,若不给予其权限,即使服务搭建没有问题,也无权限使用此文件

5.windows访问samba服务的共享目录
在这里插入图片描述
然后将你使用pdbedit创建的访问用户caiwu登录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
windows访问成功,并且可以写入数据,接下来看看linux访问

[root@linus ~]# smbclient //192.168.1.124/caiwu_test -U caiwu
Enter SAMBA\caiwu's password: 
Domain=[LINUS] OS=[Windows 6.1] Server=[Samba 4.6.2]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME

诶,好像报错了,没有连接上,网上很多人都遇见了tree connect failed: NT_STATUS_BAD_NETWORK_NAME的报错,就是因为名称错误,是共享名,写在配置文件中的共享名。千万要注意格式。

smbclient //samba主机IP/共享名【而不是共享目录名】 -U 登录用户

我们按照这个格式试一下

[root@linus ~]# smbclient //192.168.1.124/caiwu -U caiwu
Enter SAMBA\caiwu's password: 
Domain=[LINUS] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> ls
  .                                   D        0  Thu Mar 26 03:06:22 2020
  ..                                 DR        0  Thu Mar 26 02:55:50 2020
  test.txt                            A       12  Thu Mar 26 03:21:41 2020

		52403200 blocks of size 1024. 47782212 blocks available
smb: \> 

这样就访问成功了。

清空windows远程连接

可以使用net use * /del /y清空网络连接,默认一台windows中只允许一个用户访问共享,若要且换用户,需要重启系统,刷新网络配置,而使用net use * /del /y可以直接刷新,不需要重启

C:\Users\Administrator>net use * /del /y
你有以下的远程连接:

                    \\192.168.1.124\IPC$
继续运行会取消连接。

命令成功完成。

C:\Users\Administrator>net use * /del /y
列表是空的。

6.再创建一个用户caiwu2,修改配置文件,允许其访问共享资源,但不允许其写入

[root@linus ~]# useradd caiwu2
[root@linus ~]# pdbedit -a caiwu2

使用caiwu2访问samba共享,然后将其共享文件进行修改,在保存的时候,报错就来了。
在这里插入图片描述
这就是我们想看到的效果,权限已经放行了,但还是不能修改文件,因为我们没有把caiwu2加入可以写入的列表。

安全考虑

服务是搭建完成了,没什么问题,访问也需要密码了,还有什么问题呢?我们忽略了一点,现在用户使用的账户名和密码,是linux中实际存在的账户吗?是的,因为samba数据库不允许创建不存在的用户,也就是说,能访问samba1的用户在linux中实际存在,而这恰恰就是安全隐患。

为了安全考虑,通常都会使用samba中的一个叫用户名称映射的功能。

1.创建用户别名文件

[root@linus ~]# vim /etc/samba/samba_user_map	#在哪里创建都可以
caiwu = zhangsan
caiwu2 = lisi

2.修改主配置文件,启动用户名称映射功能

[global]
	workgroup = SAMBA
	security = user
	passdb backend = tdbsam
	username map = /etc/samba/samba_user_map	#只需要加入此项即可,路径是别名文件的路径
	printing = cups
	printcap name = cups
	load printers = yes
	cups options = raw

3.重载服务,然后开始验证

[root@linus ~]# systemctl reload smb

在这里插入图片描述
密码为samba数据库创建的账户密码
在这里插入图片描述
通过设置别名的方式,也可以访问共享,并且具有一定的安全性.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章