SAMBA文件共享服务
Samba服务程序的配置方法与之前讲解的很多服务的配置方法类似,首先需要先通过Yum软件仓库来安装Samba服务程序
[root@localhost /]# yum -y install samba
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 samba.x86_64.0.4.6.2-8.el7 将被 安装
--> 正在处理依赖关系 samba-libs = 4.6.2-8.el7,它被软件包 samba-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 samba-common-tools = 4.6.2-8.el7,它被软件包 samba-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 samba-common-libs = 4.6.2-8.el7,它被软件包 samba-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 libxattr-tdb-samba4.so(SAMBA_4.6.2)(64bit),它被软件包 samba-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 libpopt-samba3-samba4.so(SAMBA_4.6.2)(64bit),它被软件包 samba-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 libxattr-tdb-samba4.so()(64bit),它被软件包 samba-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 libpopt-samba3-samba4.so()(64bit),它被软件包 samba-4.6.2-8.el7.x86_64 需要
--> 正在检查事务
---> 软件包 samba-common-libs.x86_64.0.4.6.2-8.el7 将被 安装
---> 软件包 samba-common-tools.x86_64.0.4.6.2-8.el7 将被 安装
---> 软件包 samba-libs.x86_64.0.4.6.2-8.el7 将被 安装
--> 正在处理依赖关系 libpytalloc-util.so.2(PYTALLOC_UTIL_2.1.9)(64bit),它被软件包 samba-libs-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 libpytalloc-util.so.2(PYTALLOC_UTIL_2.1.6)(64bit),它被软件包 samba-libs-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 libpytalloc-util.so.2(PYTALLOC_UTIL_2.0.6)(64bit),它被软件包 samba-libs-4.6.2-8.el7.x86_64 需要
--> 正在处理依赖关系 libpytalloc-util.so.2()(64bit),它被软件包 samba-libs-4.6.2-8.el7.x86_64 需要
--> 正在检查事务
---> 软件包 pytalloc.x86_64.0.2.1.9-1.el7 将被 安装
--> 解决依赖关系完成
已安装:
samba.x86_64 0:4.6.2-8.el7
作为依赖被安装:
pytalloc.x86_64 0:2.1.9-1.el7
samba-common-libs.x86_64 0:4.6.2-8.el7
samba-common-tools.x86_64 0:4.6.2-8.el7
samba-libs.x86_64 0:4.6.2-8.el7
完毕!
Samba服务程序中的参数以及作用
[global] #全局参数。
workgroup = MYGROUP #工作组名称
server string = Samba Server Version %v #服务器介绍信息,参数%v为显示SMB版本号
log file = /var/log/samba/log.%m #定义日志文件的存放位置与名称,参数%m为来访的主机名
max log size = 50 #定义日志文件的最大容量为50KB
security = user #安全验证的方式,总共有4种
#share:来访主机无需验证口令;比较方便,但安全性很差
#user:需验证来访主机提供的口令后才可以访问;提升了安全性
#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
#domain:使用域控制器进行身份验证
passdb backend = tdbsam #定义用户后台的类型,共有3种
#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
#ldapsam:基于LDAP服务进行账户验证
load printers = yes #设置在Samba服务启动时是否共享打印机设备
cups options = raw #打印机的选项
[homes] #共享参数
comment = Home Directories #描述信息
browseable = no #指定共享信息是否在“网上邻居”中可见
writable = yes #定义是否可以执行写入操作,与“read only”相反
[printers] #打印机共享参数
comment = All Printers
path = /var/spool/samba #共享文件的实际路径(重要)。
browseable = no
guest ok = no #是否所有人可见,等同于"public"参数。
writable = no
printable = yes
用于设置Samba服务程序的参数以及作用
参数 作用
[database] 共享名称为database
comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
path = /home/database 共享目录为/home/database
public = no 关闭“所有人可见”
writable = yes 允许写入操作
配置共享资源
第1步:创建用于访问共享资源的账户信息。在RHEL 7系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
pdbedit命令用于管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了
用于pdbedit命令的参数以及作用
参数 作用
-a 用户名 建立Samba用户
-x 用户名 删除Samba用户
-L 列出用户列表
-Lv 列出用户详细信息的列表
[root@localhost /]# id chenjin
uid=1000(chenjin) gid=1000(chenjin) 组=1000(chenjin),10(wheel)
[root@localhost /]# pdbedit -a -u chenjin
new password:
retype new password:
[root@localhost /]# id chenjin
uid=1000(chenjin) gid=1000(chenjin) 组=1000(chenjin),10(wheel)
[root@localhost /]# pdbedit -a -u chenjin
new password:
retype new password:
Unix username: chenjin
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1529196391-3003712838-3634782392-1000
Primary Group SID: S-1-5-21-1529196391-3003712838-3634782392-513
Full Name: chenjin
Home Directory: \\localhost\chenjin
HomeDir Drive:
Logon Script:
Profile Path: \\localhost\chenjin\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 三, 06 2月 2036 23:06:39 CST
Kickoff time: 三, 06 2月 2036 23:06:39 CST
Password last set: 三, 28 3月 2018 16:33:33 CST
Password can change: 三, 28 3月 2018 16:33:33 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
第2步:创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,而且由于/home目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的SELinux安全上下文所带来的限制。在前面对Samba服务程序配置文件中的注释信息进行过滤时,这些过滤的信息中就有关于SELinux安全上下文策略的说明,我们只需按照过滤信息中有关SELinux安全上下文策略中的说明中给的值进行修改即可。修改完毕后执行restorecon命令,让应用于目录的新SELinux安全上下文立即生效。
[root@localhost network-scripts]# mkdir /home/database //创建/home/database文件
[root@localhost network-scripts]# chown -Rf chenjin:chenjin /home/database/ //给权限
[root@localhost home]# ll
drwxr-xr-x 3 chenjin chenjin 15 3月 29 14:08 database
[root@localhost network-scripts]# vim /etc/samba/smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[database]
comment = Do not arbitrarily modify the database file
path = /home/database
public = no
writable = yes
[root@localhost network-scripts]# systemctl restart smb \\重启samba服务器
[root@localhost network-scripts]# systemctl enable smb \\开机启动samba服务器
输入\\192.168.1.64
Linux挂载共享
上面的实验操作可能会让各位读者误以为Samba服务程序只是为了解决Linux系统和Windows系统的资源共享问题而设计的。其实,Samba服务程序还可以实现Linux系统之间的文件共享。设置Samba服务程序所在主机(即Samba共享服务器)和Linux客户端使用的IP地址,然后在客户端安装支持文件共享服务的软件包(cifs-utils)。
客户机:
[root@localhost core]# yum install -y cifs-utils
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 cifs-utils.x86_64.0.6.2-10.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
================================================================================
Package 架构 版本 源 大小
================================================================================
正在安装:
cifs-utils x86_64 6.2-10.el7 CentOS7 85 k
事务概要
================================================================================
安装 1 软件包
总下载量:85 k
安装大小:175 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : cifs-utils-6.2-10.el7.x86_64 1/1
验证中 : cifs-utils-6.2-10.el7.x86_64 1/1
已安装:
cifs-utils.x86_64 0:6.2-10.el7
完毕!
在Linux客户端,按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root管理员才能够读写:
[root@localhost core]# vim auth.smb
username=chenjin
password=123456789
domain=MYGROUP
[root@localhost ~]# chmod -Rf 600 auth.smb
[root@localhost ~]# mkdir /database
[root@localhost ~]# vim /etc/fstab
在最后一行添加
#
# /etc/fstab
# Created by anaconda on Wed Dec 6 18:30:36 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b3ab97c9-db0b-4552-9a38-11fd2fa95a9e / xfs defaults 0 0
UUID=33a415da-a232-4621-b531-21b2a50a85eb /boot xfs defaults 0 0
UUID=2bcef926-119a-42b1-acdf-06585b398ba0 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
//192.168.1.64/database /database cifs credentials=/root/auth.smb 0 0
//192.168.1.64/database /database cifs credentials=/root/auth.smb 0 0
[root@localhost ~]# mount -a
Linux客户端成功地挂载了Samba服务的共享资源。进入到挂载目录/database后就可以看到Windows系统访问Samba服务程序时留下来的文件了(即文件1.txt)。当然,我们也可以对该文件进行读写操作并保存。