SAMBA文件共享服务
Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的选择
1.安装ansible
[root@myserver ~]# yum install -y samba
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 2:01:32 ago on Sun 31 Jan 2021 11:01:23 PM CST.
Dependencies resolved.
=================================================================================================
Package Arch Version Repository Size
=================================================================================================
Installing:
samba x86_64 4.9.1-8.el8 BaseOS 708 k
Installing dependencies:
samba-common-tools x86_64 4.9.1-8.el8 BaseOS 461 k
samba-libs x86_64 4.9.1-8.el8 BaseOS 177 k
Transaction Summary
=================================================================================================
Install 3 Packages
Total size: 1.3 M
Installed size: 3.5 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : samba-libs-4.9.1-8.el8.x86_64 1/3
Running scriptlet: samba-libs-4.9.1-8.el8.x86_64 1/3
Installing : samba-common-tools-4.9.1-8.el8.x86_64 2/3
Installing : samba-4.9.1-8.el8.x86_64 3/3
Running scriptlet: samba-4.9.1-8.el8.x86_64 3/3
Verifying : samba-4.9.1-8.el8.x86_64 1/3
Verifying : samba-common-tools-4.9.1-8.el8.x86_64 2/3
Verifying : samba-libs-4.9.1-8.el8.x86_64 3/3
Installed products updated.
Installed:
samba-4.9.1-8.el8.x86_64 samba-common-tools-4.9.1-8.el8.x86_64 samba-libs-4.9.1-8.el8.x86_64
Complete!
[root@myserver ~]#
2.安装完毕后打开Samba服务程序的主配置文件
[root@myserver ~]# vim /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
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 = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
配置参数如下:
[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服务程序的主配置文件与前面学习过的Apache服务很相似,包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效
[root@myserver ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
[root@myserver ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
[root@myserver ~]# cat /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
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 = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
1. 编辑好配置文件后,创建用户账户信息
pdbedit命令中使用的参数以及作用
-a 用户名 | 建立Samba用户 |
-x 用户名 | 删除Samba用户 |
-L | 列出用户列表 |
-Lv | 列出用户详细信息的列表 |
2. 创建用于共享资源的文件目录
3.设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。执行getsebool命令,筛选出所有与Samba服务程序相关的SELinux域策略,根据策略的名称(和经验)选择出正确的策略条目进行开启即可
4.在Samba服务程序的主配置文件中,在原始的配置文件中加入共享目录文件信息
[root@myserver ~]# vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[database]
comment = Do not arbitrarily modify the database file #警告用户不要随意修改数据库
path = /home/database #共享目录为/home/database
public = no #关闭所有人可见
writable = yes #允许写入操作
5.Samba服务程序的配置工作基本完毕。接下来重启smb服务
6.windows客户端访问
windows访问报错找不到共享文件时记得加防火墙策略
在windows编写的文件,同样在Linux看到的效果如下
Linux挂载共享
1. 在linux的客户端安装cifs-utils
[root@slave1 ~]# yum install cifs-utils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:00:15 ago on Sun 31 Jan 2021 09:45:40 PM CST.
Dependencies resolved.
=================================================================================================
Package Arch Version Repository Size
=================================================================================================
Installing:
cifs-utils x86_64 6.8-2.el8 BaseOS 93 k
Transaction Summary
=================================================================================================
Install 1 Package
Total size: 93 k
Installed size: 189 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : cifs-utils-6.8-2.el8.x86_64 1/1
Running scriptlet: cifs-utils-6.8-2.el8.x86_64 1/1
Verifying : cifs-utils-6.8-2.el8.x86_64 1/1
Installed products updated.
Installed:
cifs-utils-6.8-2.el8.x86_64
Complete!
[root@slave1 ~]#
2.在Linux客户端,按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root管理员才能够读写
[root@slave1 ~]# vim auth.smb
username=yhd
password=000000
domain=SAMBA
[root@slave1 ~]# chmod -Rf 600 auth.smb
3.在Linux客户端上创建一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中,以确保共享挂载信息在服务器重启后依然生效
[root@slave1 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Nov 1 11:12:31 2020
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=a9745542-52aa-46e9-8559-c7eadd2e4b20 /boot xfs defaults 0 0
/dev/mapper/rhel-home /home xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
//192.168.1.88/database /database cifs credentials=/root/auth.smb 0 0
[root@slave1 ~]#
Linux客户端成功地挂载了Samba服务的共享资源。进入到挂载目录/database后就可以看到Windows系统访问Samba服务程序时留下来的文件了
NFS网络文件系统
在RHEL8中的NFS默认是未开启的但是已经安装
1. 为了检验NFS服务配置的效果,我们需要使用两台Linux主机(一台充当NFS服务器,一台充当NFS客户端)
2. 在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。
[root@myserver ~]# mkdir /nfsfile
[root@myserver ~]# chmod -Rf 777 /nfsfile
[root@myserver ~]# echo "this is a test" > /nfsfile/readme
[root@myserver ~]#
3. NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。我们可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
用于配置NFS服务程序配置文件的参数
参数 | 作用 |
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
4. 编辑主配置文件 NFS客户端地址与权限之间没有空格
[root@myserver ~]# vim /etc/exports
/nfsfile 192.168.1.* (rw,sync,root_squash)
5.启动和启用NFS服务程序。由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序,并将这两个服务一并加入开机启动项中
[root@myserver ~]# systemctl restart rpcbind
[root@myserver ~]# systemctl enable rpcbind
[root@myserver ~]# systemctl start nfs-server
[root@myserver ~]# systemctl enable nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
[root@myserver ~]# firewall-cmd --permanent --add-service=n
nfs nfs3 nmea-0183 nrpe ntp nut
[root@myserver ~]# firewall-cmd --permanent --add-service=nfs
success
[root@myserver ~]# firewall-cmd --permanent --add-service=rpc-bind
success
[root@myserver ~]# firewall-cmd --permanent --add-service=mountd
success
[root@myserver ~]# firewall-cmd --reload
showmount命令中可用的参数以及作用
参数 | 作用 |
-e | 显示NFS服务器的共享列表 |
-a | 显示本机挂载的文件资源的情况NFS资源的情况 |
-v | 显示版本号 |
[root@myserver ~]# showmount -e 192.168.1.88
Export list for 192.168.1.88:
/nfsfile (everyone)
然后在NFS客户端创建一个挂载目录。使用mount命令并结合-t参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。
[root@slave1 nfsfile]# mount -t nfs 192.168.1.88:/nfsfile /nfsfile
[root@slave1 nfsfile]# cd ..
[root@slave1 /]# cd nfsfile/
[root@slave1 nfsfile]# ls
readme
[root@slave1 nfsfile]# cat readme
this is a test
AutoFs自动挂载服务
autofs自动挂载服务可以帮我们解决这一问题。与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。换句话说,我们将挂载信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而autofs服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。
1.安装autofs
[root@myserver ~]# yum install -y autofs
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:46:11 ago on Mon 01 Feb 2021 02:03:28 AM CST.
Dependencies resolved.
=================================================================================================
Package Arch Version Repository Size
=================================================================================================
Installing:
autofs x86_64 1:5.1.4-29.el8 BaseOS 755 k
Transaction Summary
=================================================================================================
Install 1 Package
Total size: 755 k
Installed size: 3.5 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : autofs-1:5.1.4-29.el8.x86_64 1/1
Running scriptlet: autofs-1:5.1.4-29.el8.x86_64 1/1
Verifying : autofs-1:5.1.4-29.el8.x86_64 1/1
Installed products updated.
Installed:
autofs-1:5.1.4-29.el8.x86_64
Complete!
[root@myserver ~]#
2.查看编辑主配置文件
3.编辑在子配置文件中,应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。例如,要把光盘设备挂载到/media/iso目录中,可将挂载目录写为iso,而-fstype为文件系统格式参数,iso9660为光盘设备格式,ro、nosuid及nodev为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称。配置完成后再顺手将autofs服务程序启动并加入到系统启动项中:
[root@myserver ~]# vim /etc/iso.misc
iso -fstype=iso9660,ro :/dev/cdrom
[root@myserver ~]# systemctl start autofs
[root@myserver ~]# systemctl enable autofs
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
4进入media目录查看即可
[root@myserver misc]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 969M 0 969M 0% /dev
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 984M 9.6M 974M 1% /run
tmpfs 984M 0 984M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 39G 4.8G 34G 13% /
/dev/mapper/rhel-home 19G 260M 19G 2% /home
/dev/sda1 1014M 153M 862M 15% /boot
tmpfs 197M 16K 197M 1% /run/user/42
tmpfs 197M 4.6M 193M 3% /run/user/0
[root@myserver misc]# cd /media/
[root@myserver /]# cd /media
[root@myserver media]# ls
[root@myserver media]# ll
total 0
[root@myserver media]# cd iso
[root@myserver iso]# ls
AppStream EFI extra_files.json images media.repo RPM-GPG-KEY-redhat-release
BaseOS EULA GPL isolinux RPM-GPG-KEY-redhat-beta TRANS.TBL
[root@myserver iso]# pwd
/media/iso
[root@myserver iso]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 969M 0 969M 0% /dev
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 984M 9.6M 974M 1% /run
tmpfs 984M 0 984M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 39G 4.8G 34G 13% /
/dev/mapper/rhel-home 19G 260M 19G 2% /home
/dev/sda1 1014M 153M 862M 15% /boot
tmpfs 197M 16K 197M 1% /run/user/42
tmpfs 197M 4.6M 193M 3% /run/user/0
/dev/sr0 6.7G 6.7G 0 100% /media/iso