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服务教研笔记

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 HTTP服务教研笔记

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 FTP服务教研笔记