Linux ❀ RHCE自研教学笔记 - Redhat 8.2 FTP服务教研笔记
Posted 国家级干饭型选手°
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux ❀ RHCE自研教学笔记 - Redhat 8.2 FTP服务教研笔记相关的知识,希望对你有一定的参考价值。
文章目录
FTP - File Transfer Protocol 文件传输协议:在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证;
FTP服务传输结构分为客户端Client与服务端Server;
使用TCP 20/21端口进行传输,20为数据端口,21为命令端口
* FTP服务模式
-
主动模式
客户端从任意的非注明端口连接FTP服务器的命令端口,服务器收到该连接后回复ACK;服务器从数据端口连接客户端前面连接的非注明端口+1,进行数据传输,客户端收到连接后回复ACK;连接建立完成; -
被动模式
客户端从任意的非注明端口连接FTP服务器的命令端口,服务器收到该连接后回复ACK;服务器本地开启一个任意的非注明端口发送命令给客户端,让客户端连接服务器的这个非注明端口从而进行数据传输;连接建立完成;
1、安装服务
[root@localhost ~]# dnf install -y vsftpd
Complete!
[root@localhost ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers /不允许通过ftp登录的用户;
/etc/vsftpd/user_list /与配置文件中的两个参数有关;
/etc/vsftpd/vsftpd.conf /配置文件;
[root@localhost ~]# tree /etc/vsftpd/
/etc/vsftpd/
├── ftpusers
├── user_list
├── vsftpd.conf
└── vsftpd_conf_migrate.sh
2、配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO /是否允许匿名用户登陆,匿名用户访问路径/var/ftp;
local_enable=YES /是否允许本地账户(/etc/passwd)登录;
write_enable=YES /是否允许用户上传数据;
local_umask=022 /默认本地用户上传文件权限;
#anon_upload_enable=YES /是否允许匿名用户上传文件;
#anon_mkdir_write_enable=YES /是否允许匿名用户有建立目录权限;
dirmessage_enable=YES /当用户进入某目录时,显示注意内容;
xferlog_enable=YES /用户上传与下载被记录;
connect_from_port_20=YES /请求数据端口号;
#chown_uploads=YES
#chown_username=whoever /定义匿名用户上传文件所属者;
#xferlog_file=/var/log/xferlog
xferlog_std_format=YES
#nopriv_user=ftpsecure /设置一个执行vsftp服务的用户;
#async_abor_enable=YES
#ascii_upload_enable=YES /使用ASCII上传;
#ascii_download_enable=YES /使用ASCII下载;
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
#idle_session_timeout=600 /600s内没操作强制脱机;
#data_connection_timeout=120 /120s无法完成数据传送断开连接;
3、服务配置
(1)配置匿名用户文件上传/下载权限
默认配置即可实现下载;
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES /开启匿名用户登录权限;
anon_upload_enable=YES /开启匿名用户文件上传;
anon_mkdir_write_enable=YES /开启匿名用户创建文件,文件不能改名;
[root@localhost pub]# chmod o+w /var/ftp/pub/ /修改pub目录的权限;
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anon_umask=022 /修改上传文件的文件权限;
[root@localhost pub]# systemctl restart vsftpd
(2)配置匿名用户文件删除权限
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES /开启匿名用户删除文件,文件此时可以改名;
[root@localhost pub]# systemctl restart vsftpd
(3)只允许本地用户下载文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO /开启本地用户登录权限,注释无效,必须修改为NO;
#anon_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
[root@localhost pub]# systemctl restart vsftpd
[root@localhost ~]# cat /etc/passwd | grep haha
haha:x:1001:1001::/home/haha:/bin/bash
#使用haha账号登录,root用户无法登录;
弊端:通过本地用户可以查看到根目录信息
(4)本地用户上传/删除 文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
write_enable=YES /开启本地用户上传与删除权限,默认开启;
[root@localhost pub]# systemctl restart vsftpd
Windows上创建文件夹,并在Linux上查看或删除
[root@localhost ~]# ll /home/haha/
total 0
drwxr-xr-x. 2 haha haha 6 Sep 9 17:43 test
[root@localhost ~]# mkdir /home/haha/zxc111
[root@localhost ~]# touch /home/haha/111.txt
[root@localhost ~]# touch /home/haha/222.txt
Linux上创建文件夹,在Windows上查看并删除
使用浏览器打开
(5)遍历目录
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
allow_writeable_chroot=YES /限制ftp用户只能在其主目录下
chroot_local_user=YES /是否将所有用户限制在主目录;
chroot_list_enable=YES /是否启动限制用户的名单;
chroot_list_file=/etc/vsftpd/chroot_list
[root@localhost pub]# systemctl restart vsftpd
[root@localhost vsftpd]# cat chroot_list
redhat
两者关联如下:
- 当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录
- 当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list 文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录
- 当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录
- 当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录
(6)虚拟用户访问
[root@localhost ~]# useradd -s /sbin/nologin vhaha
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES /开启访客模式;
guest_username=vhaha /设置vhaha为访客用户;
virtual_use_local_privs=YES /本地虚拟用户特权开启;
创建虚拟用户文件
[root@localhost ~]# cat /etc/vsftpd/vhaha
xixi /一行用户名,一行密码,如xixi/redhat、haha/redhat;
redhat
haha
redhat
将虚拟用户文件转换为数据库文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vhaha /etc/vsftpd/vhaha.db
- -T 表示允许应用程序能够将文本文件转译载入进数据库;
- -t hash 表示使用hash码加密;
- -f 指定包含用户名和密码文本文件,此文件格式为:奇数行为用户名、偶数行为密码;
修改数据库文件权限
[root@localhost vsftpd]# chmod 600 vhaha.db
修改PAM认证方式
[root@localhost ~]# vim /etc/pam.d/vsftpd /注意备份原文件;
auth required pam_userdb.so db=/etc/vsftpd/vhaha
account required pam_userdb.so db=/etc/vsftpd/vhaha
#其他全部注释,(.so动态链接数据库)数据库文件名的扩展名“.db”不用输入;
[root@localhost ~]# systemctl restart vsftpd
以上是关于Linux ❀ RHCE自研教学笔记 - Redhat 8.2 FTP服务教研笔记的主要内容,如果未能解决你的问题,请参考以下文章
Linux ❀ RHCE自研教学笔记 - Redhat 8.2 SFTP服务教研笔记
Linux ❀ RHCE自研教学笔记 - Redhat 8.2 SFTP服务教研笔记
Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Nmcli服务教研笔记
Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Nmcli服务教研笔记