VSFTP:
虚拟用户模式
第1步:重置安装vsftpd服务后。创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。
分别创建出zhangsan和lisi两个用户,密码均为redhat:
明文信息既不安全,也不符合让vsftpd服务程序直接加载的格式,因此需要使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限(避免其他人看到数据库文件的内容),然后再把原始的明文信息文件删除。
[root@linuxprobe vsftpd]# db_load -T -t hash -f vuser.list vuser.db
[root@linuxprobe vsftpd]# chmod 600 vuser.db
[root@linuxprobe vsftpd]# rm -f vuser.list
第2步:创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户,可以把这个系统本地用户的家目录设置为/var目录(该目录用来存放经常发生改变的数据)。并且为了安全起见,我们将这个系统本地用户设置为不允许登录FTP服务器,这不会影响虚拟用户登录,而且还能够避免外人通过这个系统本地用户进行登录。
第3步:建立用于支持虚拟用户的PAM文件。新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:
第4步:在vsftpd服务程序的主配置文件中通过pam_service_name参数将PAM认证文件的名称修改为vsftpd.vu
参数 | 作用 |
anonymous_enable=NO | 禁止匿名开放模式 |
local_enable=YES | 允许本地用户模式 |
guest_enable=YES | 开启虚拟用户模式 |
guest_username=virtual | 指定虚拟用户账户 |
pam_service_name=vsftpd.vu | 指定PAM文件 |
allow_writeable_chroot=YES | 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求 |
第5步:为虚拟用户设置不同的权限。虽然账户zhangsan和lisi都是用于vsftpd服务程序认证的虚拟账户,但是我们依然想对这两人进行区别对待。比如,允许张三上传、创建、修改、查看、删除文件,只允许李四查看文件。这可以通过vsftpd服务程序来实现。只需新建一个目录,在里面分别创建两个以zhangsan和lisi命名的文件,其中在名为zhangsan的文件中写入允许的相关权限(使用匿名用户的参数):
然后再次修改vsftpd主配置文件,通过添加user_config_dir参数来定义这两个虚拟用户不同权限的配置文件所存放的路径。
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
16 user_config_dir=/etc/vsftpd/vusers_dir
再重启vsftpd服务,设置SELinux域允许策略,即可测试
TFTP: 基于UDP协议在客户端和服务器之间进行简单文件传输的协议
tftp-server是服务程序,tftp是用于连接测试的客户端工具,xinetd是管理服务;
[root@linuxprobe ~]# dnf install tftp-server tftp xinetd
TFTP服务是使用xinetd服务程序来管理的。xinetd服务可以用来管理多种轻量级的网络服务,简单来说,在安装TFTP软件包后,还需要在xinetd服务程序中将其开启,TFTP的根目录为/var/lib/tftpboot ,即默认存放位置
tftp命令中可用的参数以及作用
参数 | 作用 |
? | 帮助信息 |
put | 上传文件 |
get | 下载文件 |
verbose | 显示详细的处理信息 |
status | 显示当前的状态信息 |
binary | 使用二进制进行传输 |
ascii | 使用ASCII码进行传输 |
timeout | 设置重传的超时时间 |
quit | 退出 |
Samba服务:
安装:dnf install samba samba-client
主配置文件:/etc/samba/smb.conf
注:security参数代表用户登录samba服务时的验证方式,总共有4种
share”代表主机无需验证口令,相当于vsftpd服务的匿名公开访问模式,比较方便,但安全性很差;
“user”代表登录samba服务时需要使用账号密码进行验证,通过后才能获取到文件,这是默认的验证方式,最为常用;
“domain”代表通过域控制器进行身份验证,限制用户的来源域;
“server”代表使用独立主机验证来访用户的提供的口令,相当于是集中管理账号,并不常用。
samba服务端:
第1步:创建用于访问共享资源的账户信息。在RHEL 8系统中,Samba服务程序默认使用的是用户口令认证模式(user),pdbedit命令用于管理samba服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。在第一次需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。pdbedit命令中使用的参数以及作用如下。
用于pdbedit命令的参数以及作用
参数 | 作用 |
-a 用户名 | 建立Samba用户 |
-x 用户名 | 删除Samba用户 |
-L | 列出用户列表 |
-Lv | 列出用户详细信息的列表 |
[root@linuxprobe ~]# id 用户名
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe)
[root@linuxprobe ~]# pdbedit -a -u 用户名
第2步:创建用于共享资源的文件目录.不仅要考虑到文件读写权限的问题,还有正确的文件上下文值应该是samba_share_t,所以只需要修改完毕后执行restorecon命令,就能让应用于目录的新SELinux安全上下文立即生效
第3步:设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。执行getsebool命令,筛选出所有与Samba服务程序相关的SELinux域策略,根据策略的名称(和经验)选择出正确的策略条目进行开启即可:
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
第4步:在Samba服务程序的主配置文件中,根据表12-2所提到的格式写入共享信息。
第5步:重启服务,iptables清空策略,firewalld防火墙允许放行
第6步:如果想进一步看samba服务都共享出去了哪些共享目录,则可以用smbclient命令来查看共享详情,需要先安装samba-client包
[root@linuxprobe ~]# smbclient -U linuxprobe -L 192.168.10.10
samba客户端为windows:
直接:\\服务端ip地址。
samba客户端为linux:
NFS网络文件系统:
安装:dnf install nfs-utils
服务端:
第1步:配置好防火墙,以免默认的防火墙策略禁止正常的NFS共享服务。放行3个服务!!
第2步:在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。
第3步:NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。我们可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
[root@linuxprobe ~]# vim /etc/exports /nfsfile 192.168.10.*(rw,sync,root_squash)
注:匹配IP地址就有三种方法——
第一种是直接写*号,代表任何主机都可以访问;
第二种则是实验中采用的192.168.10.*通配格式,代表来自192.168.10.0/24网段的主机;
第三种则是直接写对方的IP地址,如192.168.10.20,代表仅允许某个主机进行访问。
用于配置NFS服务程序配置文件的参数
参数 | 作用 |
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
第4步:启动和启用NFS服务程序。
nfs客户端:
1.先使用showmount命令查询NFS服务器的远程共享信息
[root@linuxprobe ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10: /nfsfile 192.168.10.*
2.然后在NFS客户端创建一个挂载目录。使用mount命令并结合-t参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。
[root@linuxprobe ~]# mkdir /nfsfile
[root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile
[root@linuxprobe ~]# df -h
3.如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中:
192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
AutoFs自动挂载服务: